栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

Android自定义View学习记录

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

Android自定义View学习记录

目录

1、自定义View---onMeasure

2、 自定义View-----onTouchEvent

 3、自定义View----onDraw

4、自定义View-----自定义属性 


1、自定义View---onMeasure
//获取控件宽高的模式
int widthMode = MeasureSpec.getMode(widthMeasureSpec);
int heightMode = MeasureSpec.getMode(heightMeasureSpec);
MeasureSpec.AT_MOST-----wrap_content
MeasureSpec.EXACTLY------确切的值,在布局中指定了确切的值,(100dp、match_parent)
MeasureSpec.UNSPECIFIED---尽可能的大,未指定模式,当前组件,可以随便用空间,不受限制(ListView,ScrollView)
widthMeasureSpec、heightMeasureSpec----32位的值(int是32位),前2位是模式,后30位是尺寸
-------------MeasureSpec.makeMeasureSpec-------------
// https://gitee.com/jinnian28_admin/AndroidStudy/blob/master/app/src/main/java/com/jin/study/view/CustomListView.java
最高两位是00的时候表示"未指定模式"。即MeasureSpec.UNSPECIFIED
最高两位是01的时候表示"'精确模式"。即MeasureSpec.EXACTLY
最高两位是10的时候表示"最大模式"。即MeasureSpec.AT_MOST
//这个是由我们给出的尺寸大小和模式生成一个包含这两个信息的int变量:size是30位数的尺寸,mode定义heightMode打的模式
public static int makeMeasureSpec(int size, int mode) 
//这个是得到这个变量中表示的模式信息。
public static int getMode(int measureSpec) 
//这个是得到这个变量中表示的尺寸大小的值。
public static int getSize(int measureSpec) 
//把这个变量里面的模式和大小组成字符串返回来,方便打日志
 public static String toString(int measureSpec)

2、 自定义View-----onTouchEvent
     
      return super.onTouchEvent(event);--交给父类处理
      return false;----只调用ACTION_DOWN,ACTION_UP方法,不响应ACTION_MOVE等方法
      return true;
        ----false只响应按下事件,滑动事件不进行响应与监听(view处理);true则全部响应与监听(自己处理)。
    具体查看ViewGroup的dispatchTouchEvent的2794行“ while (target != null) ”

 3、自定义View----onDraw
@Override
protected void onDraw(Canvas canvas) {
    super.onDraw(canvas);
  //绘制文本
    canvas.drawText();
//绘制弧
    canvas.drawArc();
//绘制圆
    canvas.drawCircle();
}

4、自定义View-----自定义属性 
declare-styleable--固定

    
    
    
    
    //
//    
 //   枚举属性只需指定 name,然后用 enum 标签 指定所有可能属性的 name和value(注:value只能为int型)
    
        
        
        
    


第一个与第二个构造函数需要使用this


使用方法
private String mText;
private int mTextSize = 15;
private int mTextColor = Color.BLACK;

TypedArray array = context.obtainStyledAttributes(attrs, R.styleable.CustomTextView[自定义的style名称]);
mText = array.getString(R.styleable.CustomTextView_customText);
mTextColor = array.getColor(R.styleable.CustomTextView_customTextColor,mTextColor);
mTextSize = array.getDimensionPixelSize(R.styleable.CustomTextView_customTextSize,mTextSize);
//回收
array.recycle();

学习代码-github https://github.com/jinnian-28/AndroidStudyhttps://github.com/jinnian-28/AndroidStudy
giteehttps://gitee.com/jinnian28_admin/AndroidStudyhttps://gitee.com/jinnian28_admin/AndroidStudy         (CustomListView 与 CustomTextView)

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/490643.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号