Loading core/java/android/database/sqlite/package.html +11 −4 Original line number Diff line number Diff line Loading @@ -15,11 +15,14 @@ instead use the generic {@link android.database} classes. <a href="{@docRoot}studio/command-line/sqlite3.html">sqlite3</a> command-line database tool. On your development machine, run the tool from the <code>platform-tools/</code> folder of your SDK. On the emulator, run the tool with adb shell, for example, <code>adb -e shell sqlite3</code>. with adb shell, for example, <code>adb shell sqlite3</code>. <p>The version of SQLite depends on the version of Android. See the following table: <table style="width:auto;"> <tr><th>Android API</th><th>SQLite Version</th></tr> <tr><td>API 34</td><td>3.39</td></tr> <tr><td>API 33</td><td>3.32</td></tr> <tr><td>API 32</td><td>3.32</td></tr> <tr><td>API 31</td><td>3.32</td></tr> <tr><td>API 30</td><td>3.28</td></tr> <tr><td>API 28</td><td>3.22</td></tr> Loading @@ -38,15 +41,19 @@ with adb shell, for example, <code>adb -e shell sqlite3</code>. <ul> <li>If available, use the sqlite3 tool, for example: <code>adb -e shell sqlite3 --version</code>.</li> <code>adb shell sqlite3 --version</code>.</li> <li>Create and query an in-memory database as shown in the following code sample: <pre> String query = "select sqlite_version() AS sqlite_version"; SQLiteDatabase db = SQLiteDatabase.openOrCreateDatabase(":memory:", null); Cursor cursor = db.rawQuery(query, null); String sqliteVersion = ""; try { if (cursor.moveToNext()) { sqliteVersion = cursor.getString(0); } } finally { cursor.close(); }</pre> </li> </ul> Loading libs/WindowManager/Shell/src/com/android/wm/shell/compatui/UserAspectRatioSettingsLayout.java +50 −7 Original line number Diff line number Diff line Loading @@ -18,12 +18,16 @@ package com.android.wm.shell.compatui; import android.animation.Animator; import android.animation.AnimatorListenerAdapter; import android.animation.AnimatorSet; import android.animation.ObjectAnimator; import android.annotation.IdRes; import android.annotation.NonNull; import android.content.Context; import android.util.AttributeSet; import android.view.View; import android.view.animation.Interpolator; import android.view.animation.LinearInterpolator; import android.view.animation.PathInterpolator; import android.widget.ImageButton; import android.widget.LinearLayout; import android.widget.TextView; Loading @@ -36,14 +40,29 @@ import com.android.wm.shell.R; */ public class UserAspectRatioSettingsLayout extends LinearLayout { private static final Interpolator LINEAR_INTERPOLATOR = new LinearInterpolator(); private static final Interpolator PATH_INTERPOLATOR = new PathInterpolator(0.2f, 0f, 0f, 1f); private static final float ALPHA_FULL_TRANSPARENT = 0f; private static final float ALPHA_FULL_OPAQUE = 1f; private static final long VISIBILITY_ANIMATION_DURATION_MS = 50; private static final float SCALE_START = 0.8f; private static final float SCALE_END = 1f; private static final long FADE_ANIMATION_DURATION_MS = 167; private static final long SCALE_ANIMATION_DURATION_MS = 300; private static final String ALPHA_PROPERTY_NAME = "alpha"; private static final String SCALE_X_PROPERTY_NAME = "scaleX"; private static final String SCALE_Y_PROPERTY_NAME = "scaleY"; private UserAspectRatioSettingsWindowManager mWindowManager; public UserAspectRatioSettingsLayout(Context context) { Loading Loading @@ -88,7 +107,7 @@ public class UserAspectRatioSettingsLayout extends LinearLayout { if (show) { showItem(view); } else { view.setVisibility(visibility); hideItem(view); } } Loading Loading @@ -121,16 +140,40 @@ public class UserAspectRatioSettingsLayout extends LinearLayout { } private void showItem(@NonNull View view) { view.setVisibility(View.VISIBLE); final AnimatorSet animatorSet = new AnimatorSet(); final ObjectAnimator fadeIn = ObjectAnimator.ofFloat(view, ALPHA_PROPERTY_NAME, ALPHA_FULL_TRANSPARENT, ALPHA_FULL_OPAQUE); fadeIn.setDuration(VISIBILITY_ANIMATION_DURATION_MS); fadeIn.addListener(new AnimatorListenerAdapter() { fadeIn.setDuration(FADE_ANIMATION_DURATION_MS); fadeIn.setInterpolator(LINEAR_INTERPOLATOR); final ObjectAnimator scaleY = ObjectAnimator.ofFloat(view, SCALE_Y_PROPERTY_NAME, SCALE_START, SCALE_END); final ObjectAnimator scaleX = ObjectAnimator.ofFloat(view, SCALE_X_PROPERTY_NAME, SCALE_START, SCALE_END); scaleX.setDuration(SCALE_ANIMATION_DURATION_MS); scaleX.setInterpolator(PATH_INTERPOLATOR); scaleY.setDuration(SCALE_ANIMATION_DURATION_MS); scaleY.setInterpolator(PATH_INTERPOLATOR); animatorSet.addListener(new AnimatorListenerAdapter() { @Override public void onAnimationEnd(Animator animation) { public void onAnimationStart(Animator animation) { view.setVisibility(View.VISIBLE); } }); fadeIn.start(); animatorSet.playTogether(fadeIn, scaleY, scaleX); animatorSet.start(); } private void hideItem(@NonNull View view) { final ObjectAnimator fadeOut = ObjectAnimator.ofFloat(view, ALPHA_PROPERTY_NAME, ALPHA_FULL_OPAQUE, ALPHA_FULL_TRANSPARENT); fadeOut.setDuration(FADE_ANIMATION_DURATION_MS); fadeOut.setInterpolator(LINEAR_INTERPOLATOR); fadeOut.addListener(new AnimatorListenerAdapter() { @Override public void onAnimationEnd(Animator animation) { view.setVisibility(View.GONE); } }); fadeOut.start(); } } packages/SettingsLib/Tile/src/com/android/settingslib/drawer/Tile.java +8 −0 Original line number Diff line number Diff line Loading @@ -22,6 +22,7 @@ import static com.android.settingslib.drawer.TileUtils.META_DATA_NEW_TASK; import static com.android.settingslib.drawer.TileUtils.META_DATA_PREFERENCE_GROUP_KEY; import static com.android.settingslib.drawer.TileUtils.META_DATA_PREFERENCE_ICON; import static com.android.settingslib.drawer.TileUtils.META_DATA_PREFERENCE_KEYHINT; import static com.android.settingslib.drawer.TileUtils.META_DATA_PREFERENCE_SEARCHABLE; import static com.android.settingslib.drawer.TileUtils.META_DATA_PREFERENCE_SUMMARY; import static com.android.settingslib.drawer.TileUtils.META_DATA_PREFERENCE_SUMMARY_URI; import static com.android.settingslib.drawer.TileUtils.META_DATA_PREFERENCE_SWITCH_URI; Loading Loading @@ -423,6 +424,13 @@ public abstract class Tile implements Parcelable { return (mMetaData == null) ? null : mMetaData.getString(META_DATA_PREFERENCE_GROUP_KEY); } /** * Returns if this is searchable. */ public boolean isSearchable() { return mMetaData == null || mMetaData.getBoolean(META_DATA_PREFERENCE_SEARCHABLE, true); } /** * The type of the tile. */ Loading packages/SettingsLib/Tile/src/com/android/settingslib/drawer/TileUtils.java +5 −0 Original line number Diff line number Diff line Loading @@ -249,6 +249,11 @@ public class TileUtils { */ public static final String META_DATA_NEW_TASK = "com.android.settings.new_task"; /** * If the entry should be shown in settings search results. Defaults to true. */ public static final String META_DATA_PREFERENCE_SEARCHABLE = "com.android.settings.searchable"; /** * Build a list of DashboardCategory. */ Loading packages/SettingsLib/tests/robotests/src/com/android/settingslib/drawer/ActivityTileTest.java +23 −0 Original line number Diff line number Diff line Loading @@ -20,6 +20,7 @@ import static com.android.settingslib.drawer.TileUtils.META_DATA_KEY_PROFILE; import static com.android.settingslib.drawer.TileUtils.META_DATA_PREFERENCE_GROUP_KEY; import static com.android.settingslib.drawer.TileUtils.META_DATA_PREFERENCE_ICON; import static com.android.settingslib.drawer.TileUtils.META_DATA_PREFERENCE_ICON_URI; import static com.android.settingslib.drawer.TileUtils.META_DATA_PREFERENCE_SEARCHABLE; import static com.android.settingslib.drawer.TileUtils.META_DATA_PREFERENCE_SWITCH_URI; import static com.android.settingslib.drawer.TileUtils.PROFILE_ALL; import static com.android.settingslib.drawer.TileUtils.PROFILE_PRIMARY; Loading Loading @@ -256,4 +257,26 @@ public class ActivityTileTest { assertThat(tile.getType()).isEqualTo(Tile.Type.SWITCH_WITH_ACTION); } @Test public void isSearchable_noMetadata_isTrue() { final Tile tile = new ActivityTile(null, "category"); assertThat(tile.isSearchable()).isTrue(); } @Test public void isSearchable_notSet_isTrue() { final Tile tile = new ActivityTile(mActivityInfo, "category"); assertThat(tile.isSearchable()).isTrue(); } @Test public void isSearchable_isSet_false() { mActivityInfo.metaData.putBoolean(META_DATA_PREFERENCE_SEARCHABLE, false); final Tile tile = new ActivityTile(mActivityInfo, "category"); assertThat(tile.isSearchable()).isFalse(); } } Loading
core/java/android/database/sqlite/package.html +11 −4 Original line number Diff line number Diff line Loading @@ -15,11 +15,14 @@ instead use the generic {@link android.database} classes. <a href="{@docRoot}studio/command-line/sqlite3.html">sqlite3</a> command-line database tool. On your development machine, run the tool from the <code>platform-tools/</code> folder of your SDK. On the emulator, run the tool with adb shell, for example, <code>adb -e shell sqlite3</code>. with adb shell, for example, <code>adb shell sqlite3</code>. <p>The version of SQLite depends on the version of Android. See the following table: <table style="width:auto;"> <tr><th>Android API</th><th>SQLite Version</th></tr> <tr><td>API 34</td><td>3.39</td></tr> <tr><td>API 33</td><td>3.32</td></tr> <tr><td>API 32</td><td>3.32</td></tr> <tr><td>API 31</td><td>3.32</td></tr> <tr><td>API 30</td><td>3.28</td></tr> <tr><td>API 28</td><td>3.22</td></tr> Loading @@ -38,15 +41,19 @@ with adb shell, for example, <code>adb -e shell sqlite3</code>. <ul> <li>If available, use the sqlite3 tool, for example: <code>adb -e shell sqlite3 --version</code>.</li> <code>adb shell sqlite3 --version</code>.</li> <li>Create and query an in-memory database as shown in the following code sample: <pre> String query = "select sqlite_version() AS sqlite_version"; SQLiteDatabase db = SQLiteDatabase.openOrCreateDatabase(":memory:", null); Cursor cursor = db.rawQuery(query, null); String sqliteVersion = ""; try { if (cursor.moveToNext()) { sqliteVersion = cursor.getString(0); } } finally { cursor.close(); }</pre> </li> </ul> Loading
libs/WindowManager/Shell/src/com/android/wm/shell/compatui/UserAspectRatioSettingsLayout.java +50 −7 Original line number Diff line number Diff line Loading @@ -18,12 +18,16 @@ package com.android.wm.shell.compatui; import android.animation.Animator; import android.animation.AnimatorListenerAdapter; import android.animation.AnimatorSet; import android.animation.ObjectAnimator; import android.annotation.IdRes; import android.annotation.NonNull; import android.content.Context; import android.util.AttributeSet; import android.view.View; import android.view.animation.Interpolator; import android.view.animation.LinearInterpolator; import android.view.animation.PathInterpolator; import android.widget.ImageButton; import android.widget.LinearLayout; import android.widget.TextView; Loading @@ -36,14 +40,29 @@ import com.android.wm.shell.R; */ public class UserAspectRatioSettingsLayout extends LinearLayout { private static final Interpolator LINEAR_INTERPOLATOR = new LinearInterpolator(); private static final Interpolator PATH_INTERPOLATOR = new PathInterpolator(0.2f, 0f, 0f, 1f); private static final float ALPHA_FULL_TRANSPARENT = 0f; private static final float ALPHA_FULL_OPAQUE = 1f; private static final long VISIBILITY_ANIMATION_DURATION_MS = 50; private static final float SCALE_START = 0.8f; private static final float SCALE_END = 1f; private static final long FADE_ANIMATION_DURATION_MS = 167; private static final long SCALE_ANIMATION_DURATION_MS = 300; private static final String ALPHA_PROPERTY_NAME = "alpha"; private static final String SCALE_X_PROPERTY_NAME = "scaleX"; private static final String SCALE_Y_PROPERTY_NAME = "scaleY"; private UserAspectRatioSettingsWindowManager mWindowManager; public UserAspectRatioSettingsLayout(Context context) { Loading Loading @@ -88,7 +107,7 @@ public class UserAspectRatioSettingsLayout extends LinearLayout { if (show) { showItem(view); } else { view.setVisibility(visibility); hideItem(view); } } Loading Loading @@ -121,16 +140,40 @@ public class UserAspectRatioSettingsLayout extends LinearLayout { } private void showItem(@NonNull View view) { view.setVisibility(View.VISIBLE); final AnimatorSet animatorSet = new AnimatorSet(); final ObjectAnimator fadeIn = ObjectAnimator.ofFloat(view, ALPHA_PROPERTY_NAME, ALPHA_FULL_TRANSPARENT, ALPHA_FULL_OPAQUE); fadeIn.setDuration(VISIBILITY_ANIMATION_DURATION_MS); fadeIn.addListener(new AnimatorListenerAdapter() { fadeIn.setDuration(FADE_ANIMATION_DURATION_MS); fadeIn.setInterpolator(LINEAR_INTERPOLATOR); final ObjectAnimator scaleY = ObjectAnimator.ofFloat(view, SCALE_Y_PROPERTY_NAME, SCALE_START, SCALE_END); final ObjectAnimator scaleX = ObjectAnimator.ofFloat(view, SCALE_X_PROPERTY_NAME, SCALE_START, SCALE_END); scaleX.setDuration(SCALE_ANIMATION_DURATION_MS); scaleX.setInterpolator(PATH_INTERPOLATOR); scaleY.setDuration(SCALE_ANIMATION_DURATION_MS); scaleY.setInterpolator(PATH_INTERPOLATOR); animatorSet.addListener(new AnimatorListenerAdapter() { @Override public void onAnimationEnd(Animator animation) { public void onAnimationStart(Animator animation) { view.setVisibility(View.VISIBLE); } }); fadeIn.start(); animatorSet.playTogether(fadeIn, scaleY, scaleX); animatorSet.start(); } private void hideItem(@NonNull View view) { final ObjectAnimator fadeOut = ObjectAnimator.ofFloat(view, ALPHA_PROPERTY_NAME, ALPHA_FULL_OPAQUE, ALPHA_FULL_TRANSPARENT); fadeOut.setDuration(FADE_ANIMATION_DURATION_MS); fadeOut.setInterpolator(LINEAR_INTERPOLATOR); fadeOut.addListener(new AnimatorListenerAdapter() { @Override public void onAnimationEnd(Animator animation) { view.setVisibility(View.GONE); } }); fadeOut.start(); } }
packages/SettingsLib/Tile/src/com/android/settingslib/drawer/Tile.java +8 −0 Original line number Diff line number Diff line Loading @@ -22,6 +22,7 @@ import static com.android.settingslib.drawer.TileUtils.META_DATA_NEW_TASK; import static com.android.settingslib.drawer.TileUtils.META_DATA_PREFERENCE_GROUP_KEY; import static com.android.settingslib.drawer.TileUtils.META_DATA_PREFERENCE_ICON; import static com.android.settingslib.drawer.TileUtils.META_DATA_PREFERENCE_KEYHINT; import static com.android.settingslib.drawer.TileUtils.META_DATA_PREFERENCE_SEARCHABLE; import static com.android.settingslib.drawer.TileUtils.META_DATA_PREFERENCE_SUMMARY; import static com.android.settingslib.drawer.TileUtils.META_DATA_PREFERENCE_SUMMARY_URI; import static com.android.settingslib.drawer.TileUtils.META_DATA_PREFERENCE_SWITCH_URI; Loading Loading @@ -423,6 +424,13 @@ public abstract class Tile implements Parcelable { return (mMetaData == null) ? null : mMetaData.getString(META_DATA_PREFERENCE_GROUP_KEY); } /** * Returns if this is searchable. */ public boolean isSearchable() { return mMetaData == null || mMetaData.getBoolean(META_DATA_PREFERENCE_SEARCHABLE, true); } /** * The type of the tile. */ Loading
packages/SettingsLib/Tile/src/com/android/settingslib/drawer/TileUtils.java +5 −0 Original line number Diff line number Diff line Loading @@ -249,6 +249,11 @@ public class TileUtils { */ public static final String META_DATA_NEW_TASK = "com.android.settings.new_task"; /** * If the entry should be shown in settings search results. Defaults to true. */ public static final String META_DATA_PREFERENCE_SEARCHABLE = "com.android.settings.searchable"; /** * Build a list of DashboardCategory. */ Loading
packages/SettingsLib/tests/robotests/src/com/android/settingslib/drawer/ActivityTileTest.java +23 −0 Original line number Diff line number Diff line Loading @@ -20,6 +20,7 @@ import static com.android.settingslib.drawer.TileUtils.META_DATA_KEY_PROFILE; import static com.android.settingslib.drawer.TileUtils.META_DATA_PREFERENCE_GROUP_KEY; import static com.android.settingslib.drawer.TileUtils.META_DATA_PREFERENCE_ICON; import static com.android.settingslib.drawer.TileUtils.META_DATA_PREFERENCE_ICON_URI; import static com.android.settingslib.drawer.TileUtils.META_DATA_PREFERENCE_SEARCHABLE; import static com.android.settingslib.drawer.TileUtils.META_DATA_PREFERENCE_SWITCH_URI; import static com.android.settingslib.drawer.TileUtils.PROFILE_ALL; import static com.android.settingslib.drawer.TileUtils.PROFILE_PRIMARY; Loading Loading @@ -256,4 +257,26 @@ public class ActivityTileTest { assertThat(tile.getType()).isEqualTo(Tile.Type.SWITCH_WITH_ACTION); } @Test public void isSearchable_noMetadata_isTrue() { final Tile tile = new ActivityTile(null, "category"); assertThat(tile.isSearchable()).isTrue(); } @Test public void isSearchable_notSet_isTrue() { final Tile tile = new ActivityTile(mActivityInfo, "category"); assertThat(tile.isSearchable()).isTrue(); } @Test public void isSearchable_isSet_false() { mActivityInfo.metaData.putBoolean(META_DATA_PREFERENCE_SEARCHABLE, false); final Tile tile = new ActivityTile(mActivityInfo, "category"); assertThat(tile.isSearchable()).isFalse(); } }