需要用到的知識點(diǎn):
- 獲取本地資源圖片的方法
- 讀取xml文件內(nèi)容
讀取本地資源方法:
使用getIdentifiler()方法可以方便獲取各應(yīng)用包下的指定資源ID
方式一:格式:包名:+資源文件夾名 + / +資源名;是這種格式 然后其他的可以為null
var indentify = resources. getIdentifier( "org.loveandroid.androidtest:drawable/icon", null, null);
if(indentify>0){
var icon = resources.getDrawable(indentify);
}
方式二:第一個(gè)參數(shù)為圖片的名子,第二個(gè)為資源屬性是ID或者是Drawable,第三個(gè)為包名(applicationId "com.***.tv")。
var intindentify = resources.getIdentifier("icon", "drawable", "com.***.tv");
讀取XML文件:
方式分為:
- SAX解析XML
- DOM解析XML 缺點(diǎn):占用內(nèi)存資源,會導(dǎo)致手機(jī)出現(xiàn)死機(jī)
- pull解析XML
詳細(xì)參考鏈接
image.png
使用PULL解析XML數(shù)據(jù)方法:
public static ArrayList<Person> getPersons(InputStream xml)throws Exception
{
//XmlPullParserFactory pullPaser = XmlPullParserFactory.newInstance();
ArrayList<Person> persons = null;
Person person = null;
// 創(chuàng)建一個(gè)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();// 獲取該節(jié)點(diǎn)的內(nèi)容
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數(shù)據(jù)方法:
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();
}
實(shí)現(xiàn)表情包效果:

image
