編輯:關於Android編程
Android中通過findViewById在布局文件中找到需要的View,加入一個Activity裡面有許多的View需要初始化,那將是一件很繁瑣的事情。當然Google一下你會發現有很多Android Annotations框架。比如比較有名的“Android Annotations”,這樣的框架很復雜,用起來也比較麻煩,還有一些BUG,第一次使用也花費了不少時間研究。也許你在項目中只希望用到 Inject View這個功能,又或者你想知道這個實現的原理是怎樣的。本文主要是解決這兩個問題,實現一個最簡單的ViewInject.
原理是在Activity加載好後通過找到Activity中使用注解的字段,再通過Java反射的方式,動態的給這個字段設置值。
/**
* view inect by id
*
* @author Lucky
*
*/
@Target(ElementType.FIELD)//表示用在字段上
@Retention(RetentionPolicy.RUNTIME)//表示在生命周期是運行時
public @interface ViewInject {
int value() default 0;
}
/**
*
* @author Lucky
*
*/
public abstract class BaseActivity extends FragmentActivity {
/**
* get content view layout id
*
* @return
*/
public abstract int getLayoutId();
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(getLayoutId());
autoInjectAllField();
}
/**
* 解析注解
*/
public void autoInjectAllField() {
try {
Class> clazz = this.getClass();
Field[] fields = clazz.getDeclaredFields();//獲得Activity中聲明的字段
for (Field field : fields) {
// 查看這個字段是否有我們自定義的注解類標志的
if (field.isAnnotationPresent(ViewInject.class)) {
ViewInject inject = field.getAnnotation(ViewInject.class);
int id = inject.value();
if (id > 0) {
field.setAccessible(true);
field.set(this, this.findViewById(id));//給我們要找的字段設置值
}
}
}
} catch (IllegalAccessException e) {
e.printStackTrace();
} catch (IllegalArgumentException e) {
e.printStackTrace();
}
}
}public class TestActivity extends BaseActivity {
@ViewInject(R.id.claim_statement)
private WebView mWebView;
@Override
public int getLayoutId() {
// TODO Auto-generated method stub
return R.layout.activity_claim;
}
}
1、/kf/201405/302998.html
詳解Android中解析XML的方法
XML在各種開發中都廣泛應用,Android也不例外。作為承載數據的一個重要角色,如何讀寫XML成為Android開發中一項重要的技能。今天就由我向大家介紹一下在Andr
android M 新控件TabLayout 方便快捷實現選項卡功能
1、概述TabLayout是在2015年的google大會上,google發布了新的Android Support Design庫的新組件之一,以此來全面支持Materi
從源碼角度理解android動畫Interpolator類的使用
做過android動畫的人對Interpolator應該不會陌生,這個類主要是用來控制android動畫的執行速率,一般情況下,如果我們不設置,動畫都不是勻速執行的,系統
Android解析XML的三種方式SAX、Pull、Dom
在android開發中,經常用到去解析xml文件,常見的解析xml的方式有一下三種:SAX、Pull、Dom解析方式。最近做了一個android版的CSDN閱讀器,用到了