Android自定义View
来源:互联网 发布:jenkins 源码 编辑:程序博客网 时间:2024/06/04 08:28
http://blog.csdn.net/wangjinyu501/article/details/8052658
http://blog.csdn.net/wangjinyu501/article/details/8052658
http://blog.csdn.net/wangjinyu501/article/details/8052658
http://blog.csdn.net/wangjinyu501/article/details/8052658
Android自定义View
如果自定义的View需要有自定义的属性,需要在values下建立attrs.xml。在其中定义你的属性。
在使用到自定义View的xml布局文件中需要加入xmlns:前缀="http://schemas.android.com/apk/res/你的自定义View所在的包路径".
在使用自定义属性的时候,使用前缀:属性名,如my:textColor="#FFFFFFF"。
- package com.example.cumsview
- import android.content.Context;
- import android.content.res.TypedArray;
- import android.graphics.Canvas;
- import android.graphics.Color;
- import android.graphics.Paint;
- import android.graphics.Paint.Style;
- import android.util.AttributeSet;
- import android.view.View;
- /**
- * 这个是自定义的TextView.
- * 至少需要重载构造方法和onDraw方法
- * 对于自定义的View如果没有自己独特的属性,可以直接在xml文件中使用就可以了
- * 如果含有自己独特的属性,那么就需要在构造函数中获取属性文件attrs.xml中自定义属性的名称
- * 并根据需要设定默认值,放在在xml文件中没有定义。
- * 如果使用自定义属性,那么在应用xml文件中需要加上新的schemas,
- * 比如这里是xmlns:my="http://schemas.android.com/apk/res/demo.view.my"
- * 其中xmlns后的“my”是自定义的属性的前缀,res后的是我们自定义View所在的包
- * @author Administrator
- *
- */
- public class MyView extends View {
- Paint mPaint; //画笔,包含了画几何图形、文本等的样式和颜色信息
- public MyView(Context context) {
- super(context);
- }
- public MyView(Context context, AttributeSet attrs){
- super(context, attrs);
- mPaint = new Paint();
- //TypedArray是一个用来存放由context.obtainStyledAttributes获得的属性的数组
- //在使用完成后,一定要调用recycle方法
- //属性的名称是styleable中的名称+“_”+属性名称
- TypedArray array = context.obtainStyledAttributes(attrs, R.styleable.MyView);
- int textColor = array.getColor(R.styleable.MyView_textColor, 0XFF00FF00); //提供默认值,放置未指定
- float textSize = array.getDimension(R.styleable.MyView_textSize, 36);
- mPaint.setColor(textColor);
- mPaint.setTextSize(textSize);
- array.recycle(); //一定要调用,否则这次的设定会对下次的使用造成影响
- }
- public void onDraw(Canvas canvas){
- super.onDraw(canvas);
- //Canvas中含有很多画图的接口,利用这些接口,我们可以画出我们想要的图形
- //mPaint = new Paint();
- //mPaint.setColor(Color.RED);
- mPaint.setStyle(Style.FILL); //设置填充
- canvas.drawRect(10, 10, 100, 100, mPaint); //绘制矩形
- mPaint.setColor(Color.BLUE);
- canvas.drawText("我是被画出来的", 10, 120, mPaint);
- }
- }
相应的属性文件:attrs.xmlcopy
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"xmlns:my="http://schemas.android.com/apk/res/com.example.cumsview"
android:orientation="vertical"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
>
<com.example.cumsview.MyView
android:layout_width="fill_parent"
android:layout_height="wrap_content"
my:textColor="#FFFFFFFF"
my:textSize="22dp"
/>
</LinearLayout>
MainActivity.java
package com.example.cumsview;
import android.os.Bundle;
import android.app.Activity;
import android.view.Menu;
public class MainActivity extends Activity {
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
getMenuInflater().inflate(R.menu.activity_main, menu);
return true;
}
}
效果如下:
- 顶
- 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
- html中的hsl颜色表示法
- Android 仿微信之(二)--主页面实现篇
- js函数的重载
- 汉澳sinox平台的大量CAD制图、PCB电路板、IC集成电路、HDL硬件描述语言、电路仿真和元素分析等设计软件一览表
- Java5新特性之枚举
- Android自定义View
- js数据类型
- 虚拟Linux 访问win7共享目录方法
- iOS App 自定义 URL Scheme 设计
- Python BeautifulSoup
- linux 下tar 打包分割文件和解压文件方法一点通
- 自动更新word中的公式编号
- Const对函数的作用
- JAVA学习第二十课(异常的应用和注意事项(三))