`
zengxx1989
  • 浏览: 302779 次
  • 性别: Icon_minigender_1
  • 来自: 湖南
社区版块
存档分类
最新评论

android解析自定义XML,launcher替换默认图标

阅读更多

1 在attr中定义自己的样式   

 <declare-styleable name="ExtentalAPP">
        <attr name="ex_className" format="string" />
        <attr name="ex_packageName" format="string" />
        <attr name="ex_title" format="string" />
        <attr name="ex_icon" format="reference" />
    </declare-styleable>

 

 

2.定义自己的xml属性,注意com.android.test 为包名,launcher 为前缀
<applications xmlns:launcher="http://schemas.android.com/apk/res/com.android.test" >

    <application
        launcher:ex_className="com.android.browser.BrowserActivity"
        launcher:ex_icon="@drawable/samsung_browser_icon"
        launcher:ex_packageName="com.android.browser"
        launcher:ex_title="@string/extena_browser_title" />

3 解析 XML

 

import org.xmlpull.v1.XmlPullParser;
import org.xmlpull.v1.XmlPullParserException;

import android.app.Activity;
import android.content.res.TypedArray;
import android.content.res.XmlResourceParser;
import android.graphics.drawable.Drawable;
import android.os.Bundle;
import android.util.AttributeSet;
import android.util.Xml;

import java.io.IOException;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

public class ExtentalApp extends Activity {

    String className;
    Drawable icon;
    String packageName;
    String title;
    
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
        loadExternalIconforXml();
    }

    public Map<String, ExtentalApp> loadExternalIconforXml() {
        Map<String, ExtentalApp> mapApp= new HashMap<String, ExtentalApp>();
        XmlPullParser xmlParser = getResources().getXml(R.xml.external_application);
        AttributeSet set = Xml.asAttributeSet(xmlParser);
        try {
            int eventType = xmlParser.getEventType();
            while (eventType != XmlResourceParser.END_DOCUMENT) {
                if (eventType == XmlResourceParser.START_TAG) {
                    switch (xmlParser.getDepth()) {
                        case 1:
                            break;
                        case 2:
                            TypedArray ta =  this.obtainStyledAttributes(set, R.styleable.ExtentalAPP);
                            ExtentalApp app = new ExtentalApp();
                            app.className = ta.getString(R.styleable.ExtentalAPP_ex_className);
                            app.packageName = ta.getString(R.styleable.ExtentalAPP_ex_packageName);
                            app.title = ta.getString(R.styleable.ExtentalAPP_ex_title);
                            app.icon = ta.getDrawable(R.styleable.ExtentalAPP_ex_icon);
                            mapApp.put(app.className, app);
                            break; 
                        default:
                            break;
                    }
                    
                }
                eventType = xmlParser.next();
            }

        } catch (XmlPullParserException e) {
            e.printStackTrace();
        } catch (IOException  ioe){
            ioe.printStackTrace();
        }
        return mapApp;
    }
}

  

 

分享到:
评论

相关推荐

    android launcher2源码

    Launcher2是Android早期版本中的默认桌面应用,它负责展示应用图标、小部件以及处理用户的触摸事件。源码分析可以帮助我们理解Android系统的启动过程、应用程序的管理方式以及UI布局和交互逻辑。 1. **启动流程**:...

    Android项目源码简单仿ios桌面主题源码.rar

    3. **图标资源替换**: 将Android原生的方形图标转换为圆角图标,这需要对每个应用图标进行处理,或者创建一个可以动态生成圆角图标的机制。这可能涉及到Bitmap的裁剪和绘制,或者使用自定义的ImageView子类来实现。 ...

    Android源码——高仿点心桌面皮肤源码.rar

    开发者需要修改或替换默认的主题资源,使其符合新皮肤的设计风格。 2. **自定义Launcher类**:为了实现皮肤功能,开发者需要扩展Android的Launcher类,并重写相关方法,比如onCreate()、onResume()等,以在启动器...

    Android4.4原生Laucnher3源代码2014年6月

    源代码的设计允许开发者进行深度定制,例如通过修改`res`目录下的资源文件来改变UI样式,或通过继承相关类并替换默认行为实现特定功能。 六、总结 Android4.4原生Launcher3的源代码是一本活生生的教科书,它展示了...

    android音乐播放器

    图片资源可能包括各种状态下的图标,如ic_launcher-web.png就是应用的启动图标。 再者,gen目录下的自动生成代码,主要包含了R.java文件,它是对res资源的引用。在编译时,Android编译器会根据res文件夹的内容自动...

    新版Android开发教程.rar

    ----------------------------------- Android 编程基础 1 封面----------------------------------- Android 编程基础 2 开放手机联盟 --Open --Open --Open --Open Handset Handset Handset Handset Alliance ...

    MyHome.tar.gz

    对于美化版的Home apk,res目录下的drawable和mipmap目录可能会有大量自定义的图像资源,用于替换默认的图标和背景。values目录中的styles.xml可能被修改,以定义新的主题样式,这直接影响到应用的视觉呈现。 在...

    H3 Android定制化文档

    - **配置出厂时的默认launcher**:设定系统启动时默认打开的launcher。 - **替换鼠标图标**:更换系统中鼠标的图标。 - **隐藏软键盘**:在特定情况下隐藏虚拟键盘。 - **添加预编译APK**: - **源码预装**:在源码...

    ActionBar代码

    在布局XML中,可以通过`&lt;androidx.appcompat.widget.Toolbar&gt;`替换传统的ActionBar。 2. 设置ActionBar: - 在Activity的onCreate()方法中,获取Toolbar并设置为ActionBar: ```java Toolbar toolbar = ...

Global site tag (gtag.js) - Google Analytics