實(shí)現(xiàn)展示表情包效果

需要用到的知識點(diǎn):

  1. 獲取本地資源圖片的方法
  2. 讀取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();
}

demo見我的Github地址


實(shí)現(xiàn)表情包效果:

image

?demo見我的Github地址

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

友情鏈接更多精彩內(nèi)容