Android自定义控件之TextView

  次阅读 来源:互联网(转载协议) 2015-11-25 22:26 我要评论(0)

[size=medium][/size]有时候Android自带的控件无法满足我们的某些要求,这时就需要我们自定义控件来实现这些功能。比如需要一个TextView里的字倾斜一定的角度,就需要自定义TextView。

下面介绍怎么自定义TextView。

首先新建一个继承自TextView的类,取名为RotateTextView:

importandroid.content.Context;

importandroid.graphics.Canvas;

importandroid.util.AttributeSet;

importandroid.widget.TextView;

publicclassRotateTextViewextendsTextView {

privatestaticfinalStringNAMESPACE = “http://www.ywlx.net/apk/res/easymobi”;

privatestaticfinalStringATTR_ROTATE = “rotate”;

privatestaticfinalintDEFAULTVALUE_DEGREES = 0;

privateintdegrees ;

publicRotateTextView(Context context, AttributeSet attrs) {

super(context, attrs);

degrees = attrs.getAttributeIntValue(NAMESPACE, ATTR_ROTATE, DEFAULTVALUE_DEGREES);

}

@Override

protectedvoidonDraw(Canvas canvas) {

canvas.rotate(degrees,getMeasuredWidth()/2,getMeasuredHeight()/2);

super.onDraw(canvas);

}

}

一定要有带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外面而不能显示。

用类似的方法还可以实现各种各样你想要的效果。

作者“dennies211”

本站部分文章来源于网络以及网友投稿,本站只负责对文章进行整理、排版、编辑,是出于传递更多信息之目的,并不意味着赞同其观点或证实其内容的真实性。如果您有什么意见或建议,请联系QQ28-1688-302!

人工智能实验室
相关文章相关文章
  • Michael I. Jordan带你解读百万奖金ATEC蚂蚁人工智能大赛

    Michael I. Jordan带你解读百万奖金ATEC蚂蚁人工智能大赛

  • 2018深圳国际人工智能展览会 2018 shenzhen International Artif

    2018深圳国际人工智能展览会 2018 shenzhen International Artif

  • teamLab创始人猪子寿之: 抛去衣食住行,我还剩下什么?

    teamLab创始人猪子寿之: 抛去衣食住行,我还剩下什么?

  • Oculus公布原型机,大幅度提升可视角,能实现140°的视场水平

    Oculus公布原型机,大幅度提升可视角,能实现140°的视场水平

网友点评网友点评
阅读推荐阅读推荐

据外媒报道,STEER打造了首款完全自动驾驶停车技术,旨在使常规车辆转变为无人驾驶车辆。STEER的首款技术应用是4级自动驾驶及网络安全停车...

近日,美国软性机器抓手制造商 Soft Robotics 宣布,获得 2000 万美元的融资,本轮投资者包括 Scale Venture Partners,Calibrate Ventures...

据外媒报道,加州车管局发布了《2017自动驾驶脱离报告(California Autonomous Vehicle Disengagement Reports)》,其中谈及了脱离的具体...

用人机语音交互,来解决智能家居适老的问题;通过家庭门禁与安防套件、空气净化套件、可燃气体与有害气体监控套件等相互联动,在不同生活情...