android自定义View
来源:互联网 发布:淘宝返利哪个最好 编辑:程序博客网 时间:2024/06/10 00:17
统一的用户界面是可以使得应用程序更友好。要做到用户界面的统一,我们就必须用到风格(style)和主题(theme),以下非原创,仅供个人学习参考。
在values/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="imgBackground" format="integer" />
<attr name="textPaddingLeft" format="dimension"/>
<attr name="textPaddingTop" format="dimension"/>
</declare-styleable>
</resources>
package com.test.TestView;
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.view.View;
public class MyView extends View {
private Context mContext;
private String mStr;
public MyView(Context context, AttributeSet attrs) {
super(context, attrs);
mContext = context;
initMyView();
TypedArray params = context.obtainStyledAttributes(attrs,
R.styleable.MyView);
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, 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);
}
void setText(String text) {
mStr = text;
}
private void setPaddings(float paddingLeft, float paddingTop) {
setPadding((int) paddingLeft, (int) paddingTop, 0, 0);
}
}
在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/com.test.TestView" //此处注意
android:orientation="vertical" android:layout_width="fill_parent"
android:layout_height="fill_parent">
<com.test.TestView.MyView
android:id="@+id/myview"
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"
/>
</LinearLayout>
在自己的Activity 中
public class TestView extends Activity {
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
MyView mTextView=(MyView)findViewById(R.id.myview);
mTextView.setText("自定义的View");
}
}
- Android View---自定义View
- Android View---自定义View
- Android 自定义View 之 自定义View属性
- 【自定义View系列】android自定义View概述
- Android自定义view自定义属性
- Android自定义控件 -- 自定义View
- android自定义view(自定义数字键盘)
- Android自定义View-自定义属性
- Android自定义View-自定义属性
- Android 自定义View
- Android 自定义 View
- android自定义View
- Android 中自定义 view
- android 自定义view组件
- Android 自定义 View
- android 自定义view
- Android:如何自定义View
- android 自定义View
- HBase简介
- 手机与电话的正则表达式 验证有效日期时间的正则表达式(已解决闰二月)
- 如何删除QScriptValue对象的某个属性?
- Unable to find parent packages json-default
- LINUX 下安装ORACLE
- android自定义View
- 数据统计脚本及工具
- 在CCS3.3里面使用PROFILE
- 正则表达式的数字实例
- 日本福岛核电站半径20公里灾民撤离完毕
- git使用笔记【转】
- vc 将文件存入mysql数据库
- eclipse 3.x中热部署WEB程序TOMCAT配置
- 写给自己也同惠通道学友~请不要做浮躁的嵌入式工程师