android群英传之自定义View--对现有控件进行扩展(1)
来源:互联网 发布:横须贺刺绣外套淘宝 编辑:程序博客网 时间:2024/06/06 04:20
很多时候系统自带的控件无法满足我们设计的要求,这个时候android提供的允许自定义view的办法就帮了我们大忙。在android中,自定义view主要有三种实现方式
1.对现有控件进行扩展
2.通过组合实现新的控件
3.重写view来实现新的控件
现在先是第一点,对现有控件进行扩展
书中给了两个例子,第一个是对textview控件进行扩展,代码片段如下:
protected void onDraw(Canvas canvas) {//绘制外层矩形canvas.drawRect(0,0,getMeasuredWidth(),getMeasuredHeight(), mPaint1);//绘制内层矩形canvas.drawRect(10, 10, getMeasuredWidth()-10,getMeasuredHeight()-10, mPaint2);canvas.save();//绘制文字前平移10像素canvas.translate(10, 0);//在回调父方法之前实现自己的逻辑,对Textview来说即是在绘制文本之前super.onDraw(canvas);//在回调父方法之后实现自己的逻辑,对Textview来说即是在绘制文本之后canvas.restore();}
在这之前,我们需要在构造方法中增加对画笔属性的初始化,因为我们要在布局文件中使用到这个自定义的view,所以要添加两个参数的构造方法,这里的第二个参数AttributeSet来完成控件类的构造函数,并在构造函数中将自定义控件类中变量与attrs.xml中的属性连接起来(如果有的话),而拥有一个参数的构造函数只适合于直接在activity用代码调用该view时使用。
<span style="font-size:18px;">public RecTextView(Context context,AttributeSet attributeSet) {super(context,attributeSet);// TODO Auto-generated constructor stub.mPaint1 = new Paint();mPaint1.setColor(getResources().getColor(android.R.color.holo_blue_light));mPaint1.setStyle(Paint.Style.FILL);mPaint2 = new Paint();mPaint2.setColor(Color.YELLOW);mPaint2.setStyle(Paint.Style.FILL);}</span>
然后在xml文件中添加该控件
<span style="font-size:18px;"> <com.example.textviewbyextend.RecTextView android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="android hello"/></span>完成之后,就可以在代码中实例化这个布局文件了
<span style="font-size:18px;">public class MainActivity extends Activity {private RecTextView recTextView; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); } }</span>效果如图:
0 0
- android群英传之自定义View--对现有控件进行扩展(1)
- 《Android 群英传》读书笔记:自定义 View 之对现有控件进行拓展
- Android 控件架构与自定义控件(一)对现有控件进行扩展
- Android View之对现有控件进行拓展实例
- Android群英传笔记-3.6.1对现有控件进行拓展(TextView 实现闪动效果)
- android群英传笔记——对现有控件进行拓展(闪动的文字效果)
- Android群英传--对现有控件进行拓展(动态的文字闪动效果)
- Android群英传-自定义View、控件
- 《Android 群英传》读书笔记:自定义 View 之创建复合控件
- 自定义View (Android群英传)
- 自定义控件之对现有控件拓展(一)
- 自定义控件之对现有控件拓展(一)
- Android群英传--自定义View详解(一)
- 群英传笔记 自定义view之 通过组合(复合)控件创建一个通用标题栏view
- 自定义View(一)(Android群英传)
- 自定义view android群英传笔记
- 自定义View(二)(Android群英传)
- 自定义View(三)(Android群英传)
- 第十章 数组与指针
- maven依赖servlet-api.jar
- linux上操作web项目常用实用命令总结
- BZOJ2929洞穴攀行
- NYOJ+dp0/1背包+小白上的滚动数组or二维的状态方程有点像最长公共子序列
- android群英传之自定义View--对现有控件进行扩展(1)
- UIControl事件
- The C10K Problem -- 翻译版
- spring : HibernateDaoSupport,其中的sessionFactory并不能自动注入,只能手动
- android--存储
- ZOJ 1709 Oil Deposits(DFS)
- installation failed since the device possibly has stale dexed jars that don't match the current vers
- ImageView 的使用
- 生成模型与判别模型