美文网首页
安卓自定义View

安卓自定义View

作者: 咕噜咕噜_f443 | 来源:发表于2019-07-22 12:43 被阅读0次

1.自定义View简介

自定义View可以认为继承自View,系统没有的效果(ImageView,TextView,Button),extends View, extends ViewGroup

自定义一个系统的TextView,自定义View入门

2.onMeasure()

// 获取宽高的模式

int widthMode = MeasureSpec.getMode(widthMeasureSpec); // 获取前两位

int heightMode = MeasureSpec.getMode(heightMeasureSpec);

// 获取宽高的值

int widthSize = MeasureSpec.getSize(widthMeasureSpec); // 获取后面30位

int heightSize = MeasureSpec.getSize(heightMeasureSpec);

MeasureSpec.AT_MOST : 在布局中指定了wrap_content 

MeasureSpec.EXACTLY : 在不居中指定了确切的值  100dp  match_parent  fill_parent

MeasureSpec.UNSPECIFIED : 尽可能的大,很少能用到,ListView , ScrollView 在测量子布局的时候会用UNSPECIFIED

ScrollView + ListView 会显示不全问题,

widthMeasureSpecwidthMeasureSpec : 会包含两个信息是一个32位的值,第一个信息是模式:2位  值:30位 

3.onDraw() 

    /**

    * 用于绘制

    * @param canvas

    */

    @Override

    protected void onDraw(Canvas canvas) {

        super.onDraw(canvas);

        // 画文本

        canvas.drawText();

        // 画弧

        canvas.drawArc();

        // 画圆

        canvas.drawCircle();

    }

4.onTouch()  分析源码

/**

    * 处理跟用户交互的,手指触摸等等

    * @param event 事件分发事件拦截

    * @return

    */

    @Override

    public boolean onTouchEvent(MotionEvent event) {

        switch (event.getAction()){

            case MotionEvent.ACTION_DOWN:

                // 手指按下

                Log.e("TAG","手指按下");

                break;

            case MotionEvent.ACTION_MOVE:

                // 手指移动

                Log.e("TAG","手指移动");

                break;

            case MotionEvent.ACTION_UP:

                // 手指抬起

                Log.e("TAG","手指抬起");

                break;

        }

        return super.onTouchEvent(event);

    }

5.自定义属性

自定义属性就是用来配置的,android:text="Darren"

是系统的一个自定义属性

5.1 在res下的values下面新建attrs.xml

<resources>

    <!--name 自定义View的名字 TextView-->

    <declare-styleable name="TextView">

        <!-- name 属性名称

        format 格式: string 文字  color 颜色

                    dimension 宽高 字体大小  integer 数字

                    reference 资源(drawable)

        -->

        <attr name="text" format="string"/>

        <attr name="textColor" format="color"/>

        <attr name="textSize" format="dimension"/>

        <attr name="maxLength" format="integer"/>

        <attr name="background" format="reference|color"/>

        <!-- 枚举 -->

        <attr name="inputType">

            <enum name="number" value="1"/>

            <enum name="text" value="2"/>

            <enum name="password" value="3"/>

        </attr>

    </declare-styleable>

</resources>

5.1 在布局中使用

声明命名空间,然后在自己的自定义View中使用

xmlns:app="http://schemas.android.com/apk/res-auto"

<com.darren.view_day01.TextView

        app:text="Darren"

        app:textColor="@color/colorAccent"

        android:layout_width="wrap_content"

        android:layout_height="wrap_content" />

5.3 在自定义View中获取属性

        // 获取自定义属性

        TypedArray array = context.obtainStyledAttributes(attrs, R.styleable.TextView);

        mText = array.getString(R.styleable.TextView_text);

        mTextColor = array.getColor(R.styleable.TextView_textColor, mTextColor);

        // 15 15px 15sp

        mTextSize = array.getDimensionPixelSize(R.styleable.TextView_textSize,mTextSize);

        // 回收

        array.recycle();

相关文章

  • 学习自定义View的一些文章

    安卓自定义View基础:坐标系 安卓自定义View基础:角度弧度 安卓自定义View基础:颜色 Android自定...

  • 安卓自定义View教程-1

    基础篇 安卓自定义View基础 - 坐标系 安卓自定义View基础 - 角度弧度 安卓自定义View基础 - 颜色...

  • [转]自定义View的学习

    原文连接 如何关闭硬件加速 自定义View 基础篇 安卓自定义View基础 - 坐标系 安卓自定义View基础 -...

  • 自定义View教程目录

    参考安卓自定义View教程目录

  • 安卓画笔setShadowLayer与SetMaskFilter

    安卓自定义 View 踩坑笔记,特作文记录 安卓 Paint 类用于自定义 View 时↑这两个方法能用来干嘛我就...

  • Android View的滑动方式

    自定义View是安卓进阶的基础,是安卓开发者不得不学习的知识点,而酷炫的自定义View效果也是离不开View的滑动...

  • Android Touch System(一)

    前言 之前写了一篇文章是关于自定义控件的。在学习自定义view的时候顺便把安卓的touch system(安卓触摸...

  • android开发之简单的自定义view

    自定义view是安卓开发进阶中的重要阶段。所以想在这方面多花些时间看看,写写。 自定义view的步骤: 1、自定义...

  • 自定义View之组合View

    前言 自定义View是安卓开发中比较重要的一环,很多地方都需要用到自定义View。而自定义View比较常见的一种形...

  • 自定义View-初体验

    本篇主要面向初学者,已熟悉自定义 View 的童鞋可以飘过了。 自定义 View 很难么? 刚学习安卓不久后,也会...

网友评论

      本文标题:安卓自定义View

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