Android 自定义属性(点击生成随机数)
来源:互联网 发布:淘宝怎么修改手机号 编辑:程序博客网 时间:2024/06/14 18:09
布局文件
<?xml version="1.0" encoding="utf-8"?><RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:id="@+id/activity_main" xmlns:openxu="http://schemas.android.com/apk/res-auto" android:layout_width="match_parent" android:layout_height="match_parent" android:paddingBottom="@dimen/activity_vertical_margin" android:paddingLeft="@dimen/activity_horizontal_margin" android:paddingRight="@dimen/activity_horizontal_margin" android:paddingTop="@dimen/activity_vertical_margin" tools:context="com.bwie.test.myview.MainActivity"> <com.bwie.test.myview.MyView android:layout_width="200dip" android:layout_height="100dip" openxu:mTextSize="25sp" openxu:mText="自定义属性" openxu:mTextColor="#0000ff" android:background="#f00" /></RelativeLayout>别忘了写这句,否则不可以调用自定义的属性值
xmlns:openxu="http://schemas.android.com/apk/res-auto"
在Values文件夹下创建attrs.xml文件<?xml version="1.0" encoding="utf-8"?><resources> <attr name="mText" format="string"/> <attr name="mTextColor" format="color" /> <attr name="mTextSize" format="dimension" /> <declare-styleable name="MyView"> <attr name="mText"/> <attr name="mTextColor"/> <attr name="mTextSize"/> </declare-styleable></resources>自定义Class类继承View,实现的代码:
public class MyView extends View{ /*文字*/ private String mText; private int mTextColor; private int mTextSize;// 绘制文本范围 private Rect mbound; private Paint mPaint; public MyView(Context context) { this(context,null); } public MyView(Context context, AttributeSet attrs) { this(context, attrs,0); } /*构造方法里边实例化画笔*/ public MyView(Context context, AttributeSet attrs, int defStyleAttr) { super(context, attrs, defStyleAttr); /* // 自定义布局 mText="文字"; mTextColor= Color.BLACK; mTextSize=100; mPaint = new Paint(); mPaint.setTextSize(mTextSize); mPaint.setColor(mTextColor); *//* 获得绘制文本的宽s和高*//* mbound = new Rect(); mPaint.getTextBounds(mText,0,mText.length(),mbound);*/ //获取自定义属性的值 TypedArray a = context.getTheme().obtainStyledAttributes(attrs, R.styleable.MyView, defStyleAttr, 0); mText=a.getString(R.styleable.MyView_mText); mTextColor=a.getColor(R.styleable.MyView_mTextColor,Color.BLACK);// mTextSize=(int) a.getDimension(R.styleable.MyView_mTextSize,100); // int,float----可以强转为int mTextSize=a.getDimensionPixelSize(R.styleable.MyView_mTextSize,100); //int ,int a.recycle();//回收 mPaint = new Paint(); mPaint.setTextSize(mTextSize); mPaint.setColor(mTextColor);// 获得绘制文本的宽和高 mbound = new Rect(); mPaint.getTextBounds(mText,0,mText.length(),mbound); } public MyView(Context context, AttributeSet attrs, int defStyleAttr, int defStyleRes) { super(context, attrs, defStyleAttr, defStyleRes); } /*测量*/ @Override protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) { super.onMeasure(widthMeasureSpec, heightMeasureSpec); } /*绘制*/ @Override protected void onDraw(Canvas canvas) { super.onDraw(canvas); /* 绘制文字*/ canvas.drawText(mText,getWidth()/2-mbound.width()/2,getHeight()/2-mbound.height()/2,mPaint); } //定位 @Override protected void onLayout(boolean changed, int left, int top, int right, int bottom) { super.onLayout(changed, left, top, right, bottom); } /*点击*/ @Override public boolean onTouchEvent(MotionEvent event) { switch (event.getAction()){ case MotionEvent.ACTION_MOVE: break; case MotionEvent.ACTION_DOWN: /*随机数*/ float a=(float) (Math.random()*10000); mText=""+a; invalidate(); //更新视图 break; case MotionEvent.ACTION_UP: Log.d("main","抬起"); break; } return super.onTouchEvent(event); }最后的效果图
阅读全文
0 0
- Android 自定义属性(点击生成随机数)
- Android 自定义Textview 点击生成随机数
- Android 点击生成随机数。
- 自定义View+点击生成随机数
- 自定义view点击生成随机数
- 自定义View点击生成随机数
- 自定义TextView自定义,点击生成随机数
- 自定义View之点击生成随机数
- 自定义view 生成随机数
- 自定义View+随机数点击变化
- 自定义view随机数点击事件
- 自定义圆自定义文字随机数点击改变
- iOS 生成自定义位数随机数
- Android:Random生成随机数
- Android生成随机数
- Android生成随机数
- Android 随机数的生成
- Android生成随机数
- Java反射机制
- python3.x 异常之TypeError & UnicodeDecodeError
- 致三年后的自己:愿你找到自己想要的
- 简单自定义vs2015编译器的背景图片
- sessionStorage存储
- Android 自定义属性(点击生成随机数)
- hdu 2112 HDU Today(Dijtktra+map)
- 算法练习(11):Reverse Nodes in k-Group
- 网页图片的压缩——保持尺寸不变,减小图片大小
- 第四周 项目六 多项式求和
- 周末总结
- openlayers4中闪烁点的实现
- Algorithm-week4
- Qt 之 模仿 QQ登陆界面——功能篇(一)