Как добавить пользовательский вид в android JellyBean Launcher
Я работаю над созданием пользовательского запуска в android. Я упомянул код андроида Jellybean launcher. теперь я хочу внести некоторые изменения в эту пусковую установку.
Что я хочу: Как мы знаем, по умолчанию пять экранов рабочего пространства, и я хочу добавить пользовательский вид на любой экран рабочего пространства. Мой xml файл должен быть завышен на любом экране.
Я пробовал много способов сделать это, но поскольку код запуска по умолчанию очень сложный, но ему не удавалось найти способ для него.
Уже есть приложение с именем SOHO в Playstore, которое делает именно то, что я хочу. Я добавил скриншот для ссылки на то, что хочу.
Пожалуйста, помогите мне, если кто-нибудь из вас имеет какую-либо идею сделать это.
Спасибо в Advance.
![enter image description here]()
Ответы
Ответ 1
У меня есть ответ для вас. Вы можете сделать это как в Launcher2
, так и в Launcher3
пакете из (AOSP). Jellybean использует Launcher2
может быть. Я лично предлагаю вам пойти с Launcher3
, у него есть встроенный способ сделать это.
Launcher3:
создайте класс, который расширяет класс com.android.launcher3.Launcher
и переопределяет необходимые методы:
public class MyLauncher extends Launcher {
@Override
protected boolean hasCustomContentToLeft() {
return true;
}
@Override
protected void addCustomContentToLeft() {
View customView = getLayoutInflater().inflate(R.layout.custom, null);
CustomContentCallbacks callbacks = new CustomContentCallbacks() {
@Override
public void onShow() {}
@Override
public void onScrollProgressChanged(float progress) {}
@Override
public void onHide() {}
};
addToCustomContentPage(customView, callbacks, "custom view");
}
}
Здесь R.layout.custom
- это пользовательское представление, которое вы хотели.
Затем в файле манифеста измените класс активности запуска с Launcher
на MyLauncher
. И что это.
Launcher2:
в Workspace.java
создайте следующий метод:
public void addCustomView(View child){
CellLayout layout = (CellLayout) getChildAt(0);
layout.addView(child);
}
то в Launcher.java
найдите следующую строку:
mWorkspace = (Workspace) mDragLayer.findViewById(R.id.workspace);
затем вставьте следующий код где-то после этой строки:
View child = LayoutInflater.from(this).inflate(R.layout.custom, null);
mWorkspace.addCustomView(child);
Ответ 2
Если я правильно помню, вам просто нужно реализовать стандартную активность, которая отображает домашний пусковой механизм. В вашем Manifest.xml вам просто нужно определить его так:
<activity android:name=".YourLauncher" android:label="@string/launcher_name">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
Ответ 3
вы можете просто добавить представление в код использования lanucher по умолчанию
wm = (WindowManager) getSystemService("window");
params = new LayoutParams();
params.type = LayoutParams.TYPE_PHONE;
params.format = PixelFormat.RGBA_8888;
params.flags = LayoutParams.FLAG_NOT_TOUCH_MODAL
| LayoutParams.FLAG_NOT_FOCUSABLE;
params.x = 100;
params.y = 100;
params.height = WindowManager.LayoutParams.WRAP_CONTENT;
params.width = WindowManager.LayoutParams.WRAP_CONTENT;
params.gravity = Gravity.LEFT | Gravity.TOP;
wm.addView(view, params);
когда вы хотите удалить его
просто
wm.removeView(v);
вам также нужно разрешение
<uses-permission android:name="android.permission.SYSTEM_ALERT_WINDOW" />
Ответ 4
Хорошие новости, не очень хорошие новости, плохие новости.
Хороший новый первый.
Вы можете делать то, что хотите.
Теперь не так хорошая новость.
Вам нужно будет написать приложение запуска с нуля (например, "Главный экран" ). Да, это включает в себя выполнение всех этих приятных и полезных вещей, которые запускается по умолчанию (несколько страниц, перетаскивание, удаление/добавление значков приложений и т.д.). К счастью, это не так сложно, как кажется. Поскольку само приложение для запуска по умолчанию - opensource. Хотя этот код завершен, его непросто читать. Легче начать работу с SDK
Android-SDK/samples/android-x/Home/
where x is the API level.
Они предоставили исходный код для исходного экрана примера, и он должен дать вам хорошее начало. С некоторой настойчивостью и кофе вы сможете изменить Launcher2 код на добавьте собственную страницу.
Теперь Жесткая часть.
Поскольку ваша цель состоит в том, чтобы сохранить существующие страницы такими же и добавить новую страницу, чтобы это работало для всех вкусов андроида... HTC sense, Samsung TouchWiz, и т.д., и т.д. - это не одна рабочая нагрузка. Все они имеют разные функции для главного экрана. Сохранение этих функций и добавление новой настраиваемой страницы - непростая задача.