註解與抽取基類
1.首先要在專案的build裡
dependencies {
classpath 'com.jakewharton:butterknife-gradle-plugin:8.4.0'
}其次新增依賴
compile 'com.jakewharton:butterknife:8.4.0'
annotationProcessor 'com.jakewharton:butterknife-compiler:8.4.0'
在最上新增
apply plugin: 'com.jakewharton.butterknife'
defaultConfig {
testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
}
buildTypes { release { minifyEnabled false proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro' } }
2.封裝的
public class MainActivity extends BaseActivity { @BindView(R.id.btn1) Button btn1; @BindView(R.id.btn2) Button btn2; @Override protected void initView() { } @Override protected void initData() { } @Override protected int bindLayoutId() { return R.layout.activity_main; } @OnClick({R.id.btn1,R.id.btn2}) public void a(View view){ switch (view.getId()){ case R.id.btn1: showToast("btn1"); break; case R.id.btn2: showToast("btn2"); break; } } }
2.主方法
public abstract class BaseActivity extends AppCompatActivity{ private final String TAG = BaseActivity.class.getSimpleName(); protected Unbinder unbinder; @Override protected void onCreate(@Nullable Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(bindLayoutId()); unbinder = ButterKnife.bind(this); initView(); initData(); } /** * 初始化view */ protected abstract void initView(); /** * 初始化資料 */ protected abstract void initData(); /** * 根佈局id * @return */ protected abstract int bindLayoutId(); /** * 顯示toast * @param msg */ public void showToast(String msg){ Toast.makeText(this,msg,Toast.LENGTH_SHORT).show(); } /** * 無值傳遞跳轉 * @param cls */ public void startActivity(Class<? extends Activity> cls){ Intent intent = new Intent(this,cls); startActivity(intent); } /** * 有值傳遞跳轉 * @param cls */ public void startActivity(Bundle bundle,Class<? extends Activity> cls){ Intent intent = new Intent(this,cls); intent.putExtras(bundle); startActivity(intent); } /** * 是否 * @param flag */ public void isFullScreen(boolean flag){ if(flag){ // TODO: 2018/6/7 全屏的程式碼 getWindow().setFlags( WindowManager.LayoutParams.FLAG_FULLSCREEN, WindowManager.LayoutParams.FLAG_FULLSCREEN); }else { // TODO: 2018/6/7 fei } } @Override protected void onDestroy() { super.onDestroy(); if(unbinder != null){ unbinder.unbind(); //解綁 } } }
3.5佈局
<LinearLayout android:orientation="vertical" android:layout_width="match_parent" android:layout_height="match_parent" > <Button android:id="@+id/btn1" android:layout_width="wrap_content" android:layout_height="wrap_content"/> <Button android:id="@+id/btn2" android:layout_width="wrap_content" android:layout_height="wrap_content"/> </LinearLayout>
相關文章
- Java列舉類與註解詳解——一篇文章讀懂列舉類與註解詳Java
- 註解類
- 基於註解的 PHP 列舉類實現PHP
- 基於Label studio實現UIE資訊抽取智慧標註方案,提升標註效率!UI
- Java基礎(十)——列舉與註解Java
- Java 註解與註解處理器基礎總結與實操步驟分析Java
- 03-Java核心類庫_列舉、註解與反射Java反射
- Java註解-後設資料、註解分類、內建註解和自定義註解Java
- 註解基礎
- 工具類 :@RequestMapping 路由註解APP路由
- Day69.註解&列舉類的複習 -Java註解&列舉類Java
- 註解與反射反射
- Java基礎——註解Java
- Spring Boot配置類的註解Spring Boot
- Java註解解析-基礎+執行時註解(RUNTIME)Java
- 繼承 基類與派生類繼承
- Java反射與註解Java反射
- Java列舉類、註解和反射Java反射
- 基於SpringBoot 、AOP與自定義註解轉義字典值Spring Boot
- Java註解與原理分析Java
- Java之註解與反射Java反射
- @Import與@ImportResource註解的解讀Import
- JAVA基礎-註解記錄Java
- 經典論文復現 | 基於標註策略的實體和關係聯合抽取
- 基於標註策略的實體和關係聯合抽取 | 經典論文復現
- [資訊抽取]基於ERNIE3.0的多對多資訊抽取演算法:屬性關係抽取演算法
- Python基礎-類與物件Python物件
- 論文閱讀:基於無監督整合聚類的開放關係抽取方法聚類
- TS - 裝飾器與註解
- SpringMVC:@ResponseBody註解與HttpServletResponse物件SpringMVCHTTPServlet物件
- Java註解與反射機制Java反射
- Spring IOC 常用註解與使用Spring
- Java註解與反射的使用Java反射
- myBatis——註解,#{}與${},resultMap的使用MyBatis
- javamelody與swagger註解衝突JavaSwagger
- Spring基於註解的aop配置Spring
- SpringBoot基於註解方式配置FilterSpring BootFilter
- Spring基於註解的IoC配置Spring