首页 > 代码库 > Android自定义View
Android自定义View
Android自定义View实现很简单
继承View,重写构造函数、onDraw,(onMeasure)等函数。
如果自定义的View需要有自定义的属性,需要在values下建立attrs.xml。在其中定义你的属性。
在使用到自定义View的xml布局文件中需要加入xmlns:前缀="http://schemas.android.com/apk/res/你的自定义View所在的包路径".
在使用自定义属性的时候,使用前缀:属性名,如my:textColor="#FFFFFFF"。
实例:
自定义View类:
package com.zst.service.component;import com.example.hello_wangle.R;import android.content.Context;import android.content.res.TypedArray;import android.graphics.Canvas;import android.graphics.Color;import android.graphics.Paint;import android.util.AttributeSet;import android.util.Log;import android.view.View;import android.widget.TextView;public class MyTextView extends TextView { //不能在布局文件中使用 public MyTextView(Context context) { super(context); } //布局文件中用到此构造函数 public MyTextView(Context content, AttributeSet attrs){ super(content, attrs); Paint paint = new Paint(); TypedArray array = content.obtainStyledAttributes(attrs, R.styleable.MyView); int color = array.getColor(R.styleable.MyView_textColor, 0xFF00FF00); float size = array.getDimension(R.styleable.MyView_textSize, 36); paint.setColor(color); paint.setTextSize(size); Log.i("MyTextView", "color:" + color + "\t, size:" + size); array.recycle(); } //修改背景颜色 @Override protected void onDraw(Canvas canvas) { // TODO Auto-generated method stub super.onDraw(canvas); canvas.drawColor(Color.YELLOW); }}
相应的属性文件attrs.xml:
<?xml version="1.0" encoding="utf-8"?><resources> <declare-styleable name="MyView"> <attr name="textColor" format="color" /> <attr name="textSize" format="dimension" /> <attr name="textValue" format="string" /> </declare-styleable></resources>
在布局文件中使用:
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:my="http://schemas.android.com/apk/res/com.example.hello_wangle" android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertical" > <TextView android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/definedTextView" android:text="@string/app_name"/><com.zst.service.component.CounterView android:layout_width="100dp" android:layout_height="100dp" /> <com.zst.service.component.MyTextView android:layout_width="fill_parent" android:layout_height="wrap_content" my:textColor="#FFFFFFFF" my:textSize="38sp" /> </LinearLayout>
Android自定义View
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。