Android提供了强大的可复用组件,但特殊情况需要自己的自定义的View组件,下面自定义一个View。
首先在values/attrs.xml中定义好自定义的View会有哪些属性需要在XML中配置:
<?xml version="1.0" encoding="utf-8"?>
<resources>
<declare-styleable name="MyView">
<attr name="textColor" format="color" />
<attr name="textSize" format="dimension" />
//在attrs中定义background
<attr name="imgBackground" format="integer" />
<attr name="textPaddingLeft" format="dimension"/>
<attr name="textPaddingTop" format="dimension"/>
</declare-styleable>
</resources>
编写自定义的View-MyView.java,继承View
package test.cuntomizedview;
import java.util.Calendar;
import test.cuntomizedview.R;
import android.content.Context;
import android.content.res.TypedArray;
import android.graphics.Canvas;
import android.graphics.Color;
import android.graphics.Paint;
import android.os.SystemClock;
import android.util.AttributeSet;
import android.view.View;
public class MyView extends View {
private Paint mPaint;
private Context mContext;
private String mStr;
/*如果需要在配置文件中使用该自定义组件,注意一定要重写public **View(Context context, AttributeSet attrs)的构造方法,而不是public **View(Context context)。如果只需要在程序中利用代码使用该组件可以只覆写public **View(Context context)*/
public MyView(Context context, AttributeSet attrs) {
super(context, attrs);
mContext = context;
initMyView();
/*获取在xml中配置的属性值*/
TypedArray params = context.obtainStyledAttributes(attrs,
R.styleable.MyView);
//取得background
int backgroudId = params.getResourceId(
R.styleable.MyView_imgBackground, 0);
if (backgroudId != 0)
setBackgroundResource(backgroudId);
int textColor = params.getColor(R.styleable.MyView_textColor,
0XFFFFFFFF);
setTextColor(textColor);
float textSize = params.getDimension(R.styleable.MyView_textSize, 36);
setTextSize(textSize);
float paddingLeft = params.getDimension(
R.styleable.MyView_textPaddingLeft, 41);
float paddingTop = params.getDimension(
R.styleable.MyView_textPaddingTop, 21);
setPaddings(paddingLeft, paddingTop);
}
@Override
protected void onDraw(Canvas canvas) {
super.onDraw(canvas);
if(mStr != null) {
canvas.drawText(mStr, 0, 0, mPaint);
}
canvas.drawText("heiheihei", 30, 60, mPaint);
}
private void initMyView() {
mPaint = new Paint();
mPaint.setColor(Color.WHITE);
}
private void setTextColor(int textColor) {
mPaint.setColor(0XFFAABBCC);
}
private void setTextSize(float textSize) {
mPaint.setTextSize(textSize);
}
private void setPaddings(float paddingLeft, float paddingTop) {
setPadding((int)paddingLeft, (int)paddingTop, 0, 0);
}
}
// 注意怎样在attrs中怎样定义background并取得background。
在layout中使用MyView,
main.xml
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res/test.cuntomizedview"
android:orientation="vertical" android:layout_width="fill_parent"
android:layout_height="fill_parent">
<test.cuntomizedview.MyView android:id="@+id/v"
android:layout_width="fill_parent" android:layout_height="fill_parent"
app:textColor="#FFFFFFFF" app:textSize="40dip"
app:textPaddingLeft="40dip" app:textPaddingTop="40dip"
app:imgBackground="@drawable/bg_time"
/>
</LinearLayout>
分享到:
相关推荐
安卓自定义View组件
本文实例为大家分享了Android自定义View实现跟随手指移动的小兔子,供大家参考,具体内容如下 自定义的View实现跟随手指的小兔子 按前面的例子新创建一个project,再在project中新创建一个module 将需要的背景图和...
Android自定义组件开发详解,让你彻底理解自定义组件(自定义View、ViewGroup等,彻底了解canvas和paint的基本和高级使用方法)
demo中是自定义view组件
自定义view控件 canvas绘制自己的组件小demo
Android自定义组件开发详解,进阶书籍。本书教你如何更好使用自定义view
Android自定义组件之自动换行View
android之自定义view,点击图片按钮或拖动图片按钮控制开关,一起学习吧。
6.6 案例2:验证码组件CodeView 190 6.7 练习作业 202 第七章 自定义容器 204 7.1 概述 204 7.2 ViewGroup类 205 7.2.1 ViewGroup常用方法 205 7.2.2 ViewGroup的工作原理 208 7.2.3 重写onLayout()方法 213 7.3 ...
这是一款android进度条自定义的控件,用到了混合模式,进度条覆盖到文字的时候,覆盖到哪里,哪里变成白色,
这套源码,是从国外网站下download的开源代码。...因为里面应用了网络通讯,json解析,全局mediaservice,自定义View组件,自定义Adapter,application全局缓存,变量等等,所有要在项目中考虑到的优化问题。
因为里面应用了网络通讯,json解析,全局mediaservice,自定义View组件,自定义Adapter,application全局缓存,变量等等,所有要在项目中考虑到的优化问题,现在论坛代码片段很多但像这样一套完整代码绝对不多。...
android开发中回会经常使用自定义组件,这边提供了一个非常基础的自定view动画
一个仿Apple的Apple Music播放器和Shortcuts组件视图的自定义UI组件..zip,Custom UI component for iOS, replication of Apple's Apple Music player and Shortcuts’ components view.
从android4.0开始推出了switch组件,可以方便的实现滑动开关,但是前面的版本却不行,因此这里自定义了android自定义滑动开关组件,效果很好,使用方便,包括封装好的jar包,使用实例,已经所有源码
安卓学习一个代码程序,跟随手指的小兔子,分多可下哉
1) Android 自定义组件开发详解 2)view 绘图 ,界面等
Android自定义View——彩色圆环统计图
Android自定义view:十字按钮本十字按钮可用于智能家电app,通过设置listener就可以监听四个方向的点击事件,同时其button的反应模式如系统给的button一致。在代码中也给出了另外五个普通按钮进行与十字按钮进行效果...