編輯:關於Android編程
對應的源碼:
net.tsz.afinal.annotation.view.*
FinalActivity
FinalActivity是一個基礎類,結合注解實現了,依賴注入(view的資源id,常用的監聽器), 利用set方式注入
完全注解方式就可以進行UI綁定和事件綁定,無需findViewById和set event Listener
這個過程:initInjectedView>findViewById、setListener(activity, activity.field, eventLocalMethod, eventType)>
1.根據id得到view對象,設置到activity對應的field中
2. switch(eventType) {
case event:
view.set event listener(new EventListener(activity, eventLocalMethod));
EventListener implements many event listener>
在對應的event的重寫方法中,反射調用eventLocalMethod
這些eventLocalMethod 的參數需要與 對應的系統 event method 的參數一致
...
}
注解有哪些類型:
@Target(ElementType.FIELD)
@Retention(RetentionPolicy.RUNTIME)
public @interface ViewInject {
public int id();
public String click() default ;
public String longClick() default ;
public String itemClick() default ;
public String itemLongClick() default ;
public Select select() default @Select(selected=) ;
}
調用注解:
package com.stone.afinal;
import net.tsz.afinal.FinalActivity;
import net.tsz.afinal.annotation.view.Select;
import net.tsz.afinal.annotation.view.ViewInject;
import android.os.Bundle;
import android.view.View;
import android.widget.AdapterView;
import android.widget.ImageView;
import android.widget.ListView;
public class MainActivity extends FinalActivity {
@ViewInject(
id = R.id.imageview,
click = myClick,
longClick = myLongClick)
ImageView imageview;
@ViewInject(
id = R.id.listview,
click = myClick,
itemLongClick = myItemLongClick,
itemClick = myItemClick,
longClick = myLongClick,
select = @Select(selected=myItemSelected, noSelected=myNoSelected))
ListView listView;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);//繼承FinalActivity,setContentView中初始化了
}
public void myClick(View v) {
System.out.println(--myClick--);
}
public void myLongClick(View v) {
System.out.println(--myLongClick--);
}
public void myItemLongClick(AdapterView arg0, View arg1, int arg2,long arg3) {
System.out.println(--myItemLongClick--);
}
public void myItemClick(AdapterView arg0, View arg1, int arg2, long arg3) {
System.out.println(--myItemClick--);
}
public void myItemSelected(AdapterView arg0, View arg1, int arg2,long arg3) {
System.out.println(--myItemSelected--);
}
public void myNoSelected(AdapterView arg0) {
System.out.println(--myNoSelected--);
}
}
在其他侵入式框架下使用(如ActionBarShelock)
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(view);
FinalActivity.initInjectedView(this);
}
在Fragment中使用
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
View viewRoot = inflater.inflate(R.layout.map_frame, container, false);
FinalActivity.initInjectedView(this,viewRoot);
}
Android仿微信對話列表滑動刪除效果
微信對話列表滑動刪除效果很不錯的,借鑒了github上SwipeListView(項目地址:https://github.com/likebamboo/SwipeList
android筆記3——項目文件結構說明
以下是andoid項目文件結構圖,常用操作部分已經用矩形框標注好了。。 接下來,我們隊每一個文件夾或者文件說明一下: public static final cl
Android 自定義Progressbar,任何圖片都能當成progressbar轉動起來
今天群裡邊有人問怎麼自定義Android holo主題下的Progressbar; 我想到之前做過自定義Progressbar,通過自己寫動畫和Style可以用任何圖片當
Android編程之界面跳動提示動畫效果實現方法
本文實例講述了Android編程之界面跳動提示動畫效果實現方法。分享給大家供大家參考,具體如下:上一個效果圖:先上布局:<RelativeLayout xmlns: