美文网首页
android 自定义控件的几种模式

android 自定义控件的几种模式

作者: lilin9105 | 来源:发表于2016-07-27 16:22 被阅读263次

    业务场景:

    1、项目中有很多模块界面长的相同;为了减少工作量,我们可能需要自定义View;
    2、有些模块使用的控件通用如分享弹出控件、Dialog弹出控件
    3、业务复杂的模块(对扩展性要求较高):播放器、表情输入控件、图片浏览器
    

    方案:

    1、最简单的就是继承FrameLayout、RelativeLayout、LinearLayout、View来扩展功能暴露接口
    2、继承Dialog、popwindow做功能
    3、直接写个帮助类

    如果控件的业务不复杂,对于1、3的方式总觉得有点麻烦;一个帮助类不同的方法界面实现的代码还是差不多的,只是的数据不同;如果要扩展还需要复制一份代码来改改数据

    BaseViewHoldModle模板

    public abstract class BaseViewHoldModle<Date> { 
       protected Date mDate; 
       protected View rootView;  
      //生成View  
      public abstract View createView(Context context);  
      //设置数据  
      public void setViewData(Date data){
          this.mDate = data;  
      }
    }
    

    实例代码

    public class SystemTipHolder extends BaseViewHoldModle<String> {
        @Override
        public View createView(Context context) {
            rootView = View.inflate(context, R.layout.row_message_systemtip, null);//返回系统错误视图
            return rootView;
        }
    
        @Override
        public void setViewData(String data) {
            super.setViewData(data);
            TextView mTextView = (TextView)rootView.findViewById(R.id.txt_apply_cancel);
            mTextView.setText(data);
        }
    }
    
    
    SystemTipHolder mSystemTipHolder = new SystemTipHolder();
    messageView = mSystemTipHolder.createView(context);
    mSystemTipHolder.setViewData(context.getString(R.string.cancle_order_apply));
    addView(messageView);
    

    相关文章

      网友评论

          本文标题:android 自定义控件的几种模式

          本文链接:https://www.haomeiwen.com/subject/ykbojttx.html