美文网首页
安卓自定义 View 启航

安卓自定义 View 启航

作者: acc8226 | 来源:发表于2022-06-18 09:17 被阅读0次

先总结下自定义 View 的步骤:

  1. 自定义 View 的属性
  2. 在 View 的构造方法中获得我们自定义的属性
  3. [重写 onMeasure]
  4. 重写 onDraw

我把3用[]标出了,所以说3不一定是必须的,当然了大部分情况下还是需要重写的。

  1. 自定义 View 的属性,首先在 res/values/ 下建立一个attrs.xml , 在里面定义我们的属性和声明我们的整个样式。
<?xml version="1.0" encoding="utf-8"?>
<resources>

    <attr name="titleText" format="string" />
    <attr name="titleTextColor" format="color" />
    <attr name="titleTextSize" format="dimension" />

    <declare-styleable name="CustomTitleView">
        <attr name="titleText" />
        <attr name="titleTextColor" />
        <attr name="titleTextSize" />
    </declare-styleable>

</resources>

format是值该属性的取值类型:
string, color, demension, integer, enum, reference, float,boolean, fraction, flag;不清楚的可以google

自定义View之基础概念之用到的六个工具

  • Configuration

  • ViewConfiguration
    提供了一些自定义控件用到的标准常量, 比如UI超时, 尺寸大小, 滑动距离, 敏感度等等


  • GestureDetector
    简化Touch操作

  • VelocityTracker
    用于跟踪触摸屏事件(比如: Flingling以及其他手势事件)的速率

mVelocityTracker = VelocityTracker.obtain();
mVelocityTracker.addMovement(MotionEvent event);

// 获取1000毫秒内运行的像素
mVelocityTracker.computeCurrentVeleocity(1000)

// 获取1S内 X 方向上移动的像素
mVelocityTracker.getXVelocity()

// 最后记得释放
mVelocityTracker.recycle()
  • Scroller
    scrollBy() 内部还是调用了scrollTo()
    scrollTo() 和 scrollBy()

mTextView.scrollTo(0, 25)

  • ViewDragHelper
    简化View的拖拽操作
ViewDragHelper mViewDragHelper = ViewDragHelper.create(context, 1.0f, new ViewDragHelper.Callback(){
    clampViewPositionHorizontal(View child, int left, int dx)
    clampViewPositionVertical(View child, int left, int dx)
    onViewDragStateChanged(int state){
      ViewDragHelper.STATE_DRAGGING:
      ViewDragHelper.STATE_IDLE:
      ViewDragHelper.STATE_SETTLING:
    }
}

然后代理两个方法

```java
public boolean onINterrceptTouchEvent(MotionEvent ev) {
  return mViewDragHelper.shouldInterceptTouchEvent(ev);
}

public boolean onTouchEvent(MotionEvent ev) {
  mViewDragHelper.processTouchEvent(ev);
  return true;
}
int specMode = MeasureSpec.getMode(measureSpec);
int specSize = MeasureSpec.getSize(measureSpec);

int measureSpec = MeasureSpec.makeMeasureSpec(size, mode);

相关文章

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

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

  • 安卓自定义View教程-1

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

  • [转]自定义View的学习

    原文连接 如何关闭硬件加速 自定义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 启航

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