Android框架之Butterknife的使用

    Butterknife

介紹:

   快速快捷初始化控件的一個工具!

原理:
註解+反射

使用:

Activity        

Fragment

Adapter

      在對應的佈局上右鍵--》 generate  --> butterknife 
  Adapter需要勾選 左下角的 createViewHolder即可
  注意:使用Butterknife 需要添加對應jar包和對應的插件

8.0版本以後使用卻別:

     問題:直接使用,無法正常初始化控件,會爆空指針!

     解決方案:

1.Project的build.gradle文件中增加classpath內容:

    buildscript {
    repositories {
    jcenter()
    }
    dependencies {
    classpath 'com.android.tools.build:gradle:2.0.0'
    classpath 'com.neenbedankt.gradle.plugins:android-apt:1.8' //增加這一句


   2.app的build.gradle文件中增加classpath內容:

    apply plugin: 'com.neenbedankt.android-apt'//增加這一句
        dependencies {
    compile fileTree(include: ['*.jar'], dir: 'libs')
    testCompile 'junit:junit:4.12'
    compile 'com.android.support:appcompat-v7:23.4.0'
    compile 'com.jakewharton:butterknife:8.1.0'
    apt 'com.jakewharton:butterknife-compiler:8.1.0'//增加這一句



       註解
  • 1.需要修改類的修飾符 @interface
  • 2.聲明註解的方法 不用寫方法體
    *
  • 註解的類名 相當於註解的名稱
  • 註解的方法名 相當於註解的屬性名 defaulet默認的值 方法的返回值相當於屬性的賦值的類型
  • 直接target標籤 type類型 指定作用的位置 如果不寫 隨便位置

    Xutils3.0

    1.xutils是android中的一個快速開發框架,xutils是基於afinal開發的,比afinal的穩定性提高了不少
    2.xUtils支持超大文件上傳(超過2g),更全面的http請求協議支持(11種謂詞),擁有更加靈活的orm
    3.xUtils最低兼容android4.0
    4.xUtils3變化較多,Http實現替換HttpClient爲UrlConnection

    Xutils3.0內部包含哪些方面的工具類:

    四個部分:

    1.View控件的註解
    2.網絡請求部分工具類
    3.圖片加載部分的工具類
    4.數據庫部分的工具類

    studio中如何導入xutils3.0的包

    依賴 導入3.0即可

    使用:

    1.將程序的最低版本調製4.0以上!
    2.導入jar包即可
    compile ‘org.xutils:xutils:3.3.40’
    3.添加權限


    4.Application中進行框架的初始化工作

    x.Ext.init(this);
    //參數1: Boolean類型 ture 代表輸出內部的日誌 但是輸出日誌影響開發性能!需要在程序上線時 關閉日誌輸出
    x.Ext.setDebug(true);

    1.View控件的註解部分

    目的: 和butterKnife一樣,更加快捷方便的進行控件的初始化和控件監聽事件的寫法

    butterKnife和xutils控件註解部分的不同點:xutils部分,指定控件的點擊事件會更多!
    

    Activity

    1.在Activity的類上 @ContentView(R.layout.xxx)
    2.onCreate中進行初始化  x.View().inject(Activity); 同時 去掉setContentView
    3.
        @ViewInJect(控件的id)  
        Button  button;
    
    
    Fragment
    
      1.在Fragment的類上 @ContentView(R.layout.xxx) 
      2.Fragment的onCreateView中進行初始化    View view =  x.View().inject(Fragment,LayoutInflater,Viewgroup); 
          3.onCreateView中返回  x.view返回的View
      4.    
     @ViewInJect(控件的id)  
     Button  button;
    

    Adapter
    1.創建ViewHodler

          2.@ViewInJect(控件的id)  
     Button  button;
          3.getView中初始化ViewHolder  
      4.ViewHolder綁定 x.view().inject(ViewHolder,convertView);
    

    事件處理:

        1.聲明對應的方法
      -方法必須私有 private
      -方法的返回值 和 形參必須和對應的事件調用的方法 一直
       例如: buttton.setOnClickListener(new OnClickListener{   
            public void onClick(View view){
            }
        })
       仿;  private void xxx(View view)
    
    2.設置爲對應的事件
       @Event(value={需要觸發事件的控件id},type=事件的類型  默認 View.OnClickListener.class)
    

    2.xutils Imaege 圖片模塊

    默認緩存的路徑: sdcard/Android/data/包名/cache/xutil_img
    默認圖片格式:  Bitmap.Config.RGB_565
    

    默認是否加載gif圖片:ignoreGif = true 不加載

    x.image().bind(imageView, url, imageOptions);

    // assets file
    x.image().bind(imageView, “assets://test.gif”, imageOptions);

    // local file
    x.image().bind(imageView, new File(“/sdcard/test.gif”).toURI().toString(), imageOptions);
    x.image().bind(imageView, “/sdcard/test.gif”, imageOptions);
    x.image().bind(imageView, “file:///sdcard/test.gif”, imageOptions);
    x.image().bind(imageView, “file:/sdcard/test.gif”, imageOptions);

    x.image().bind(imageView, url, imageOptions, new Callback.CommonCallback() {…});
    x.image().loadDrawable(url, imageOptions, new Callback.CommonCallback() {…});
    x.image().loadFile(url, imageOptions, new Callback.CommonCallback() {…});

    3.xutils 網路請求模塊

    參數1:請求方式 HttpMethod.GET
    參數2:請求的參數
    創建 構造方法中 指定請求的路徑
    RequestParams params = new RequestParams(“http://10.10.154.67/HttpServlet/pic/HelloServlet?fileName=s.rar“);

        params.addParams(key,values);
    
    上傳文件: 
    params.setMultipart(true);  //多部分上傳 
        key: web後臺和你協商 jpg  file  rar
    value:要上傳的文件 
    
    //設置下載保存的路徑
        params.setSaveFilePath(Environment.getExternalStorageDirectory()+File.separator+"xx.rar");
    

    參數3: CallBack
    1.CommonCallBack

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章