android修改桌面底端快捷图片为Settings

android修改桌面底端快捷图片为Settings_第1张图片

好吧,我还是先上两张张图吧(前一张是没修改的图,后一张是修改过的图)。。。。

本来在settings图片的地方是浏览器的,现在我们要做的就将之改为settings(当然你也可以添加另外的图标实现功能):

我们在源代码中找到Launcher2(桌面源码),找到launcher.java,里面setContentView(R.layout.launcher);说明它引用lanucher.xml文件,那么我们就在launcher的src下去找

launcher.xml文件(在layout-land下),里面有<ImageView
            android:id="@+id/hotseat_right"
            style="@style/HotseatButton.Right"
            android:layout_above="@id/all_apps_button"

            android:src="@drawable/hotseat_browser_normal"

            android:onClick="launchHotSeat"

            />代码,这就是显示浏览器图标的,那么我们将其中的android:src="@drawable/hotseat_browser_normal"改为android:src="@drawable/"ic_launcher_settings"(settings的图标当然要自己放到图片文件夹里面,没有动画图片就用这一张,在dramwale下还有一个hotseat_browser.xml文件将里面的图片名也改为settings的图片名,就是没有图标变动的效果)

就将浏览器的图标改为settings的图标了。。。

我们再找到launcher.java中的loadHotseats() 方法,里面有mHotseatConfig = getResources().getStringArray(R.array.hotseats);和getResources().obtainTypedArray(R.array.hotseat_icons);那么我们的去改array.xml文件了,

改为:<string-array name="hotseats" translatable="false">
        <item>intent:#Intent;action=android.intent.action.DIAL;end</item>
        <item>*Settings*(可以随便啦,因为在后面将会进行判断是否等于*Settings*)</item>
    </string-array>
    <array name="hotseat_icons" translatable="false">
        <item>@drawable/hotseat_phone</item>
        <item>@drawable/ic_launcher_settings</item>
    </array>

最重要的部分来了:  在loadHotseats() 方法里面有PackageManager pm = getPackageManager();
        for (int i=0; i<mHotseatConfig.length; i++) {
            Intent intent = null;
            if (mHotseatConfig[i].equals("*Settings*")) {
                // magic value meaning "launch user's default web browser"
                // replace it with a generic web request so we can see if there is indeed a default
                String defaultUri = getString(R.string.default_browser_url);
                intent = new Intent(
                        Intent.ACTION_VIEW,
                        ((defaultUri != null)
                            ? Uri.parse(defaultUri)
                            : getDefaultBrowserUri())
                    ).addCategory(Intent.CATEGORY_BROWSABLE);

意思大概为为启动浏览器添加intent,因此我们将  String defaultUri = getString(R.string.default_browser_url);
                intent = new Intent(
                        Intent.ACTION_VIEW,
                        ((defaultUri != null)
                            ? Uri.parse(defaultUri)
                            : getDefaultBrowserUri())
                    ).addCategory(Intent.CATEGORY_BROWSABLE);

改为intent = new Intent("com.android.settings");
     intent.setClassName("com.android.settings", "com.android.settings.Settings");  //前面一个是包名,后一个是类名         

就ok了。。。(当然launcher.java中的getDefaultBrowserUri()方法也没有用了。。。删不删都可以)

最后就编译一下launcher2,将生成的launcher2.apk替换机器里面的就完成了。

       



你可能感兴趣的:(android,android,Launcher,Launcher)