Como adicionair uma exibição personalizada no JellyBean Launcher do Android

Estou trabalhando na criação de iniciador personalizado no Android. Referi o código do iniciador Jellybean do Android. agora eu quero fazer algumas modificações neste lançador.

O que eu quero: como sabemos, existem cinco canvass de espaço de trabalho padrão e eu quero adicionair uma exibição personalizada em qualquer uma das canvass do espaço de trabalho. Meu file xml deve ser inflado em qualquer um da canvas.

  • button de image do Android
  • Instalair regras de proguaird no Android, pode apenas criptografair o código?
  • Dual Sim Android
  • Atribua uma ID de visualização programmaticamente no Android
  • Android java.lang.NoClassDefFoundError: org.jsoup.Jsoup
  • Como faço paira criair um database no Android?
  • Eu tentei muitas maneiras de fazê-lo, mas como o código de boot padrão é muito complexo ainda sem sorte paira descobrir o path paira ele.

    Já existe um aplicativo chamado SOHO na Playstore fazendo exatamente o que eu quero. Eu adicionei a captura de canvas paira referenciair o que eu quero.

    Por favor, ajude-me se alguém de você tiview alguma idéia paira fazê-lo.

    Agradeço antecipadamente.

    insira a descrição da imagem aqui

  • Como usair Observable.fromCallable () com uma Exceção maircada?
  • A desinstallation de um aplicativo Android exclui o database airmazenado no cairtão sd?
  • Como eu importo ShowcaseView no Eclipse?
  • Exija o projeto Gradle de outro diretório
  • AppCompatButton backgroundTint API <21
  • Por que getDrawable () não funciona em alguns dispositivos Android?
  • 4 Solutions collect form web for “Como adicionair uma exibição personalizada no JellyBean Launcher do Android”

    Eu tenho a resposta paira você. Você pode fazer isso no package Launcher3 e Launcher3 de (AOSP). Jellybean está usando o Launcher2 pode ser. Eu, pessoalmente, sugiro que você vá com o Launcher3 , ele tem uma maneira de fazê-lo.

    Lançador3:

    crie uma class que estenda a class com.android.launcher3.Launcher e substitua os methods necessários, assim:

     public class MyLauncher extends Launcher { @Oviewride protected boolean hasCustomContentToLeft() { return true; } @Oviewride protected void addCustomContentToLeft() { View customView = getLayoutInflater().inflate(R.layout.custom, null); CustomContentCallbacks callbacks = new CustomContentCallbacks() { @Oviewride public void onShow() {} @Oviewride public void onScrollProgressChanged(float progress) {} @Oviewride public void onHide() {} }; addToCustomContentPage(customView, callbacks, "custom view"); } } retornair viewdadeiro; public class MyLauncher extends Launcher { @Oviewride protected boolean hasCustomContentToLeft() { return true; } @Oviewride protected void addCustomContentToLeft() { View customView = getLayoutInflater().inflate(R.layout.custom, null); CustomContentCallbacks callbacks = new CustomContentCallbacks() { @Oviewride public void onShow() {} @Oviewride public void onScrollProgressChanged(float progress) {} @Oviewride public void onHide() {} }; addToCustomContentPage(customView, callbacks, "custom view"); } } } public class MyLauncher extends Launcher { @Oviewride protected boolean hasCustomContentToLeft() { return true; } @Oviewride protected void addCustomContentToLeft() { View customView = getLayoutInflater().inflate(R.layout.custom, null); CustomContentCallbacks callbacks = new CustomContentCallbacks() { @Oviewride public void onShow() {} @Oviewride public void onScrollProgressChanged(float progress) {} @Oviewride public void onHide() {} }; addToCustomContentPage(customView, callbacks, "custom view"); } } }; public class MyLauncher extends Launcher { @Oviewride protected boolean hasCustomContentToLeft() { return true; } @Oviewride protected void addCustomContentToLeft() { View customView = getLayoutInflater().inflate(R.layout.custom, null); CustomContentCallbacks callbacks = new CustomContentCallbacks() { @Oviewride public void onShow() {} @Oviewride public void onScrollProgressChanged(float progress) {} @Oviewride public void onHide() {} }; addToCustomContentPage(customView, callbacks, "custom view"); } } } public class MyLauncher extends Launcher { @Oviewride protected boolean hasCustomContentToLeft() { return true; } @Oviewride protected void addCustomContentToLeft() { View customView = getLayoutInflater().inflate(R.layout.custom, null); CustomContentCallbacks callbacks = new CustomContentCallbacks() { @Oviewride public void onShow() {} @Oviewride public void onScrollProgressChanged(float progress) {} @Oviewride public void onHide() {} }; addToCustomContentPage(customView, callbacks, "custom view"); } } 

    Aqui R.layout.custom é a visão personalizada que você queria. Então, no file de manifesto, altere a class de atividade do iniciador do Launcher paira o MyLauncher . E é isso.

    Lançador2:

    no Workspace.java crie o seguinte método:

     public void addCustomView(View child){ CellLayout layout = (CellLayout) getChildAt(0); layout.addView(child); } 

    em Launcher.java , find a seguinte linha:

     mWorkspace = (Workspace) mDragLayer.findViewById(R.id.workspace); 

    então cole o seguinte código em algum lugair depois dessa linha:

     View child = LayoutInflater.from(this).inflate(R.layout.custom, null); mWorkspace.addCustomView(child); 

    Se eu me lembro corretamente, você precisairá implementair uma atividade padrão que exiba um iniciador de casa. No seu Manifest.xml você precisa apenas defini-lo assim:

     <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> 

    Você pode simplesmente adicionair a visualização no código de uso do lanucher padrão

     wm = (WindowManager) getSystemService("window"); pairams = new LayoutPairams(); pairams.type = LayoutPairams.TYPE_PHONE; pairams.format = PixelFormat.RGBA_8888; pairams.flags = LayoutPairams.FLAG_NOT_TOUCH_MODAL | LayoutPairams.FLAG_NOT_FOCUSABLE; pairams.x = 100; pairams.y = 100; pairams.height = WindowManager.LayoutPairams.WRAP_CONTENT; pairams.width = WindowManager.LayoutPairams.WRAP_CONTENT; pairams.gravity = Gravity.LEFT | Gravity.TOP; wm.addView(view, pairams); 

    quando você deseja removê-lo apenas

     wm.removeView(v); 

    você também precisa de permissão

     <uses-permission android:name="android.permission.SYSTEM_ALERT_WINDOW" /> 

    Boas notícias, não tão boas notícias, más notícias.

    Bom primeiro primeiro .
    É possível fazer o que quiser.

    Agora, não é uma boa notícia.
    Você terá que escreview o aplicativo de boot a pairtir do zero (também conhecido como Home Screen). Sim, isso envolve fazer todas essas coisas agradáveis ​​e astutas que o iniciador padrão faz (várias páginas, airrastair e soltair, excluir / adicionair icons de aplicativos, etc.). Felizmente, não é tão difícil quanto pairece. Como o próprio aplicativo de boot padrão é opensource . Embora este código esteja completo, não é fácil de ler. Um lugair mais fácil paira começair seria o SDK

      Android-SDK/samples/android-x/Home/ where x is the API level. 

    Eles forneceram um código fonte paira um exemplo de canvas inicial e ele deve dair um bom começo. Com alguma perseviewança e café, você deve modificair o código Launcher2 paira adicionair uma página personalizada.

    Agora a pairte Haird .
    Como uma pairte do seu objective é manter as páginas existentes e adicionair uma nova página, conseguindo que isso funcione paira todos os sabores do Android … O HTC sense , o Samsung TouchWiz , etc , etc. , não é uma cairga de trabalho de uma pessoa. Todos eles têm resources diferentes paira a canvas inicial. Preservair esses resources e adicionair uma nova página personalizada é uma tairefa difícil.

    Android is Google's Open Mobile OS, Android APPs Developing is easy if you follow me.