mirror of
https://github.com/markusfisch/PieLauncher.git
synced 2026-03-13 09:01:30 +08:00
Add optional app drawer icon to pie menu
As an alternative way to open the app listing, instead of tapping the home screen.
This commit is contained in:
@@ -227,8 +227,12 @@ public class PickIconActivity extends Activity {
|
||||
|
||||
private void initHide(String packageName) {
|
||||
View hideButton = findViewById(R.id.hide_app);
|
||||
hideButton.setOnClickListener((v) -> askToHide(
|
||||
this, packageName, this::finish));
|
||||
if (PieLauncherApp.appMenu.isDrawerPackageName(packageName)) {
|
||||
hideButton.setVisibility(View.INVISIBLE);
|
||||
} else {
|
||||
hideButton.setOnClickListener((v) -> askToHide(
|
||||
this, packageName, this::finish));
|
||||
}
|
||||
}
|
||||
|
||||
private void initSwitchPack() {
|
||||
|
||||
@@ -158,6 +158,14 @@ public class PreferencesActivity extends Activity {
|
||||
PreferencesActivity::getDeadZoneOptions,
|
||||
() -> prefs.getDeadZone(),
|
||||
(value) -> prefs.setDeadZone(value));
|
||||
initPreference(R.id.use_drawer_icon,
|
||||
R.string.use_drawer_icon,
|
||||
PreferencesActivity::getUseDrawerIconOptions,
|
||||
() -> prefs.useDrawerIcon(),
|
||||
(value) -> {
|
||||
prefs.setUseDrawerIcon(value);
|
||||
PieLauncherApp.appMenu.updateIconsAsync(this);
|
||||
});
|
||||
initPreference(R.id.display_keyboard,
|
||||
R.string.display_keyboard,
|
||||
PreferencesActivity::getDisplayKeyboardOptions,
|
||||
@@ -372,6 +380,13 @@ public class PreferencesActivity extends Activity {
|
||||
return map;
|
||||
}
|
||||
|
||||
private static Map<Boolean, Integer> getUseDrawerIconOptions() {
|
||||
Map<Boolean, Integer> map = new LinkedHashMap<>();
|
||||
map.put(Boolean.TRUE, R.string.use_drawer_icon_yes);
|
||||
map.put(Boolean.FALSE, R.string.use_drawer_icon_no);
|
||||
return map;
|
||||
}
|
||||
|
||||
private static Map<Boolean, Integer> getDisplayKeyboardOptions() {
|
||||
Map<Boolean, Integer> map = new LinkedHashMap<>();
|
||||
map.put(Boolean.TRUE, R.string.display_keyboard_yes);
|
||||
|
||||
@@ -34,6 +34,7 @@ import java.util.Map;
|
||||
import java.util.Set;
|
||||
import java.util.concurrent.Executors;
|
||||
|
||||
import de.markusfisch.android.pielauncher.R;
|
||||
import de.markusfisch.android.pielauncher.app.PieLauncherApp;
|
||||
import de.markusfisch.android.pielauncher.graphics.CanvasPieMenu;
|
||||
import de.markusfisch.android.pielauncher.graphics.Converter;
|
||||
@@ -84,15 +85,24 @@ public class AppMenu extends CanvasPieMenu {
|
||||
|
||||
private UpdateListener updateListener;
|
||||
private LauncherApps launcherApps;
|
||||
private String drawerPackageName;
|
||||
private boolean indexing = false;
|
||||
|
||||
public boolean launchSelectedApp(Context context) {
|
||||
int selectedIcon = getSelectedIcon();
|
||||
if (selectedIcon > -1 && selectedIcon < icons.size()) {
|
||||
launchApp(context, ((AppIcon) icons.get(selectedIcon)));
|
||||
return true;
|
||||
}
|
||||
return false;
|
||||
public AppIcon getSelectedApp() {
|
||||
int index = getSelectedIcon();
|
||||
return index > -1 && index < icons.size()
|
||||
? (AppIcon) icons.get(index)
|
||||
: null;
|
||||
}
|
||||
|
||||
public boolean isDrawerIcon(AppIcon icon) {
|
||||
return icon != null &&
|
||||
isDrawerPackageName(icon.componentName.getPackageName());
|
||||
}
|
||||
|
||||
public boolean isDrawerPackageName(String packageName) {
|
||||
return drawerPackageName != null &&
|
||||
drawerPackageName.equals(packageName);
|
||||
}
|
||||
|
||||
public void launchApp(Context context, AppIcon icon) {
|
||||
@@ -250,7 +260,8 @@ public class AppMenu extends CanvasPieMenu {
|
||||
userHandleRestriction,
|
||||
hideApps,
|
||||
newApps);
|
||||
List<Icon> newIcons = createMenu(context, newApps);
|
||||
List<Icon> newIcons = createMenu(context, newApps,
|
||||
PieLauncherApp.getPrefs(context).useDrawerIcon());
|
||||
handler.post(() -> {
|
||||
apps.clear();
|
||||
apps.putAll(newApps);
|
||||
@@ -368,22 +379,51 @@ public class AppMenu extends CanvasPieMenu {
|
||||
}
|
||||
}
|
||||
|
||||
private static void addApp(Map<LauncherItemKey, AppIcon> allApps,
|
||||
private static AppIcon addApp(Map<LauncherItemKey, AppIcon> allApps,
|
||||
ComponentName componentName, String label,
|
||||
Drawable icon, UserHandle userHandle) {
|
||||
allApps.put(new LauncherItemKey(componentName, userHandle),
|
||||
new AppIcon(componentName, label, icon, userHandle));
|
||||
AppIcon appIcon = new AppIcon(componentName, label, icon, userHandle);
|
||||
allApps.put(new LauncherItemKey(componentName, userHandle), appIcon);
|
||||
return appIcon;
|
||||
}
|
||||
|
||||
private static List<Icon> createMenu(Context context,
|
||||
Map<LauncherItemKey, AppIcon> allApps) {
|
||||
List<Icon> menu = Menu.restore(context, allApps);
|
||||
private List<Icon> createMenu(Context context,
|
||||
Map<LauncherItemKey, AppIcon> allApps,
|
||||
boolean useDrawerIcon) {
|
||||
AppMenu.Icon drawerIcon = useDrawerIcon
|
||||
? addDrawerIcon(context, allApps)
|
||||
: null;
|
||||
ArrayList<Icon> menu = Menu.restore(context, allApps);
|
||||
if (menu.isEmpty()) {
|
||||
createInitialMenu(menu, allApps, context.getPackageManager());
|
||||
}
|
||||
if (drawerIcon != null) {
|
||||
if (!menu.contains(drawerIcon)) {
|
||||
menu.add(0, drawerIcon);
|
||||
}
|
||||
removePackageFromApps(allApps, drawerPackageName, null);
|
||||
} else {
|
||||
drawerPackageName = null;
|
||||
}
|
||||
return menu;
|
||||
}
|
||||
|
||||
private AppMenu.Icon addDrawerIcon(Context context,
|
||||
Map<LauncherItemKey, AppIcon> allApps) {
|
||||
String appPackageName = context.getPackageName();
|
||||
drawerPackageName = appPackageName + ".drawer";
|
||||
Drawable icon = PieLauncherApp.iconPack.getIcon(drawerPackageName);
|
||||
if (icon == null) {
|
||||
icon = Converter.getDrawable(
|
||||
context.getResources(), R.drawable.ic_drawer);
|
||||
}
|
||||
return addApp(allApps,
|
||||
new ComponentName(drawerPackageName, "Drawer"),
|
||||
"Drawer",
|
||||
icon,
|
||||
null);
|
||||
}
|
||||
|
||||
private static void createInitialMenu(List<Icon> menu,
|
||||
Map<LauncherItemKey, AppIcon> allApps,
|
||||
PackageManager pm) {
|
||||
|
||||
@@ -1,9 +1,11 @@
|
||||
package de.markusfisch.android.pielauncher.graphics;
|
||||
|
||||
import android.content.res.Resources;
|
||||
import android.graphics.Bitmap;
|
||||
import android.graphics.Canvas;
|
||||
import android.graphics.drawable.BitmapDrawable;
|
||||
import android.graphics.drawable.Drawable;
|
||||
import android.os.Build;
|
||||
|
||||
public class Converter {
|
||||
// Limit the icon size, as some apps incorrectly use too large resources
|
||||
@@ -35,4 +37,17 @@ public class Converter {
|
||||
drawable.draw(canvas);
|
||||
return bitmap;
|
||||
}
|
||||
|
||||
public static Bitmap getBitmapFromDrawable(Resources res, int resId) {
|
||||
return getBitmapFromDrawable(getDrawable(res, resId));
|
||||
}
|
||||
|
||||
public static Drawable getDrawable(Resources res, int resId) {
|
||||
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {
|
||||
return res.getDrawable(resId, null);
|
||||
} else {
|
||||
//noinspection deprecation
|
||||
return res.getDrawable(resId);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -20,7 +20,7 @@ import de.markusfisch.android.pielauncher.graphics.PieMenu;
|
||||
public class Menu {
|
||||
private static final String MENU_FILE = "menu";
|
||||
|
||||
public static List<PieMenu.Icon> restore(Context context,
|
||||
public static ArrayList<PieMenu.Icon> restore(Context context,
|
||||
Map<LauncherItemKey, AppMenu.AppIcon> allApps) {
|
||||
ArrayList<PieMenu.Icon> icons = new ArrayList<>();
|
||||
try {
|
||||
|
||||
@@ -32,6 +32,7 @@ public class Preferences {
|
||||
private static final String DARKEN_BACKGROUND = "darken_background";
|
||||
private static final String BLUR_BACKGROUND = "blur_background";
|
||||
private static final String DEAD_ZONE = "dead_zone";
|
||||
private static final String USE_DRAWER_ICON = "use_drawer_icon";
|
||||
private static final String DISPLAY_KEYBOARD = "display_keyboard";
|
||||
private static final String DOUBE_SPACE_LAUNCH = "space_action_double_launch";
|
||||
private static final String AUTO_LAUNCH_MATCHING = "auto_launch_matching";
|
||||
@@ -51,6 +52,7 @@ public class Preferences {
|
||||
private boolean darkenBackground = false;
|
||||
private boolean blurBackground = false;
|
||||
private int deadZone = DEAD_ZONE_BOTH;
|
||||
private boolean useDrawerIcon = false;
|
||||
private boolean displayKeyboard = true;
|
||||
private boolean doubleSpaceLaunch = false;
|
||||
private boolean autoLaunchMatching = false;
|
||||
@@ -78,6 +80,8 @@ public class Preferences {
|
||||
blurBackground = preferences.getBoolean(BLUR_BACKGROUND,
|
||||
blurBackground);
|
||||
deadZone = preferences.getInt(DEAD_ZONE, deadZone);
|
||||
useDrawerIcon = preferences.getBoolean(USE_DRAWER_ICON,
|
||||
useDrawerIcon);
|
||||
displayKeyboard = preferences.getBoolean(DISPLAY_KEYBOARD,
|
||||
displayKeyboard);
|
||||
doubleSpaceLaunch = preferences.getBoolean(DOUBE_SPACE_LAUNCH,
|
||||
@@ -164,6 +168,15 @@ public class Preferences {
|
||||
put(DEAD_ZONE, deadZone).commit();
|
||||
}
|
||||
|
||||
public boolean useDrawerIcon() {
|
||||
return useDrawerIcon;
|
||||
}
|
||||
|
||||
public void setUseDrawerIcon(boolean useDrawerIcon) {
|
||||
this.useDrawerIcon = useDrawerIcon;
|
||||
put(USE_DRAWER_ICON, useDrawerIcon).apply();
|
||||
}
|
||||
|
||||
public boolean displayKeyboard() {
|
||||
return displayKeyboard;
|
||||
}
|
||||
|
||||
@@ -10,7 +10,6 @@ import android.graphics.Paint;
|
||||
import android.graphics.Point;
|
||||
import android.graphics.PorterDuff;
|
||||
import android.graphics.Rect;
|
||||
import android.graphics.drawable.Drawable;
|
||||
import android.os.Build;
|
||||
import android.os.SystemClock;
|
||||
import android.text.TextPaint;
|
||||
@@ -197,14 +196,17 @@ public class AppPieView extends View {
|
||||
textOffset = (textHeight / 2) - paintText.descent();
|
||||
translucentBackgroundColor = res.getColor(R.color.bg_ui);
|
||||
|
||||
iconAdd = getBitmapFromDrawable(res, R.drawable.ic_add);
|
||||
iconEdit = getBitmapFromDrawable(res, R.drawable.ic_edit);
|
||||
iconHide = getBitmapFromDrawable(res, R.drawable.ic_hide);
|
||||
iconRemove = getBitmapFromDrawable(res, R.drawable.ic_remove);
|
||||
iconDetails = getBitmapFromDrawable(res, R.drawable.ic_details);
|
||||
iconDone = getBitmapFromDrawable(res, R.drawable.ic_done);
|
||||
iconPreferences = getBitmapFromDrawable(res, R.drawable.ic_preferences);
|
||||
iconLaunchFirst = getBitmapFromDrawable(res,
|
||||
iconAdd = Converter.getBitmapFromDrawable(res, R.drawable.ic_add);
|
||||
iconEdit = Converter.getBitmapFromDrawable(res, R.drawable.ic_edit);
|
||||
iconHide = Converter.getBitmapFromDrawable(res, R.drawable.ic_hide);
|
||||
iconRemove = Converter.getBitmapFromDrawable(res,
|
||||
R.drawable.ic_remove);
|
||||
iconDetails = Converter.getBitmapFromDrawable(res,
|
||||
R.drawable.ic_details);
|
||||
iconDone = Converter.getBitmapFromDrawable(res, R.drawable.ic_done);
|
||||
iconPreferences = Converter.getBitmapFromDrawable(res,
|
||||
R.drawable.ic_preferences);
|
||||
iconLaunchFirst = Converter.getBitmapFromDrawable(res,
|
||||
R.drawable.ic_launch_first);
|
||||
iconLaunchFirstHalf = iconLaunchFirst.getWidth() >> 1;
|
||||
updateChangeTwistIcon();
|
||||
@@ -398,19 +400,6 @@ public class AppPieView extends View {
|
||||
return getScrollY();
|
||||
}
|
||||
|
||||
private static Bitmap getBitmapFromDrawable(Resources res, int resId) {
|
||||
return Converter.getBitmapFromDrawable(getDrawable(res, resId));
|
||||
}
|
||||
|
||||
private static Drawable getDrawable(Resources res, int resId) {
|
||||
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {
|
||||
return res.getDrawable(resId, null);
|
||||
} else {
|
||||
//noinspection deprecation
|
||||
return res.getDrawable(resId);
|
||||
}
|
||||
}
|
||||
|
||||
private void initTouchListener() {
|
||||
setOnTouchListener(new OnTouchListener() {
|
||||
private final FlingRunnable flingRunnable = new FlingRunnable();
|
||||
@@ -977,16 +966,7 @@ public class AppPieView extends View {
|
||||
private boolean performAction(Context context, Point at, boolean wasTap) {
|
||||
if (mode == MODE_PIE && fadePie.isVisible()) {
|
||||
fadeOutMode();
|
||||
boolean result = false;
|
||||
if (wasTap) {
|
||||
if (listListener != null) {
|
||||
listListener.onOpenList(false);
|
||||
}
|
||||
} else if (PieLauncherApp.appMenu.launchSelectedApp(context)) {
|
||||
ripple.set(at);
|
||||
result = true;
|
||||
}
|
||||
return result;
|
||||
return performPieAction(context, at, wasTap);
|
||||
} else if (mode == MODE_LIST && wasTap) {
|
||||
return performListAction(context, at);
|
||||
} else if (mode == MODE_EDIT) {
|
||||
@@ -998,6 +978,31 @@ public class AppPieView extends View {
|
||||
return false;
|
||||
}
|
||||
|
||||
private boolean performPieAction(Context context, Point at,
|
||||
boolean wasTap) {
|
||||
boolean result = false;
|
||||
boolean openList = false;
|
||||
AppMenu.AppIcon appIcon = PieLauncherApp.appMenu.getSelectedApp();
|
||||
if (prefs.useDrawerIcon()) {
|
||||
result = openList = PieLauncherApp.appMenu.isDrawerIcon(
|
||||
appIcon);
|
||||
} else if (wasTap) {
|
||||
openList = true;
|
||||
}
|
||||
if (openList) {
|
||||
if (listListener != null) {
|
||||
listListener.onOpenList(false);
|
||||
}
|
||||
} else if (appIcon != null) {
|
||||
PieLauncherApp.appMenu.launchApp(context, appIcon);
|
||||
result = true;
|
||||
}
|
||||
if (result) {
|
||||
ripple.set(at);
|
||||
}
|
||||
return result;
|
||||
}
|
||||
|
||||
private boolean performListAction(Context context, Point at) {
|
||||
AppMenu.AppIcon appIcon = getListIconAt(at.x, at.y);
|
||||
if (appIcon != null) {
|
||||
@@ -1047,11 +1052,9 @@ public class AppPieView extends View {
|
||||
((Activity) context).onBackPressed();
|
||||
} else {
|
||||
ripple.set(touch);
|
||||
PieLauncherApp.appMenu.icons.remove(grabbedIcon);
|
||||
// Undo any rotation if the menu has not otherwise changed.
|
||||
if (sameOrder(backup, PieLauncherApp.appMenu.icons)) {
|
||||
rollback();
|
||||
}
|
||||
removeIconFromPie(grabbedIcon,
|
||||
PieLauncherApp.appMenu.isDrawerIcon(
|
||||
(AppMenu.AppIcon) grabbedIcon));
|
||||
}
|
||||
return true;
|
||||
} else if (contains(iconCenterRect, touch)) {
|
||||
@@ -1067,6 +1070,9 @@ public class AppPieView extends View {
|
||||
}
|
||||
if (PieLauncherApp.iconPack.hasPacks()) {
|
||||
changeIcon(context, grabbedIcon);
|
||||
} else if (PieLauncherApp.appMenu.isDrawerIcon(
|
||||
(AppMenu.AppIcon) grabbedIcon)) {
|
||||
removeIconFromPie(grabbedIcon, true);
|
||||
} else {
|
||||
PickIconActivity.askToHide(context,
|
||||
((AppMenu.AppIcon) grabbedIcon)
|
||||
@@ -1081,14 +1087,30 @@ public class AppPieView extends View {
|
||||
ripple.set(touch);
|
||||
rollback();
|
||||
fadeOutMode();
|
||||
PieLauncherApp.appMenu.launchAppInfo(context,
|
||||
(AppMenu.AppIcon) grabbedIcon);
|
||||
if (PieLauncherApp.appMenu.isDrawerIcon(
|
||||
(AppMenu.AppIcon) grabbedIcon)) {
|
||||
removeIconFromPie(grabbedIcon, true);
|
||||
} else {
|
||||
PieLauncherApp.appMenu.launchAppInfo(context,
|
||||
(AppMenu.AppIcon) grabbedIcon);
|
||||
}
|
||||
}
|
||||
return true;
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
private void removeIconFromPie(AppMenu.Icon icon, boolean isDrawerIcon) {
|
||||
if (isDrawerIcon) {
|
||||
prefs.setUseDrawerIcon(false);
|
||||
}
|
||||
PieLauncherApp.appMenu.icons.remove(icon);
|
||||
// Undo any rotation if the menu has not otherwise changed.
|
||||
if (sameOrder(backup, PieLauncherApp.appMenu.icons)) {
|
||||
rollback();
|
||||
}
|
||||
}
|
||||
|
||||
private void rollback() {
|
||||
PieLauncherApp.appMenu.icons.clear();
|
||||
PieLauncherApp.appMenu.icons.addAll(backup);
|
||||
@@ -1122,7 +1144,7 @@ public class AppPieView extends View {
|
||||
}
|
||||
|
||||
private void updateChangeTwistIcon() {
|
||||
iconChangeTwist = getBitmapFromDrawable(getResources(),
|
||||
iconChangeTwist = Converter.getBitmapFromDrawable(getResources(),
|
||||
getDrawableForTwist(twist));
|
||||
}
|
||||
|
||||
@@ -1152,7 +1174,7 @@ public class AppPieView extends View {
|
||||
}
|
||||
|
||||
private void updateChangeIconScaleIcon() {
|
||||
iconChangeIconScale = getBitmapFromDrawable(getResources(),
|
||||
iconChangeIconScale = Converter.getBitmapFromDrawable(getResources(),
|
||||
getDrawableForIconScale(iconScale));
|
||||
}
|
||||
|
||||
@@ -1163,7 +1185,7 @@ public class AppPieView extends View {
|
||||
}
|
||||
|
||||
private void updateChangeRadiusIcon() {
|
||||
iconChangeRadius = getBitmapFromDrawable(getResources(),
|
||||
iconChangeRadius = Converter.getBitmapFromDrawable(getResources(),
|
||||
getDrawableForRadius(radius));
|
||||
}
|
||||
|
||||
|
||||
9
app/src/main/res/drawable/ic_drawer.xml
Normal file
9
app/src/main/res/drawable/ic_drawer.xml
Normal file
@@ -0,0 +1,9 @@
|
||||
<vector xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
android:width="48dp"
|
||||
android:height="48dp"
|
||||
android:viewportWidth="48"
|
||||
android:viewportHeight="48">
|
||||
<path
|
||||
android:pathData="M24,2.906C12.35,2.906 2.906,12.35 2.906,24C2.906,35.65 12.35,45.094 24,45.094C35.65,45.094 45.094,35.65 45.094,24C45.094,12.35 35.65,2.906 24,2.906ZM14.875,16.751C16.259,16.751 17.381,17.855 17.381,19.217C17.381,20.579 16.259,21.683 14.875,21.683C13.49,21.683 12.368,20.579 12.368,19.217C12.368,17.855 13.49,16.751 14.875,16.751ZM24,16.751C25.384,16.751 26.507,17.855 26.507,19.217C26.507,20.579 25.384,21.683 24,21.683C22.616,21.683 21.493,20.579 21.493,19.217C21.493,17.855 22.616,16.751 24,16.751ZM33.125,16.751C34.51,16.751 35.632,17.855 35.632,19.217C35.632,20.579 34.51,21.683 33.125,21.683C31.741,21.683 30.619,20.579 30.619,19.217C30.619,17.855 31.741,16.751 33.125,16.751ZM14.875,26.317C16.259,26.317 17.381,27.421 17.381,28.783C17.381,30.145 16.259,31.249 14.875,31.249C13.49,31.249 12.368,30.145 12.368,28.783C12.368,27.421 13.49,26.317 14.875,26.317ZM24,26.317C25.384,26.317 26.507,27.421 26.507,28.783C26.507,30.145 25.384,31.249 24,31.249C22.616,31.249 21.493,30.145 21.493,28.783C21.493,27.421 22.616,26.317 24,26.317L24,26.317ZM33.125,26.317C34.51,26.317 35.632,27.421 35.632,28.783C35.632,30.145 34.51,31.249 33.125,31.249C31.741,31.249 30.619,30.145 30.619,28.783C30.619,27.421 31.741,26.317 33.125,26.317Z"
|
||||
android:fillColor="#f5f5f5"/>
|
||||
</vector>
|
||||
@@ -58,6 +58,10 @@
|
||||
<TextView
|
||||
style="@style/CategoryHeader"
|
||||
android:text="@string/category_app_drawer" />
|
||||
<de.markusfisch.android.pielauncher.widget.PreferenceView
|
||||
style="@style/PreferenceWithSeparator"
|
||||
android:id="@+id/use_drawer_icon"
|
||||
android:text="@string/use_drawer_icon_no" />
|
||||
<de.markusfisch.android.pielauncher.widget.PreferenceView
|
||||
style="@style/PreferenceWithSeparator"
|
||||
android:id="@+id/display_keyboard"
|
||||
|
||||
@@ -26,6 +26,9 @@
|
||||
<string name="dead_zone_bottom">Nur Unten</string>
|
||||
<string name="dead_zone_both">Oben und unten (Standard)</string>
|
||||
<string name="category_app_drawer">App Liste</string>
|
||||
<string name="use_drawer_icon">Öffnet durch</string>
|
||||
<string name="use_drawer_icon_yes">Icon in Pie-Menu</string>
|
||||
<string name="use_drawer_icon_no">Tipp auf den Startbildschirm (Standard)</string>
|
||||
<string name="display_keyboard">Tastatur automatisch öffnen</string>
|
||||
<string name="display_keyboard_yes">Ja (Standard)</string>
|
||||
<string name="display_keyboard_no">Nein</string>
|
||||
|
||||
@@ -26,6 +26,9 @@
|
||||
<string name="dead_zone_bottom">En bas de l\'écran</string>
|
||||
<string name="dead_zone_both">En haut et en bas de l\'écran (d\'usine)</string>
|
||||
<string name="category_app_drawer">Liste d\'apps</string>
|
||||
<string name="use_drawer_icon">Ouvert par</string>
|
||||
<string name="use_drawer_icon_yes">Icône dans le menu</string>
|
||||
<string name="use_drawer_icon_no">Tapez sur l\'écran d\'accueil (d\'usine)</string>
|
||||
<string name="display_keyboard">Affichage automatique du clavier</string>
|
||||
<string name="display_keyboard_yes">Oui (d\'usine)</string>
|
||||
<string name="display_keyboard_no">Non</string>
|
||||
|
||||
@@ -26,6 +26,9 @@
|
||||
<string name="dead_zone_bottom">Снизу</string>
|
||||
<string name="dead_zone_both">Сверху и снизу (Стандартно)</string>
|
||||
<string name="category_app_drawer">Список приложений</string>
|
||||
<string name="use_drawer_icon">Открывается через</string>
|
||||
<string name="use_drawer_icon_yes">Иконка в меню</string>
|
||||
<string name="use_drawer_icon_no">Нажмите на главный экран (Стандартно)</string>
|
||||
<string name="display_keyboard">Автоматически показывать клавиатуру</string>
|
||||
<string name="display_keyboard_yes">Да (Стандартно)</string>
|
||||
<string name="display_keyboard_no">Нет</string>
|
||||
|
||||
@@ -26,6 +26,9 @@
|
||||
<string name="dead_zone_bottom">Längst ner</string>
|
||||
<string name="dead_zone_both">Högst upp och längst ner (standard)</string>
|
||||
<string name="category_app_drawer">Applåda</string>
|
||||
<string name="use_drawer_icon">Öppnar genom</string>
|
||||
<string name="use_drawer_icon_yes">Ikon i menyn</string>
|
||||
<string name="use_drawer_icon_no">Tryck på startskärmen (standard)</string>
|
||||
<string name="display_keyboard">Visa tangentbordet automatiskt</string>
|
||||
<string name="display_keyboard_yes">Ja (standard)</string>
|
||||
<string name="display_keyboard_no">Nej</string>
|
||||
|
||||
@@ -26,6 +26,9 @@
|
||||
<string name="dead_zone_bottom">Внизу</string>
|
||||
<string name="dead_zone_both">Вгорі і внизу (за замовчуванням)</string>
|
||||
<string name="category_app_drawer">Список додатків</string>
|
||||
<string name="use_drawer_icon">Відкривається через</string>
|
||||
<string name="use_drawer_icon_yes">Іконка в меню</string>
|
||||
<string name="use_drawer_icon_no">Натисніть на головному екрані (за замовчуванням)</string>
|
||||
<string name="display_keyboard">Автоматично показувати клавіатуру</string>
|
||||
<string name="display_keyboard_yes">Так (за замовчуванням)</string>
|
||||
<string name="display_keyboard_no">Ні</string>
|
||||
|
||||
@@ -26,6 +26,9 @@
|
||||
<string name="dead_zone_bottom">屏幕底部</string>
|
||||
<string name="dead_zone_both">在屏幕顶部和底部 (默认)</string>
|
||||
<string name="category_app_drawer">应用程序列表</string>
|
||||
<string name="use_drawer_icon">通过</string>
|
||||
<string name="use_drawer_icon_yes">菜单中的图标</string>
|
||||
<string name="use_drawer_icon_no">点击主屏幕 (默认)</string>
|
||||
<string name="display_keyboard">自动显示键盘</string>
|
||||
<string name="display_keyboard_yes">是 (默认)</string>
|
||||
<string name="display_keyboard_no">没有</string>
|
||||
|
||||
@@ -26,6 +26,9 @@
|
||||
<string name="dead_zone_bottom">At the bottom</string>
|
||||
<string name="dead_zone_both">At the top and bottom (Default)</string>
|
||||
<string name="category_app_drawer">App Drawer</string>
|
||||
<string name="use_drawer_icon">Opens with</string>
|
||||
<string name="use_drawer_icon_yes">Icon in pie menu</string>
|
||||
<string name="use_drawer_icon_no">Tap on home screen (Default)</string>
|
||||
<string name="display_keyboard">Show keyboard automatically</string>
|
||||
<string name="display_keyboard_yes">Yes (Default)</string>
|
||||
<string name="display_keyboard_no">No</string>
|
||||
|
||||
4
svg/ic_drawer.svg
Normal file
4
svg/ic_drawer.svg
Normal file
@@ -0,0 +1,4 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<svg viewBox="0 0 48 48" width="48" height="48" xmlns="http://www.w3.org/2000/svg">
|
||||
<path d="M 24 2.906 C 12.35 2.906 2.906 12.35 2.906 24 C 2.906 35.65 12.35 45.094 24 45.094 C 35.65 45.094 45.094 35.65 45.094 24 C 45.094 12.35 35.65 2.906 24 2.906 Z M 14.875 16.751 C 16.259 16.751 17.381 17.855 17.381 19.217 C 17.381 20.579 16.259 21.683 14.875 21.683 C 13.49 21.683 12.368 20.579 12.368 19.217 C 12.368 17.855 13.49 16.751 14.875 16.751 Z M 24 16.751 C 25.384 16.751 26.507 17.855 26.507 19.217 C 26.507 20.579 25.384 21.683 24 21.683 C 22.616 21.683 21.493 20.579 21.493 19.217 C 21.493 17.855 22.616 16.751 24 16.751 Z M 33.125 16.751 C 34.51 16.751 35.632 17.855 35.632 19.217 C 35.632 20.579 34.51 21.683 33.125 21.683 C 31.741 21.683 30.619 20.579 30.619 19.217 C 30.619 17.855 31.741 16.751 33.125 16.751 Z M 14.875 26.317 C 16.259 26.317 17.381 27.421 17.381 28.783 C 17.381 30.145 16.259 31.249 14.875 31.249 C 13.49 31.249 12.368 30.145 12.368 28.783 C 12.368 27.421 13.49 26.317 14.875 26.317 Z M 24 26.317 C 25.384 26.317 26.507 27.421 26.507 28.783 C 26.507 30.145 25.384 31.249 24 31.249 C 22.616 31.249 21.493 30.145 21.493 28.783 C 21.493 27.421 22.616 26.317 24 26.317 L 24 26.317 Z M 33.125 26.317 C 34.51 26.317 35.632 27.421 35.632 28.783 C 35.632 30.145 34.51 31.249 33.125 31.249 C 31.741 31.249 30.619 30.145 30.619 28.783 C 30.619 27.421 31.741 26.317 33.125 26.317 Z" fill="#f5f5f5" transform="matrix(0.9999999999999999, 0, 0, 0.9999999999999999, -1.7763568394002505e-15, -1.7763568394002505e-15)"/>
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 1.5 KiB |
Reference in New Issue
Block a user