android 自定义控件继承TextView
来源:互联网 发布:淘宝卖家20万限额 编辑:程序博客网 时间:2024/06/05 00:36
在原生控件上进行扩展,增加新的功能
一般是在onDraw() 方法中对原生控件进行扩展
下面以一个TextView 为例,来看看如何使用扩展原生控件的方法创建新的控件
/* * 对现有控件进行扩展 * */public class M_TextView extends TextView{public M_TextView(Context context, AttributeSet attrs, int defStyle) {super(context, attrs, defStyle);// TODO Auto-generated constructor stub}public M_TextView(Context context, AttributeSet attrs) {super(context, attrs);// TODO Auto-generated constructor stub}public M_TextView(Context context) {super(context);// TODO Auto-generated constructor stub}@Overrideprotected void onDraw(Canvas canvas) {// TODO Auto-generated method stubPaint mPaint1 = new Paint();mPaint1.setColor(getResources().getColor(android.R.color.holo_blue_light));mPaint1.setStyle(Paint.Style.FILL);Paint mPaint2 = new Paint();mPaint2.setColor(Color.YELLOW);mPaint2.setStyle(Paint.Style.FILL);//绘制外层矩形canvas.drawRect(0, 0, getMeasuredWidth(),getMeasuredHeight(), mPaint1);//绘制内层矩形canvas.drawRect(10, 10, getMeasuredWidth()-10, getMeasuredHeight()-10, mPaint2);canvas.save();//绘制文字前平移10像素canvas.translate(10, 0);super.onDraw(canvas);canvas.restore();}}在布局文件中使用:
<com.example.kongjian_1.M_TextView android:layout_width="200dp" android:layout_height="50dp" android:gravity="center" android:text="android" android:textColor="@android:color/black" android:textSize="25sp" > </com.example.kongjian_1.M_TextView>
实例二:给文字增加闪动效果:
public class M_TextView2 extends TextView {public M_TextView2(Context context) {super(context);// TODO Auto-generated constructor stub}public M_TextView2(Context context, AttributeSet attrs, int defStyle) {super(context, attrs, defStyle);// TODO Auto-generated constructor stub}public M_TextView2(Context context, AttributeSet attrs) {super(context, attrs);// TODO Auto-generated constructor stub}private LinearGradient mLinearGradient;private Matrix mGradientMatrix;private Paint mPaint;private int mViewWidth = 0;private int mTranslate = 0;@Overrideprotected void onSizeChanged(int w, int h, int oldw, int oldh) {super.onSizeChanged(w, h, oldw, oldh);if (mViewWidth == 0) {mViewWidth = getMeasuredWidth();if (mViewWidth > 0) {mPaint = getPaint();mLinearGradient = new LinearGradient(0,0,mViewWidth,0,new int[]{Color.BLUE, 0xffffffff,Color.BLUE},null,Shader.TileMode.CLAMP);mPaint.setShader(mLinearGradient);mGradientMatrix = new Matrix();}}}@Overrideprotected void onDraw(Canvas canvas) {super.onDraw(canvas);if (mGradientMatrix != null) {mTranslate += mViewWidth / 5;if (mTranslate > 2 * mViewWidth) {mTranslate = -mViewWidth;}mGradientMatrix.setTranslate(mTranslate, 0);mLinearGradient.setLocalMatrix(mGradientMatrix);postInvalidateDelayed(50);}}}
xml中使用:
<com.example.kongjian_1.M_TextView2 android:layout_width="200dp" android:layout_height="50dp" android:gravity="center" android:text="android" android:textColor="@android:color/black" android:textSize="25sp" > </com.example.kongjian_1.M_TextView2>
0 0
- android 自定义控件继承TextView
- Android自定义TextView控件
- 自定义控件----继承framLayout --textview与checkBox
- Android自定义控件之TextView
- Android自定义控件之TextView
- Android自定义控件之TextView
- Android 自定义控件起步:自定义TextView
- Android 自定义控件,继承控件,组合控件
- Android自定义控件---继承Linearlayout
- Android自定义控件 -- 带边框的TextView
- Android自定义控件之extends textview
- android 开发进阶自定义控件 类似 TextView
- Android自定义控件之拓展TextView(ExpandTextView)
- Android开发 自定义控件 边框TextView
- Android 三角标签(自定义Textview控件)
- Android-自定义控件之重写控件(自定义TextView)
- Android自定义控件(三)继承控件
- Android自定义控件-继承已有控件
- Android源码
- WebView上传图片解决方案(包括4.4.2以及其它)
- 让R与Python共舞
- Vijos P1848记数问题【sprintf用法】
- LC330-google面试2016
- android 自定义控件继承TextView
- 172. Factorial Trailing Zeroes
- 获取客户端IP
- 自定义View基础与原理
- muduo库的学习---中间遇到的问题
- leetcode刷题,总结,记录,备忘, 279
- TCP的三次握手和四次挥手
- 课堂笔记1
- zzulioj 1730: 通信基站 【全排列 + DFS】