Android自定义控件之TextView
转自:http://labs.easymobi.cn/?p=284
有时候Android自带的控件无法满足我们的某些要求,这时就需要我们自定义控件来实现这些功能。比如需要一个TextView里的字倾斜一定的角度,就需要自定义TextView。
右下角的记分牌就是这样的TextView。
下面介绍怎么自定义TextView。
首先新建一个继承自TextView的类,取名为RotateTextView:
1 import android.content.Context; 2 import android.graphics.Canvas; 3 import android.util.AttributeSet; 4 import android.widget.TextView; 5 6 public class RotateTextView extends TextView { 7 private static final String NAMESPACE = “http://www.ywlx.net/apk/res/easymobi”; 8 private static final String ATTR_ROTATE = “rotate”; 9 private static final int DEFAULTVALUE_DEGREES = 0; 10 private int degrees ; 11 public RotateTextView(Context context, AttributeSet attrs) { 12 super(context, attrs); 13 degrees = attrs.getAttributeIntValue(NAMESPACE, ATTR_ROTATE, DEFAULTVALUE_DEGREES); 14 15 } 16 @Override 17 protected void onDraw(Canvas canvas) { 18 19 canvas.rotate(degrees,getMeasuredWidth()/2,getMeasuredHeight()/2); 20 super.onDraw(canvas); 21 } 22 23 }
一定要有带Context和AttributeSet参数的构造函数,getAttributeIntValue()里第一个参数是命名空间,类似于Android自带的”http://schemas.android.com/apk/res/android”,这里可以自己随便定义。第二个参数是传入的参数的值,这里是旋转地角度。第三个参数是默认值,就是不定义该属性时默认旋转的角度,这里是0度。然后重写onDraw()方法,rotate()作用是以TextView的中心为中点把画布旋转degrees度,这样就实现了字的旋转。
下一步就是在布局文件中使用自定义的TextView:
<cn.easymobi.application.memorytest.RotateTextView android:layout_width=”wrap_content” android:layout_height=”wrap_content” android:padding=”8dip” android:gravity=”center” android:id=”@+id/tvBottom_color” android:textSize=”15dip” android:textColor=”@color/black” easymobi:rotate=”10″ android:layout_marginTop=”468dip” />
其他属性与普通的TextView相同, easymobi:rotate=”10″指定了旋转10度,但是要注意在头文件加上xmlns:easymobi=”http://www.ywlx.net/apk/res/easymobi”,这个就是RotateTextView中的命名空间的作用。还有一点要注意的就是加上合适的padding,因为这种方法旋转的是TextView里面的字,而不是TextView本身,如果不加padding,有些字就会因为旋转而跑到了TextView外面而不能显示。
用类似的方法还可以实现各种各样你想要的效果。
转载于:https://www.cnblogs.com/luoyanli/p/3208110.html
Android自定义控件之TextView相关推荐
- android里的editText怎么用,Android自定义控件EditText使用详解
本文实例为大家分享了Android自定义控件EditText的具体代码,供大家参考,具体内容如下 自定义控件分三种: 1. 自绘控件 2. 组合控件 3. 继承控件 代码已上传到 github 以后的 ...
- Android自定义控件之流式布局
效果图: 一.首先创建我 们的自定义流式布局 public class FlowLayoutView extends ViewGroup {public FlowLayoutView(Context ...
- Android自定义控件学习(一)-----属性
Android中XML的命名空间.自定义属性 命名空间(namespace) XML 命名空间提供避免元素命名冲突的方法. 打个比方,A学校有名学生叫做林小明,B学校也有名学生叫林小明,那我们如何识别 ...
- android自定义省略号,Android开发自定义TextView省略号样式的方法
本文实例讲述了Android开发自定义TextView省略号样式的方法.分享给大家供大家参考,具体如下: 在布局xml中设置textView的字段 android:maxLines="2&q ...
- Android自定义控件之RecyclerView打造万能ViewPager TabLayout(仿今日头条Tab滑动、Tab多布局、indicator蠕动、自定义indicator、文字颜色渐变)
文章目录 GitHub:https://github.com/AnJiaoDe/TabLayoutNiubility 该轮子特异功能如下: 使用方法 注意:该轮子适用于androidx中的ViewPa ...
- Android自定义控件开发系列(一)——第一次动手做自定义控件
Android系统提供的控件多种多样,以至于很多初学者经常忘了还有这样那样的控件没用过甚至没听过.尽管如此,但是系统控件大多比较死板,而且不够美观,很多多样化的显示或是交互方式都没法完成.每每遇到这种 ...
- Android自定义控件入门到精通--View树的布局
<Android自定义控件入门到精通>文章索引 ☞ https://blog.csdn.net/Jhone_csdn/article/details/118146683 <Andro ...
- Android自定义控件之美观的实用型统计表的制作
概述 绘制统计表,势必要用到自定义控件,一个统计表,看起来单元项很多,但实际上做起来并不复杂. 要传递数据进来,用集合类最好. 要确定每个表格单元的宽和高,并根据数据数目和表格每列的高来决定自定义控件 ...
- Android自定义控件:imageview重写onMeasure方法实现图片按指定比例显示,拉伸永不变形,解决屏幕适配问题
使用ImageView会遇到的问题 在Android应用中,都少不了图片的显示,ImageView,轮播图,ViewPager等等,很多都是来显示图片的,比如一个广告条的轮播效果,参看博客:广告条效果 ...
- Android 自定义控件 轻松实现360软件详情页
分享一下我老师大神的人工智能教程!零基础,通俗易懂!http://blog.csdn.net/jiangjunshow 也欢迎大家转载本篇文章.分享知识,造福人民,实现我们中华民族伟大复兴! 转载请标 ...
最新文章
- Python函数中的参数(一)
- nginx访问控制:如何通过map来控制http_x_forwarded_for访问限制
- c++ 类内static成员初始化
- [html] 你喜欢哪种布局风格?说说你的理由
- 2016年安防企业如何因势而动 顺势而为
- 高响应比优先调度算法(HRRN)
- linux登陆命令行,如何使用linux命令行登陆
- 一步一步教你如何写开发文档
- 黑鲨重装计算机安装无法继续,示例黑鲨装机大师装机失败无法开机怎么办?
- Rockchip RK3588 MIPI-DSI2 详解
- python禁用路径长度限制有啥影响吗_为什么Windows中存在260个字符的路径长度限制?...
- 对比两张excel的不同
- Ae:3D 变换小工具与轴模式
- 大唐移动android面试题,大唐移动面试经验
- [IT与培训]IT培训与企业建设的思路
- 外汇交易与实务--即期外汇交易
- 怎么把电脑上的准考证发送到手机上呢
- 高斯定理证明(HTML)
- 七、数据结构:线性表-栈(后进先出)
- wireshark安装s7comm-plus插件
热门文章
- 关于动态库和静态库的总结
- c语言教程求反符号,c语言“或”符号
- linux 查看系统位数命令,怎么用命令行查看Linux系统位数
- [渝粤教育] 西南科技大学 旅客运输组织 在线考试复习资料
- [渝粤教育] 西南科技大学 经济法概论 在线考试复习资料2021版(2)
- 计算机视觉实战(二)图像基本操作
- What's New in Qt 5.5 5.4,以及5.5 所有module
- [Swift]LeetCode862. 和至少为 K 的最短子数组 | Shortest Subarray with Sum at Least K
- python记录_day33 线程
- MySQL 5.7.18的安装及主从复制(主从同步)