天天看點

android代碼實作tint,代碼View,Model層設計的思考 android代碼實作tint,代碼View,Model層設計的思考

android代碼實作tint,代碼View,Model層設計的思考

使用代碼實作tint

  • 使用業務場景:點贊功能的已點贊狀态,設計師那塊還沒有給圖檔,隻能先用tint湊合了
imageView.setColorFilter(Color.argb(, , , ));

// 我使用的是Color.argb(, , , );           
  • 1
  • 2
  • 3
  • 1
  • 2
  • 3
  • 有關知識點:255, 255, 255, 255(FFFFFFF), 就是完全不透明的純白
  • 十六進制中前兩位代表着透明度。即00-FF (完全透明-完全不透明)

setTag在onClickListener時的妙用

viewHolder.ivLike.setTag(viewHolder);
viewHolder.ivLike.setOnClickListener(new LikeClickListener(context, beeMessage));

...

@Override
public void onClick(View v) {
            ImageView ivLike = (ImageView) v;
            MessageViewHolder viewHolder = (MessageViewHolder) ivLike.getTag();
}           
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 這樣寫可以避免把為viewholder加入final修飾符,使viewholder的複用收到限制
  • 充分利用了setTag方法,利用onClick傳入的view對象

代碼View,Model層設計的幾點想法

  • 遵循MVC原則,Model層隻提供原始的資料,不要改變類型,不要在Model層進行簡化,加工
  • 把簡化加工的工作交給Util工具類來作
  • 我以前在model中将int轉換為String類型以友善在adapter中settext中不使用util,但後來發現這樣雖然節省了編寫util的時間,但是以後會出現難以預料的問題
  • 比如我出現的問題就是資料頻繁在string與int中轉換,最後資料居然改變了
  • 是以,原始的資料不應該在view層變動,model層隻提供資料,util負責轉換資料,view隻負責顯示資料。