学习自定义view

简单说说Android自定义view学习推荐的方式 这几天比较受关注,挺开心的,嘿嘿。 这里给大家总结一下学习自定义view的一些技巧。 1.首先 去看看鸿洋神的博客 Android 自定义view(1). 鸿洋神的入门教程讲的很详细。再次膜拜。 然后我这里对上面博客补充一些内容,那就是MeasureSpec相关的一些东西,这些东西我在《圆形百分比》这篇博客里提到过。 ---------------------------- 阅读详情

抽了点时间,看了一下自定义view,打算学习一下这方面的知识。都说这是Android进阶的必经之路。想要进阶的话,那自然是免不了了。
本篇学一下xml中自定义属性来控制view的效果。
第一步:
res/values文件夹下新建attrs.xml文件,里面声明自定义view时,可以在xml里用到的属性。这里以一个文本间隔属性为例来说明,当然,可以添加多个属性。
例如:文字间距,声明如下:

<?xml version="1.0" encoding="utf-8"?>
<resources>
    <declare-styleable name="styleAttr">
        <attr name="textSpacing" format="float"/>
    </declare-styleable>
</resources>

这个textSpacing到时就是可以在xml中使用的自定义的属性。
例如:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical">

    <com.szh.demo.MyView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        app:textSpacing="1" />
</LinearLayout>

这里面要注意添加命名空间。
第二步:继承View,获取属性并使用属性。
代码如下:

public class MyView extends View {

    private Paint paint;
    private float textSpacing;//字体间距

    public MyView(Context context) {
        this(context, null);
    }

    public MyView(Context context, @Nullable AttributeSet attrs) {
        super(context, attrs);
        //获取属性值
        TypedArray array = context.obtainStyledAttributes(attrs, R.styleable.styleAtt);
        textSpacing = array.getFloat(R.styleable.styleAttr_textSpacing, 0);
        array.recycle();
        init();
    }

    private void init() {
        paint = new Paint();
        paint.setStyle(Paint.Style.FILL);
        paint.setAntiAlias(true);
        paint.setTextSize(30);
        //拿到属性值,自定义效果时可直接拿来用
        if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {
            paint.setLetterSpacing(textSpacing);
        }
    }

    @Override
    protected void onDraw(Canvas canvas) {
        super.onDraw(canvas);
        canvas.drawText("镜花水月", 0, 30, paint);
    }
}

Android从零开始:我的自定义view学习过程 做android也有一段时间了,虽然基本都是在自学,不过自我感觉还是良好。。。 然而仅仅是“自我感觉”而已。前段时间发现自己对自定义view真是一窍不通啊! 以前基本都是用系统控件、开源控件什么的,从没有自定义过控件,虽然平时用自定义view的场合可能也不多, 但是通过学习自定义view可以帮助理解android view的绘制流程等问题,还是灰常值得学习的。 但是现在不会肿么办! 阅读详情

相关推荐

Altium Designer(AD)的简易使用

一、绘制原理图、原理图库 首先来说明原理图的概念。 根据百度百科,原理图,顾名思义就是表示电路板上各器件之间连接原理的图表。也就是表示芯片上的引脚连接什么元件,各个元件谁和谁相连,电源电压的大小之类的。​ 再来说一下原理图和原理图库的区别和联系。 原理图是某个产品的原理图设计文件;原理图库是设计原理图时用到的电子元件的电路符号的集合。绘制PCB板时先设计原理图即建立原理图文件,而在原理图文件中设计原理图前必须将原理图库文件加载到原理图编辑环境才能使用其中的电路符号。 接下来说明如...

qq_52630607的博客 2万+

最简单下拉刷新,Google最新(可刷新任何控件)

Google终于出下拉刷新控件了,你们知道吗?                                                                           2014年3月29日 XML文件需要引用android.support.v4.widget.SwipeRefreshLayout控件,在里面可以放置任何一个控件,包括ListView,scroll

scry5566的专栏 1838

独立站如何采集商品?外贸独立站采集教程

从这里Robert了解到还有国内有很多仿牌卖家、微商,都有类似的情况,他们出海的阻碍主要在于支付、物流、推广。8.插件“抓取任务”列表手动点同步,将商品同步到主商城后台商品管理列表(商品默认同步到下架列表中) 后台商品管理下架列表显示已同步商品。5.店铺信息修改完成后,可以开始采集商品,采集时弹窗中会自动识别当前平台及商品链接,分类和相册名称可以自定义 编辑修改。4. 打开采集目标站商品页面,点开谷歌浏览器扩展程序列表,找到Shopyy采集平台,打开配置页。打开弹窗中的“店铺管理”,添加店铺信息。

Jernnifer_mao的博客 1378

使用autocomplete实现google下拉框

1. 在页面引入js和css //使用本地文件时引入此js 2. //增加如下代码 $().ready(function() { $("#autocompletebox").autocomplete("search.php", { width: 260, selectFi...

Yang_Ever的专栏 309

北斗导航 | raPPPid软件功能模块详解

raPPPid(Rapid Precise Point Positioning with integer ambiguity resolution,快速精密单点定位与整周模糊度解算)是由维也纳工业大学(TU Wien)大地测量与地理信息系开发的MATLAB开源PPP软件包。它是VieVS(Vienna VLBI and Satellite Software,维也纳VLBI与卫星软件)的PPP模块,由Marcus Franz Glaner和Robert Weber主导开发。

尘世冰封的专栏 585

uniapp - 实现 App 端 “半屏幕“ 连续扫码功能,页面只有半个屏幕是扫码框并且可持续连续扫码获取数据(不使用官方 uni.scanCode API,因为无法连续扫码!)详细示例源码插件教程

uniapp app端实现半屏幕扫码,uniapp 扫一扫半个屏幕,uniapp 扫一扫,uniapp持续扫码实现,uniapp怎么自定义扫码和连续扫码,uni-app App端半屏连续扫码,uniapp 扫一扫半个屏幕,uniapp自定义扫码页面样式,实现连续扫码功能(uniapp),uniapp - 实现 App 端 "半屏幕" 连续扫码功能,页面只有半个屏幕是扫码框并且可持续连续扫码获取数据(不使用官方 uni.scanCode API,因为无法连续扫码!)详细示例源码插件教程。

✅ 精选推荐文章 1万+

Android——谷歌官方下拉刷新控件SwipeRefreshLayout

前言: 如今谷歌推出了更官方的下拉刷新控件, 这无疑是对安卓开发人员来说是个好消息,很方便的使用这个SwipeRefreshLayout控件实现下拉刷新功能。Android4.0以下的版本需要用到 android-support-v4.jar包才能用到 android-support-v4.jar 包下载地址:http://download.csdn.net/detail/h7870181/7

七号座先生的博客 6101

【经验&技巧】DDR仿真中的挑战与解决方案

由于DDR的数据总线具备双向数据传输功能,需要对读写模式进行独立仿真环境的创建,并且分为连续和突发模式,再加之有单端和差分信号、有数据总线和地址总线,需要在数据传输过程中额外注意串扰的影响,并选择合适的驱动和负载以找寻设计裕量与串扰强度之间的平衡,因此,实际操作步骤和分析过程还是较为繁琐耗时的,需要设计者具有足够的耐心。

一只豌豆象的博客 1643

关于Android Studio下拉刷新控件SwipeRefreshLayout

在代码界混了一年半载的人估计或多或少都接触过所谓的下拉刷新和上拉加载,今天写这篇博客只是想记录一下自己的一些想法。 **XlistView**这是我最先接触的关于下拉刷新和上拉加载的一个控件,这个就留着下次再贴吧,今天主要讲的是SwipeRefreshLayout这个东东,而且相对来说比较简单容易上手。 首先你得在Layout文件夹的activity_main.xml布局文件下添加以下代码:<?xm

总之岁月漫长,然而值得等待。 9888

【推荐100个unity插件】unity易于使用模块化设计的天空、体积云和天气系统——Enviro 3

Enviro 3是一款功能强大的Unity天空与天气系统插件,提供动态天空、体积云、天气模拟等丰富功能。安装时需将预制体拖入场景并配置主相机,URP支持需激活深度纹理和添加渲染特性。模块化设计允许自由添加/移除时间、光照、雾效等模块,并通过API控制参数。推荐配合色调映射(如ACES模式)获得最佳视觉效果。插件支持季节、温湿度模拟及闪电风暴等特效,适用于需要逼真环境渲染的Unity项目。

向宇的博客,专注php/web全栈 unity游戏开发,欢迎大家评论纠错 2094

从0到1:用Claude 3.7十日拿下教育部课题申报书(附可修改LaTeX模板)

🟣"作为教育部人文社科项目评审专家,请根据近三年立项数据分析,为[您的学科方向]领域推荐5个具有创新性且符合'十四五'规划的重点选题,要求选题体现交叉学科特征,并标注潜在理论突破点"🟣"根据前期研究基础,创建包含4个研究模块、12个关键节点的三维技术路线图,要求体现实验仿真-实证研究-理论建模的螺旋递进关系,并标注每个节点的预期成果形态"🟣"现在切换至教育部学科评审组组长模式,从选题价值、创新程度、研究可行性三个维度对本申报书进行盲审,生成包含9个扣分风险点的诊断报告及修改优先级排序"

智能AI让学术科研更容易 545

chrome地址栏下拉框插件

终于找到在chrome(google浏览器 谷歌浏览器)中用的地址栏下拉框插件。 https://chrome.google.com/webstore/detail/logbmehmiacemkimbpcbjgaikobdndah

中国资深步行专家 1663

HBase学习二:RegionServer详解

RegionServer是HBase系统中最核心的组件,主要负责用户数据写入、读取等基础操作。RegionServer组件实际上是一个综合体系,包含多个各司其职的核心模块:HLog、MemStore、HFile以及BlockCache。一个RegionServer由一个(或多个)HLog、一个BlockCache以及多个Region组成。其中,HLog用来保证数据写入的可靠性;BlockCache可以将数据块缓存在内存中以提升数据读取性能;

qwerty1372431588的博客 747

Android自定义View学习一---基础

Android自定义View学习一 自定义view三点: 布局 绘制 触摸反馈 基础 坐标系 参考: 安卓自定义View基础-坐标系 View的坐标系 注意:View的坐标系统是相对于父控件而言的. getTop(); //获取子View左上角距父View顶部的距离 getLeft(); //获取子View左上角距父View左侧的距离 getBottom(); ...

了凡 1146

IEM模型,地表粗糙度模拟

利用微波反演土壤水分时候,利用IEM模型可以实现对随机地表的模拟

VC中sqlite的使用

在VC中对sqlite的使用,实现数据库大批数据的快速插入,读取数据库中的数据在ListCtrl中显示

自定义view的学习

学习如何自定义view

uniquemei的博客 335

jre9下载 jdk9

(Java SE Runtime Environment 9.0) 9.0u175 官方最新版 【x86|x64】

自定义view学习文章

自定义view是每一个初级程序员都比较头疼的问题,给大家推荐学习自定义view的文章,文章地址:http://blog.csdn.net/harvic880925/article/details/50995268

ytyxl的博客 223

STM32F407中文手册

STM32f407中文手册 本参考手册面向应用开发人员,提供有关使用 STM32F405xx/07xx、STM32F415xx/17xx、 STM32F42xxx 和 STM32F43xxx 微控制器存储器与外设的完整信息。STM32F405xx/07xx、STM32F415xx/17xx、STM32F42xxx 和 STM32F43xxx 构成一个微 控制器系列,各产品具有不同的存储器大小、封装和外设。有关订购信息以及器件的机械与电气特性,请参见数据手册。有关 ARM Cortex™-M4F 内核的信息,请参见《Cortex™-M4F 技术参考手册》。

从零开始学习自定义view【0】View是什么

在Android中,View是界面上所有用户可见元素的基础类,包括TextView、Button、ImageView等。它们都是View类的子类,并且具有View的所有特性和功能。通俗来讲,我们经常用button来设置onClick事件,难道就不可以用TextView来设置onClick事件吗?因为他们本质上都是view,继承自view。所以我们自定义view的话,也可以直接设置它的onClick事件哦,前提是自定义的view最终继承的是Android View类。

jiet_h的博客 379

自定义View学习记录 plinko游戏View

在res的value中的attrs.xml中添加如下属性。1.创建自定义View属性。2.创建自定义View。

m0_50774720的博客 337

Android自定义View学习

主要学习 (1)郭霖的:带你一步步深入了解View (2)谷歌小弟的,自定义View (3)任玉刚的,自定义View。 来自慕课网的《Android面试解密-自定义View》 测量模式:EXACTLY表示固定的值,AT_MOST表示由自身决定,并且至多不能超过父控件的,UNSPECIFIED表示没有限制(用于ListView等)。 测量值: 当需要重新测量时,...

gs344937933的专栏 544

自定义View学习记录之 翻页View

多个该控件组合起来可实现 翻页时钟(FlipFlow时钟)、倒计时 等等效果,支持的自定义效果:背景色、背景圆角 、上下页间距、展示字体大小、颜色、翻动页背景等等

m0_50774720的博客 236

Android自定义View学习二---流程

Android自定义View学习二 参考: 安卓自定义View进阶-分类与流程 自定义View绘制流程函数调用链(简化版) 构造函数 构造函数有四种重载: //一般在直接New一个View的时候调用 public void SloopView(Context context) {} //一般在layout文件中使用的时候会调用,关于它的所有属性(包括自定义属性)都会包含在attrs中传递进来...

了凡 404

Android自定义View学习总结

Android自定义View的学习总结

2301_80329517的博客 948

Android自定义view学习笔记02

Android自定义view学习笔记02 本文代码来自于张鸿洋老师的博客之Android 自定义View (二) 进阶 学习笔记,对代码进行些许修改,并补充一些在coding过程中遇到的问题、学习的新东西。 相关代码//CustomImageView.java package mmrx.com.myuserdefinedview.textview;import android.content.C

mmrx的博客 6509

Android控件:自定义View学习资源汇总

最近在学习自定义View,按照自己的理解简单罗列下一些学习资源,循序渐进。准备篇自定义View必须学习的两大主题,分别时View/ViewGroup的绘制流程,以及View/ViewGroup的事件分发流程。 绘制流程 Android视图绘制流程完全解析,带你一步步深入了解View(二) Android View系统解析(下) Android:View绘制流程 事件分发 Android事件分

leelit笔记本 3127
上一篇: RadioButton+Fragment实现Tab切换
下一篇: Android集成推送
尘彦
博客等级 码龄11年 92粉丝 22原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

尘彦

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值