android代码实现tint,代码View,Model层设计的思考

来源:互联网 发布:汉诺塔递归算法java 编辑:程序博客网 时间:2024/06/18 18:54

android代码实现tint,代码View,Model层设计的思考

使用代码实现tint

  • 使用业务场景:点赞功能的已点赞状态,设计师那块还没有给图片,只能先用tint凑合了
imageView.setColorFilter(Color.argb(255, 255, 255, 255));// 我使用的是Color.argb(255, 248, 185, 56);
  • 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));...@Overridepublic 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只负责显示数据。