zoukankan      html  css  js  c++  java
  • 我的butternife

    1.butternife的使用


    下载地址:地址:https://github.com/JakeWharton/butterknife

    2.引入到自己的项目中

    在Project的build.gradle文件中添加如下代码
    buildscript {
        repositories {
            jcenter()
        }
        dependencies {
            classpath 'com.android.tools.build:gradle:2.2.0'
            classpath 'com.neenbedankt.gradle.plugins:android-apt:1.8'
            // NOTE: Do not place your application dependencies here; they belong
            // in the individual module build.gradle files
        }
    }
    在app模块下的build.gradle文件中添加如下声明
    apply plugin: 'com.neenbedankt.android-apt'

    dependencies {
        compile fileTree(dir: 'libs', include: ['*.jar'])
        androidTestCompile('com.android.support.test.espresso:espresso-core:2.2.2', {
            exclude group: 'com.android.support', module: 'support-annotations'
        })
        compile 'com.android.support:appcompat-v7:25.0.1'
        testCompile 'junit:junit:4.12'
        compile 'com.jakewharton:butterknife:8.4.0'
        apt 'com.jakewharton:butterknife-compiler:8.4.0'
    }

    在Activity中初始化
    ButterKnife.bind(this);

    3.相关的注解的说明

    bindView(R.id.控件的id)
    BindBool 绑定boll值 @BindBool(R.bool.close) boolean close;
    bindArray 绑定字符串数组资源@BindArray(R.array.strs) String[] resource;

    bindString 绑定单个字符串

    bindDrawable 绑定图片

    bindColor 绑定一个颜色

    bindBitmap 绑定drawbale

    4.事件相关的注解的说明

    @Onclick点击事件
    @OnLongclick 长按事件
    @onPageChange viewpage 的页面监听事件


        @OnPageChange(value = R.id.vp)
        public void onChangeSelect(int position){
            System.out.println("position="+position);
        }

        @OnPageChange(value = R.id.vp,callback = OnPageChange.Callback.PAGE_SCROLL_STATE_CHANGED)
        public void onPageScrollStateChanged(int state) {
            System.out.println(state);
        }

        @OnPageChange(value = R.id.vp,callback = OnPageChange.Callback.PAGE_SCROLLED)
        public void onPageScroll(int position,float positionOffset,int positionOffsetPixels) {
            System.out.println("positionOffsetPixels:"+positionOffsetPixels);
        }

    5.butternife在fragment中的使用


    public class UserInFragment extends Fragment {

        @BindView(R.id.btn)
        Button btn;

        @BindBool(R.bool.close) boolean close;

        @BindArray(R.array.strs) String[] resource;

        @Nullable
        @Override
        public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
            View view = inflater.inflate(R.layout.lay1,container,false);
            ButterKnife.bind(this,view);
            return view;
        }

        @OnClick(R.id.btn)
        public void onClick(View view){
            System.out.println("btn被点击了");
            System.out.println(resource);
        }

    }

    •  使用@BindViews初始化多个View

    • 
      
      1 @BindViews({ R.id.first_name, R.id.middle_name, R.id.last_name })
      2 List nameViews;
      View Code
      
      
    •  使用@OnClick设置监听事件

    •  1 @OnClick(R.id.submit)
       2 public void submit(View view) {
       3 
       4 }
       5 
       6 //如果不想要submit方法参数可以去掉如:
       7 @OnClick(R.id.submit)
       8 public void submit() {
       9 // TODO do something…
      10 }
      11 
      12 //View的参数还可以自动转换,比如给TextView设置点击事件
      13 @OnClick(R.id.submit)
      14 public void submit(TextView textView) {
      15 }
      16 
      17 如果是自定义的View可以不指定View Id 如:
      18 public class FancyButton extends Button {
      19 @OnClick
      20 public void onClick() {
      21 
      22 }
      23 }
    • listView item点击事件

    • view的onTouchEvent

    • 监听EditText的addTextChangedListener

    • 设置ViewPager的OnPageChangeListener

    • 设置TextView的OnEditorActionListener(该事件主要用来设置软键盘上的按钮)

    • 设置View的OnFocusChangeListener事件

    • 设置View的OnLongClickListener长按事件

    • 关于资源的绑定

  • 相关阅读:
    go语言教程零基础入门到精通
    php探针文件内容
    一篇文章揭穿创业公司的套路
    Google资深工程师深度讲解Go语言面向接口(五)
    完全解析<atlalloc.h>
    巧妙的Section — — 剖析ATL OBJECT_MAP的自动建立
    ATL中的各种CriticalSection
    C++中的INL
    如何剖析一个类
    ATL线程模型解析
  • 原文地址:https://www.cnblogs.com/uf0-java/p/6187511.html
Copyright © 2011-2022 走看看