提取局部变量:Ctrl+Alt+V 提取全局变量:Ctrl+Alt+F 提取方法:Shit+Alt+M
快捷解小心被QQ,搜狗输入法,有道词典占用
变量抽取放到统一地方
xml选择器
对于颜色选择也可抽取放到values/color.xml
图片与文字的距离抽取
封装重复的部分 style="@style/main_tab_rb_style"
浮点按钮
添加依赖
最好版本一致
//设置在底部导航栏上
android:layout_above="@+id/fl_main_bottom"
绑定控件 参考 https://github.com/JakeWharton/butterknife
添加“集成库”依赖
implementation 'com.jakewharton:butterknife:10.2.1'annotationProcessor 'com.jakewharton:butterknife-compiler:10.2.1'
工程下添加仓库路径
插件
(1)
自动生成,可设置点击事件
注解
元注解:基本注解,可应用其他注解之上
自定义注解
修改
@Retention(RUNTIME) //性能相对没有CLASS要好,运行时注解
@Target(TYPE) //类 接口,注解
public @interface ViewInject {int mainLayout() default -1;//默认为-1
}
@Retention :注解保留期
RetentionPolicy.SOURCE:只在源码中保存,编译之后就被抛弃掉了,只起到一个,如:@Override重写内部
@Retention(CLASS):注解只被保留到编译运行的时候,它并不会被加载到JVM中
@Retention(RUNTIME):注解可保留到程序运行的时候,它会被加载进入到JVM中,所以程序运行的时候可以获取到他们
@Target :作用域
ElementType.ANNOTATION_TYPE 给注解一个注解
ElementType.CONSTRUCTOR 给构造方法一个注解
ElementType.FIELD 给属性注解
ElementType.LOCAL_VARIABLE 给局部变量进行注解
ElementType.METHOD 给方法注解
ElementType.PACKAGE 给包注解
ElementType.PARAMETER 方法类的参数注解
ElementType.TYPE 给一个类型进行注解,比如,类,接口,枚举
在Activity中调用
@ViewInject(mainLayout = R.layout.activity_main)
//在类上面
但仍然不可使用,可使该类继承BaseActivity,由
public class BaseActivity extends AppCompatActivity {@Overrideprotected void onCreate(@Nullable Bundle savedInstanceState) {super.onCreate(savedInstanceState);ButterKnife.bind(this);//ctrl+alt+F全局变量//:Ctrl+Alt+V局部变量ViewInject annotation = this.getClass().getAnnotation(ViewInject.class);if (annotation != null) {int mainLayoutId = annotation.mainLayoutId();if (mainLayoutId > 0) {setContentView(mainLayoutId);} else {throw new RuntimeException("mainLayoutId<0");}} else {throw new RuntimeException("annotation = null");}}
}
运行测试时出现
API配置 参考 https://blog.csdn.net/weixin_41101173/article/details/79620490
版本过高,出错参考 https://blog.csdn.net/onlymoon_gy/article/details/80080623
动画
参考 https://www.jianshu.com/p/420629118c10
(0,0)点
运行