編輯:關於Android編程
嗯,本來說好今天不寫的,還是寫吧,畢竟難得空閒哈~,本節給大家帶來的是
ColorFilter的第三個子類:PorterDuffColorFilter,看到PorterDuff大家一定不會
陌生吧,假如你看過前面的
Android基礎入門教程——8.3.5 Paint API之—— Xfermode與PorterDuff詳解(二)
其實效果都是一樣的,只是這裡用的是顏色,而且直接設置就好,下面我們來寫個簡單的
例子,我們取6種不同的顏色,對18種模式進行測試!
官方API文檔:PorterDuffColorFilter
我們可以看到關鍵也是在於他的構造方法:前面是顏色,後面是模式~,來來來,寫例子:
運行效果圖:
代碼實現:
這裡的話我們用一個GridView來裝他們,我們先來寫下每個item的布局:view_item.xml:
接著我們編寫一個POJO業務類:Data.java:
/**
* Created by Jay on 2015/10/29 0029.
*/
public class Data {
private int color;
private PorterDuff.Mode mode;
public Data() {
}
public Data(int color, PorterDuff.Mode mode) {
this.color = color;
this.mode = mode;
}
public int getColor() {
return color;
}
public PorterDuff.Mode getMode() {
return mode;
}
public void setColor(int color) {
this.color = color;
}
public void setMode(PorterDuff.Mode mode) {
this.mode = mode;
}
}
至於Adapter類的話我們用回以前寫的可復用的自定義BaseAdapter類,這裡就不貼了,不過要加
多個方法:
/**
* 設置ColorFilter
* */
public ViewHolder setColorFilter(int id,int color,PorterDuff.Mode mode){
View view = getView(id);
if (view instanceof ImageView) {
((ImageView) view).setColorFilter(color,mode);
}
return this;
}
接著是我們的主布局文件:activity_main.xml:
最後是我們的MainActivity.java類,填充數據,設置Adapter,非常簡單:
public class MainActivity extends AppCompatActivity {
private GridView gd_show;
private ArrayList items = null;
private MyAdapter myAdapter = null;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
gd_show = (GridView) findViewById(R.id.gd_show);
//填充數據,遍歷Mode模式:
items = new ArrayList();
for (PorterDuff.Mode mode : PorterDuff.Mode.class.getEnumConstants()) {
items.add(new Data(0x77E50961, mode));
items.add(new Data(0xFFE50961, mode));
items.add(new Data(0x77FFFFFF, mode));
items.add(new Data(0xFFFFFFFF, mode));
items.add(new Data(0x77000000, mode));
items.add(new Data(0xFF000000, mode));
}
myAdapter = new MyAdapter(items, R.layout.view_item) {
@Override
public void bindView(ViewHolder holder, Data obj) {
holder.setColorFilter(R.id.img_show, obj.getColor(), obj.getMode());
holder.setText(R.id.tv_color, String.format(%08X, obj.getColor()));
holder.setText(R.id.tv_mode, obj.getMode().toString());
}
};
gd_show.setAdapter(myAdapter);
}
}
上面的動圖可能太快,有時讀者相查下,這裡分開圖截,因為沒找到好用的截全屏工具,
所以這裡只能分段截…
上上周寫的一個demo,仿照網易一元奪寶的下拉刷新效果。原效果是(第一部分)一個小太陽拉下來,然後松開回彈上去,(第二部分)再掉下來一個硬幣進行中軸旋轉。本文實現的效果的
使用數據庫實現對數據的存儲。 下面上一個小例子,寫日記。 效果如下: 當LIstView中沒有數據顯示時,我們需要告訴用戶沒有數據.
Widget引入 我們可以把Widget理解成放置在桌面上的小組件(掛件),有了Widget,我們可以很方便地直接在桌面上進行各種操作,例如播放音樂。 
ListView是Android開發中比較常用的一個組件,它以列表的形式展示信息,並能根據信息的長度自適應顯示。比如說我們手機裡的通訊錄就用到了ListView顯示聯系人