亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 系統 > Android > 正文

Android中實現自動生成布局View的初始化代碼方法

2020-04-11 11:43:42
字體:
來源:轉載
供稿:網友

在android開發過程中,界面布局是及其重要的,但同時也是復雜。有的時候我們急于實際運行查看布局效果。但是android的編譯速度我實在不想吐槽啥,尤其在布局越來越復雜,項目越來越大,資源文件越來越多的情況下。

尤其是是android的view的初始化,findViewbyId 完全是體力活,我們完全可以根據布局文件自動生成View的初始化代碼。

首先聲明:
 
1.這是及其容易做到的,實用性性一般,但是在復雜布局和首次寫初始化View代碼的時候及其好用。
2.只能生成有id標簽的view的初始化代碼。

思路

其實很簡單,就是解析layout 布局文件,把有id屬性的標簽的一些信息(標簽類型,id名稱等)存起來,然后根據這些信息生成固定的代碼。

實現

直接上代碼,首先是對layout文件的解析,把解析出來的信息放在一個list中

復制代碼 代碼如下:

public class SaxHander extends DefaultHandler {
    private List<IdNamePair> map = new ArrayList<IdNamePair>();
 
    
    @Override
    public void startDocument() throws SAXException {
        super.startDocument();
        map.clear();
    }
 
    @Override
    public void startElement(String uri, String localName, String qName, Attributes attributes) throws SAXException {
        super.startElement(uri, localName, qName, attributes);
//      System.out.println("-------------------------------------");
 
        String tempid = attributes.getValue("id");
        String id = null;
        if (tempid != null) {
            String[] ss = tempid.split("/");
            if (ss != null && ss.length == 2) {
 
                id = ss[1];
            }
        }
        if (id != null) {
            map.add(new IdNamePair(id, qName));
 
        }
//      System.out.println(id);
//      System.out.println(qName);
 
    }
 
    public List<IdNamePair> getRes() {
        return map;
 
    }
}

復制代碼 代碼如下:

public class IdNamePair {
    private String  id;
    private String name;
    
    /**
     * @param id
     * @param name
     */
    public IdNamePair(String id, String name) {
        super();
        this.id = id;
        this.name = name;
    }
    public String getId() {
        return id;
    }
    public void setId(String id) {
        this.id = id;
    }
    public String getName() {
        return name;
    }
    public void setName(String name) {
        this.name = name;
    }
    
}

然后一點點的拼接代碼

復制代碼 代碼如下:

 public class ViewCodeUtil {
    static SAXParserFactory saxfac = SAXParserFactory.newInstance(); 
 
    static SaxHander mySax = new SaxHander();
 
    
    public static String getCode(String resFileName){
        
        File f = new File(resFileName);
        if (!f.exists()) {
            return null;
        }
        
        try {
            saxfac.newSAXParser().parse(f,mySax);
        } catch (Exception e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
            return null;
        }
        
        List<IdNamePair> res = mySax.getRes();
        StringBuilder sb = new StringBuilder();
        StringBuilder sb1 = new StringBuilder();
        sb.append("http://---------- 開始定義域--------------/n");
        
        sb1.append("http://----------開始initView方法------------------/n");
        sb1.append("public void initView() { /n");
 
        for (IdNamePair idNamePair : res) {
            sb.append(" private "+idNamePair.getName()+"  "+ idNamePair.getId()+idNamePair.getName()+";/n");
            
            sb1.append("    "+idNamePair.getId()+idNamePair.getName()+" = ("+idNamePair.getName()+")findViewById(R.id."+idNamePair.getId()+");/n");
        
        }
        sb1.append("}/n");
//      System.out.println(sb.toString());
//      System.out.println(sb1.toString());
        return sb.append(sb1.toString()).toString();
 
    }

最后是測試類main方法。

復制代碼 代碼如下:

public class Test {
    
    private static final String[] layoutFiles ={"./res/g_ruler.xml","./res/report.xml"};
    
    public static void main(String[] args) {
        
        
        if (args!=null) {
            for (int i = 0; i < args.length; i++) {
                System.out.println("");
 
                System.out.println("---------"+args[i]+"----------");
                System.out.println(ViewCodeUtil.getCode(args[i]));
            } 
        }
        
        for (int i = 0; i < layoutFiles.length; i++) {
            System.out.println("");
 
            System.out.println("http://---------"+layoutFiles[i]+"----------");
            System.out.println(ViewCodeUtil.getCode(layoutFiles[i]));
        } 
        
    }
 
}

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
中文字幕日韩高清| 欧美在线观看网址综合| 68精品国产免费久久久久久婷婷| 91高清视频在线免费观看| 日产精品久久久一区二区福利| 国产欧美婷婷中文| 久久综合伊人77777尤物| 亚洲第一色中文字幕| 中文字幕日韩精品在线| 国产精品久久久久久久久久三级| 78m国产成人精品视频| 日韩精品视频免费在线观看| 亚洲一区二区久久久久久久| 中文日韩在线观看| 欧美激情在线视频二区| 久久精品国产成人精品| 日韩电影中文字幕| 久久久久久久999精品视频| 51久久精品夜色国产麻豆| 久久亚洲精品中文字幕冲田杏梨| 国模私拍一区二区三区| 欧美亚洲一区在线| 久久精品国产96久久久香蕉| 日韩精品中文字幕在线观看| 91免费看片网站| 伊人久久五月天| 欧美日韩在线免费观看| 中文字幕日韩精品在线观看| 亚洲成年人在线播放| 疯狂蹂躏欧美一区二区精品| 欧美激情中文字幕乱码免费| 一本色道久久88综合亚洲精品ⅰ| 日韩免费在线播放| 这里只有精品在线播放| 久久久久久国产精品三级玉女聊斋| 最近2019年中文视频免费在线观看| 国产自摸综合网| 日韩国产在线看| 欧美日本精品在线| 97在线精品国自产拍中文| 日韩高清免费在线| 欧美激情第99页| 日韩欧美亚洲国产一区| 亚洲国产天堂网精品网站| 亚洲小视频在线| 77777少妇光屁股久久一区| 亚洲精品日韩av| 久久精品夜夜夜夜夜久久| 久久久国产精品一区| 中文字幕欧美精品日韩中文字幕| 91成人在线播放| 国产日韩在线播放| www.99久久热国产日韩欧美.com| 成人免费视频97| 日韩欧美成人网| 精品久久久久久| 亚洲第一av在线| 国产aⅴ夜夜欢一区二区三区| 插插插亚洲综合网| 久久久亚洲精选| 国产在线播放不卡| 26uuu另类亚洲欧美日本老年| 亚洲影影院av| 亚洲第一中文字幕| 精品国产91久久久久久老师| 久久国产精品久久国产精品| 51精品在线观看| 夜夜嗨av色综合久久久综合网| 久久久成人av| 亚洲国产成人精品女人久久久| 亚洲国产又黄又爽女人高潮的| 91精品久久久久久| 精品日本高清在线播放| 久久久久久91| 91福利视频在线观看| 欧美亚洲激情在线| 中文字幕日韩欧美在线| 欧美精品久久久久久久久| 成人福利网站在线观看11| 在线电影av不卡网址| 在线观看国产欧美| 亚洲精品视频免费在线观看| 中文字幕日韩av电影| 国产精品午夜视频| 日韩国产欧美精品在线| 午夜精品一区二区三区在线| 久久黄色av网站| 欧美日韩国产页| 国产婷婷色综合av蜜臀av| 91免费国产网站| 色琪琪综合男人的天堂aⅴ视频| 国产精品久久久久久久天堂| 国产精品va在线播放我和闺蜜| 日韩电影免费在线观看| 久久精品亚洲94久久精品| 亚洲国产高清高潮精品美女| 精品久久久久久中文字幕大豆网| 国产成+人+综合+亚洲欧美丁香花| 亚洲最大福利网站| 欧美裸体男粗大视频在线观看| 久久久精品视频在线观看| 欧美黑人一级爽快片淫片高清| 国产999精品久久久| 亚洲欧美激情在线视频| 亚洲精品国产美女| 欧美精品在线看| 亚洲少妇激情视频| 88国产精品欧美一区二区三区| 亚洲欧美中文另类| 国产欧美精品va在线观看| 久久男人av资源网站| 欧美超级乱淫片喷水| 成人黄色免费看| 国产精品久久久久aaaa九色| 亚洲一区二区免费在线| 国产精品91视频| 尤物九九久久国产精品的分类| 91免费电影网站| 久久青草福利网站| 欧美视频在线观看 亚洲欧| 国产91久久婷婷一区二区| 国产日韩在线播放| 国产亚洲欧美日韩一区二区| 69av在线播放| 成人激情免费在线| 亚洲成人性视频| 欧美日韩福利在线观看| 国产欧美一区二区三区久久人妖| 日韩精品在线免费播放| 日韩av影视在线| 国产精品96久久久久久又黄又硬| 亚洲图片欧美午夜| 日韩美女在线观看| 日韩中文字幕久久| 欧美日韩一区免费| 91在线观看免费| 国产一区二区三区高清在线观看| 亚洲精品国产精品久久清纯直播| 国产a级全部精品| 91国产视频在线| 日韩在线免费观看视频| 国产精品久久久久久久久久新婚| 高清欧美性猛交xxxx黑人猛交| 久久精品电影一区二区| 在线视频欧美日韩| 欧美亚洲成人免费| 两个人的视频www国产精品| 亚洲精品999| 日韩美女在线观看一区| 日本精品视频网站| 97av在线视频| 亚洲欧洲国产伦综合| 久久精品这里热有精品| 国产日产欧美精品| 大桥未久av一区二区三区| 国产女人精品视频| 国模精品一区二区三区色天香| 国产一区玩具在线观看| 亚洲综合日韩在线| 日韩电影中文字幕在线观看| 欧美精品在线第一页| 国产精品久久久久福利| 亚洲天堂男人天堂女人天堂| 亚洲国产精品成人av|