Подтвердить что ты не робот

Как добавить пользовательский вид в android JellyBean Launcher

Я работаю над созданием пользовательского запуска в android. Я упомянул код андроида Jellybean launcher. теперь я хочу внести некоторые изменения в эту пусковую установку.

Что я хочу: Как мы знаем, по умолчанию пять экранов рабочего пространства, и я хочу добавить пользовательский вид на любой экран рабочего пространства. Мой xml файл должен быть завышен на любом экране.

Я пробовал много способов сделать это, но поскольку код запуска по умолчанию очень сложный, но ему не удавалось найти способ для него.

Уже есть приложение с именем SOHO в Playstore, которое делает именно то, что я хочу. Я добавил скриншот для ссылки на то, что хочу.

Пожалуйста, помогите мне, если кто-нибудь из вас имеет какую-либо идею сделать это.

Спасибо в Advance.

enter image description here

4b9b3361

Ответ 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, и т.д., и т.д. - это не одна рабочая нагрузка. Все они имеют разные функции для главного экрана. Сохранение этих функций и добавление новой настраиваемой страницы - непростая задача.