转自: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相关推荐

  1. android里的editText怎么用,Android自定义控件EditText使用详解

    本文实例为大家分享了Android自定义控件EditText的具体代码,供大家参考,具体内容如下 自定义控件分三种: 1. 自绘控件 2. 组合控件 3. 继承控件 代码已上传到 github 以后的 ...

  2. Android自定义控件之流式布局

    效果图: 一.首先创建我 们的自定义流式布局 public class FlowLayoutView extends ViewGroup {public FlowLayoutView(Context ...

  3. Android自定义控件学习(一)-----属性

    Android中XML的命名空间.自定义属性 命名空间(namespace) XML 命名空间提供避免元素命名冲突的方法. 打个比方,A学校有名学生叫做林小明,B学校也有名学生叫林小明,那我们如何识别 ...

  4. android自定义省略号,Android开发自定义TextView省略号样式的方法

    本文实例讲述了Android开发自定义TextView省略号样式的方法.分享给大家供大家参考,具体如下: 在布局xml中设置textView的字段 android:maxLines="2&q ...

  5. Android自定义控件之RecyclerView打造万能ViewPager TabLayout(仿今日头条Tab滑动、Tab多布局、indicator蠕动、自定义indicator、文字颜色渐变)

    文章目录 GitHub:https://github.com/AnJiaoDe/TabLayoutNiubility 该轮子特异功能如下: 使用方法 注意:该轮子适用于androidx中的ViewPa ...

  6. Android自定义控件开发系列(一)——第一次动手做自定义控件

    Android系统提供的控件多种多样,以至于很多初学者经常忘了还有这样那样的控件没用过甚至没听过.尽管如此,但是系统控件大多比较死板,而且不够美观,很多多样化的显示或是交互方式都没法完成.每每遇到这种 ...

  7. Android自定义控件入门到精通--View树的布局

    <Android自定义控件入门到精通>文章索引 ☞ https://blog.csdn.net/Jhone_csdn/article/details/118146683 <Andro ...

  8. Android自定义控件之美观的实用型统计表的制作

    概述 绘制统计表,势必要用到自定义控件,一个统计表,看起来单元项很多,但实际上做起来并不复杂. 要传递数据进来,用集合类最好. 要确定每个表格单元的宽和高,并根据数据数目和表格每列的高来决定自定义控件 ...

  9. Android自定义控件:imageview重写onMeasure方法实现图片按指定比例显示,拉伸永不变形,解决屏幕适配问题

    使用ImageView会遇到的问题 在Android应用中,都少不了图片的显示,ImageView,轮播图,ViewPager等等,很多都是来显示图片的,比如一个广告条的轮播效果,参看博客:广告条效果 ...

  10. Android 自定义控件 轻松实现360软件详情页

    分享一下我老师大神的人工智能教程!零基础,通俗易懂!http://blog.csdn.net/jiangjunshow 也欢迎大家转载本篇文章.分享知识,造福人民,实现我们中华民族伟大复兴! 转载请标 ...

最新文章

  1. Python函数中的参数(一)
  2. nginx访问控制:如何通过map来控制http_x_forwarded_for访问限制
  3. c++ 类内static成员初始化
  4. [html] 你喜欢哪种布局风格?说说你的理由
  5. 2016年安防企业如何因势而动 顺势而为
  6. 高响应比优先调度算法(HRRN)
  7. linux登陆命令行,如何使用linux命令行登陆
  8. 一步一步教你如何写开发文档
  9. 黑鲨重装计算机安装无法继续,示例黑鲨装机大师装机失败无法开机怎么办?
  10. Rockchip RK3588 MIPI-DSI2 详解
  11. python禁用路径长度限制有啥影响吗_为什么Windows中存在260个字符的路径长度限制?...
  12. 对比两张excel的不同
  13. Ae:3D 变换小工具与轴模式
  14. 大唐移动android面试题,大唐移动面试经验
  15. [IT与培训]IT培训与企业建设的思路
  16. 外汇交易与实务--即期外汇交易
  17. 怎么把电脑上的准考证发送到手机上呢
  18. 高斯定理证明(HTML)
  19. 七、数据结构:线性表-栈(后进先出)
  20. wireshark安装s7comm-plus插件

热门文章

  1. 关于动态库和静态库的总结
  2. c语言教程求反符号,c语言“或”符号
  3. linux 查看系统位数命令,怎么用命令行查看Linux系统位数
  4. [渝粤教育] 西南科技大学 旅客运输组织 在线考试复习资料
  5. [渝粤教育] 西南科技大学 经济法概论 在线考试复习资料2021版(2)
  6. 计算机视觉实战(二)图像基本操作
  7. What's New in Qt 5.5 5.4,以及5.5 所有module
  8. [Swift]LeetCode862. 和至少为 K 的最短子数组 | Shortest Subarray with Sum at Least K
  9. python记录_day33 线程
  10. MySQL 5.7.18的安装及主从复制(主从同步)