需要用到的知识点:
- 获取本地资源图片的方法
- 读取xml文件内容
读取本地资源方法:
使用getIdentifiler()方法可以方便获取各应用包下的指定资源ID
方式一:格式:包名:+资源文件夹名 + / +资源名;是这种格式 然后其他的可以为null
var indentify = resources. getIdentifier( "org.loveandroid.androidtest:drawable/icon", null, null);
if(indentify>0){
var icon = resources.getDrawable(indentify);
}
方式二:第一个参数为图片的名子,第二个为资源属性是ID或者是Drawable,第三个为包名(applicationId "com.***.tv")。
var intindentify = resources.getIdentifier("icon", "drawable", "com.***.tv");
读取XML文件:
方式分为:
- SAX解析XML
- DOM解析XML 缺点:占用内存资源,会导致手机出现死机
- pull解析XML
详细参考链接
使用PULL解析XML数据方法:
public static ArrayList<Person> getPersons(InputStream xml)throws Exception
{
//XmlPullParserFactory pullPaser = XmlPullParserFactory.newInstance();
ArrayList<Person> persons = null;
Person person = null;
// 创建一个xml解析的工厂
XmlPullParserFactory factory = XmlPullParserFactory.newInstance();
// 获得xml解析类的引用
XmlPullParser parser = factory.newPullParser();
parser.setInput(xml, "UTF-8");
// 获得事件的类型
int eventType = parser.getEventType();
while (eventType != XmlPullParser.END_DOCUMENT) {
switch (eventType) {
case XmlPullParser.START_DOCUMENT:
persons = new ArrayList<Person>();
break;
case XmlPullParser.START_TAG:
if ("person".equals(parser.getName())) {
person = new Person();
// 取出属性值
int id = Integer.parseInt(parser.getAttributeValue(0));
person.setId(id);
} else if ("name".equals(parser.getName())) {
String name = parser.nextText();// 获取该节点的内容
person.setName(name);
} else if ("age".equals(parser.getName())) {
int age = Integer.parseInt(parser.nextText());
person.setAge(age);
}
break;
case XmlPullParser.END_TAG:
if ("person".equals(parser.getName())) {
persons.add(person);
person = null;
}
break;
}
eventType = parser.next();
}
return persons;
}
使用PULL生成XML数据方法:
public static void save(List<Person> persons, OutputStream out) throws Exception {
XmlSerializer serializer = Xml.newSerializer();
serializer.setOutput(out, "UTF-8");
serializer.startDocument("UTF-8", true);
serializer.startTag(null, "persons");
for (Person p : persons) {
serializer.startTag(null, "person");
serializer.attribute(null, "id", p.getId() + "");
serializer.startTag(null, "name");
serializer.text(p.getName());
serializer.endTag(null, "name");
serializer.startTag(null, "age");
serializer.text(p.getAge() + "");
serializer.endTag(null, "age");
serializer.endTag(null, "person");
}
serializer.endTag(null, "persons");
serializer.endDocument();
out.flush();
out.close();
}
实现表情包效果: