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;
}
}
分享到:
相关推荐
Launcher2是Android早期版本中的默认桌面应用,它负责展示应用图标、小部件以及处理用户的触摸事件。源码分析可以帮助我们理解Android系统的启动过程、应用程序的管理方式以及UI布局和交互逻辑。 1. **启动流程**:...
3. **图标资源替换**: 将Android原生的方形图标转换为圆角图标,这需要对每个应用图标进行处理,或者创建一个可以动态生成圆角图标的机制。这可能涉及到Bitmap的裁剪和绘制,或者使用自定义的ImageView子类来实现。 ...
开发者需要修改或替换默认的主题资源,使其符合新皮肤的设计风格。 2. **自定义Launcher类**:为了实现皮肤功能,开发者需要扩展Android的Launcher类,并重写相关方法,比如onCreate()、onResume()等,以在启动器...
源代码的设计允许开发者进行深度定制,例如通过修改`res`目录下的资源文件来改变UI样式,或通过继承相关类并替换默认行为实现特定功能。 六、总结 Android4.4原生Launcher3的源代码是一本活生生的教科书,它展示了...
图片资源可能包括各种状态下的图标,如ic_launcher-web.png就是应用的启动图标。 再者,gen目录下的自动生成代码,主要包含了R.java文件,它是对res资源的引用。在编译时,Android编译器会根据res文件夹的内容自动...
----------------------------------- Android 编程基础 1 封面----------------------------------- Android 编程基础 2 开放手机联盟 --Open --Open --Open --Open Handset Handset Handset Handset Alliance ...
对于美化版的Home apk,res目录下的drawable和mipmap目录可能会有大量自定义的图像资源,用于替换默认的图标和背景。values目录中的styles.xml可能被修改,以定义新的主题样式,这直接影响到应用的视觉呈现。 在...
- **配置出厂时的默认launcher**:设定系统启动时默认打开的launcher。 - **替换鼠标图标**:更换系统中鼠标的图标。 - **隐藏软键盘**:在特定情况下隐藏虚拟键盘。 - **添加预编译APK**: - **源码预装**:在源码...
在布局XML中,可以通过`<androidx.appcompat.widget.Toolbar>`替换传统的ActionBar。 2. 设置ActionBar: - 在Activity的onCreate()方法中,获取Toolbar并设置为ActionBar: ```java Toolbar toolbar = ...