Android开发——CustomView(扩展视图、组合视图)

Android开发——CustomView(扩展视图、组合视图)

自定义View:
    扩展控件。
对控件已有功能的一个扩展,使其适应项目需求
         例子:
可以下载图片的自定义
ImageView
1.继承ImageView
2.添加下载功能
效果图:

 自定义属性:
1.values文件夹下面的任意文件里面
声明一个属性:
declare-styleable
这个属性,就是自定义属性集合,里面可以放多个属性。
有一个
name,需要设置为自定义View的名字
2.declare-styleable里面,声明控件需要的属性:
<attr name="" format=""/>
有多种属性,按需求选择
3.在布局文件中使用:
需要自己添加,命名控件:
xmlns:xxxxx="http://schemas.android.com/apk/res-auto"

在对应的控件里面,设置自定义的属性:
xxxxx.attrname=""即可使用

4.获取到自定义属性的值:
context.obtainStyleAttributes(attrs,R.styleable.属性集合的名字);
typeArray里面保存了你声明的属性的值
typeArray.get...(R.styleable.属性结合的名字_属性的名字[,defValue]);
自定义View实现购物车的加减功能:
 设计思路:
                              (1)继承线性布局
                              (2)添加自己需要的控件(2个ImageButton,1个EditText)
                              (3)处理相应的点击事件

                               效果图:
自定义View实现流式布局:(热门标签、搜索历史等)

                    效果图:
 
 设计思路:
                              (1)继承ViewGoup
                              (2)onMeasure()方法中测量宽高,测量子View的宽高,设定自己的宽高
                              (3)onLayout()摆放子控件的位置
源码稍后放出:
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Android Studio 中,视图的测量方法是通过重写视图的 `onMeasure()` 方法来实现的。`onMeasure()` 方法用于确定视图在父容器中的大小。 在自定义视图中,你可以重写 `onMeasure()` 方法,并在其中调用 `setMeasuredDimension()` 方法来设置视图的宽度和高度。 下面是一个示例: ```java public class CustomView extends View { // ... @Override protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) { // 调用父类的onMeasure()方法获取建议的宽度和高度 super.onMeasure(widthMeasureSpec, heightMeasureSpec); // 解析宽度和高度的测量模式和大小 int widthMode = MeasureSpec.getMode(widthMeasureSpec); int widthSize = MeasureSpec.getSize(widthMeasureSpec); int heightMode = MeasureSpec.getMode(heightMeasureSpec); int heightSize = MeasureSpec.getSize(heightMeasureSpec); // 根据测量模式调整视图的大小 int width, height; if (widthMode == MeasureSpec.EXACTLY) { // 宽度为精确值 width = widthSize; } else { // 宽度为自适应或包裹内容 // TODO: 根据需要计算宽度 width = ...; } if (heightMode == MeasureSpec.EXACTLY) { // 高度为精确值 height = heightSize; } else { // 高度为自适应或包裹内容 // TODO: 根据需要计算高度 height = ...; } // 设置测量后的宽度和高度 setMeasuredDimension(width, height); } // ... } ``` 在 `onMeasure()` 方法中,你可以根据需要计算视图的宽度和高度,并使用 `setMeasuredDimension()` 方法设置测量后的宽度和高度。其中,测量模式有三种:`MeasureSpec.EXACTLY` 表示精确值,`MeasureSpec.AT_MOST` 表示自适应或包裹内容,`MeasureSpec.UNSPECIFIED` 表示没有限制。 请根据你的实际需求进行相应的计算和设置。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值