Android自定义view的点击事件
来源:互联网 发布:淘宝详情页文字大小 编辑:程序博客网 时间:2024/05/17 04:46
package com.bwie.test.custom_textview;
import android.content.Context;
import android.content.res.TypedArray;
import android.graphics.Canvas;
import android.graphics.Color;
import android.graphics.Paint;
import android.graphics.Rect;
import android.util.AttributeSet;
import android.view.MotionEvent;
import android.view.View;
import java.util.Random;
public class MyTextView extends View {
/**
* 需要绘制的文字
*/
private String mText;
/**
* 文本的颜色
*/
private int mTextColor;
/**
* 文本的大小
*/
private float mTextSize;
/**
* 绘制时控制文本绘制的范围
*/
private Rect mBound;
private Paint mPaint;
public MyTextView(Context context) {
this(context, null);
}
public MyTextView(Context context, AttributeSet attrs) {
this(context, attrs, 0);
}
public MyTextView(Context context, AttributeSet attrs, int defStyleAttr) {
super(context, attrs, defStyleAttr);
//获取自定义属性的值
TypedArray a = context.getTheme().obtainStyledAttributes(attrs, R.styleable.MyTextView, defStyleAttr, 0);
mText = a.getString(R.styleable.MyTextView_mText);
mTextColor = a.getColor(R.styleable.MyTextView_mTextColor, Color.BLACK);
mTextSize = a.getDimension(R.styleable.MyTextView_mTextSize, 100);
a.recycle(); //注意回收
mPaint = new Paint();
mPaint.setTextSize(mTextSize);
mPaint.setColor(mTextColor);
//获得绘制文本的宽和高
mBound = new Rect();
mPaint.getTextBounds(mText, 0, mText.length(), mBound);
}
@Override
protected void onDraw(Canvas canvas) {
//绘制文字
canvas.drawText(mText, getWidth() / 2 - mBound.width() / 2, getHeight() / 2 + mBound.height() / 2, mPaint);
}
@Override
public boolean onTouchEvent(MotionEvent event) {
switch (event.getAction()){
case MotionEvent.ACTION_MOVE:
case MotionEvent.ACTION_DOWN:
//获取屏幕上点击的坐标
float x=event.getX();
float y = event.getY();
//如果坐标在我们的文字区域内,则将点击的文字改颜色
Random ran=new Random();
int i = ran.nextInt(1000)+1000;
mText=i+"";
invalidate();
break;
case MotionEvent.ACTION_UP:
//点击抬起后,回复初始位置。
invalidate();//更新视图
return true;
}
//这句话不要修改
return super.onTouchEvent(event);
}
}
import android.content.Context;
import android.content.res.TypedArray;
import android.graphics.Canvas;
import android.graphics.Color;
import android.graphics.Paint;
import android.graphics.Rect;
import android.util.AttributeSet;
import android.view.MotionEvent;
import android.view.View;
import java.util.Random;
public class MyTextView extends View {
/**
* 需要绘制的文字
*/
private String mText;
/**
* 文本的颜色
*/
private int mTextColor;
/**
* 文本的大小
*/
private float mTextSize;
/**
* 绘制时控制文本绘制的范围
*/
private Rect mBound;
private Paint mPaint;
public MyTextView(Context context) {
this(context, null);
}
public MyTextView(Context context, AttributeSet attrs) {
this(context, attrs, 0);
}
public MyTextView(Context context, AttributeSet attrs, int defStyleAttr) {
super(context, attrs, defStyleAttr);
//获取自定义属性的值
TypedArray a = context.getTheme().obtainStyledAttributes(attrs, R.styleable.MyTextView, defStyleAttr, 0);
mText = a.getString(R.styleable.MyTextView_mText);
mTextColor = a.getColor(R.styleable.MyTextView_mTextColor, Color.BLACK);
mTextSize = a.getDimension(R.styleable.MyTextView_mTextSize, 100);
a.recycle(); //注意回收
mPaint = new Paint();
mPaint.setTextSize(mTextSize);
mPaint.setColor(mTextColor);
//获得绘制文本的宽和高
mBound = new Rect();
mPaint.getTextBounds(mText, 0, mText.length(), mBound);
}
@Override
protected void onDraw(Canvas canvas) {
//绘制文字
canvas.drawText(mText, getWidth() / 2 - mBound.width() / 2, getHeight() / 2 + mBound.height() / 2, mPaint);
}
@Override
public boolean onTouchEvent(MotionEvent event) {
switch (event.getAction()){
case MotionEvent.ACTION_MOVE:
case MotionEvent.ACTION_DOWN:
//获取屏幕上点击的坐标
float x=event.getX();
float y = event.getY();
//如果坐标在我们的文字区域内,则将点击的文字改颜色
Random ran=new Random();
int i = ran.nextInt(1000)+1000;
mText=i+"";
invalidate();
break;
case MotionEvent.ACTION_UP:
//点击抬起后,回复初始位置。
invalidate();//更新视图
return true;
}
//这句话不要修改
return super.onTouchEvent(event);
}
}
阅读全文
1 0
- Android自定义view的点击事件
- 0917Android基础自定义View的点击事件
- Android自定义View与添加点击事件
- 自定义view中控件的点击事件
- 自定义View圆的点击事件实现
- Android 自定义View——自定义点击事件
- Android view点击事件
- Android:View点击事件
- 自定义view随机数点击事件
- 自定义View添加点击事件
- Android View 点击事件的分发机制
- android...View的点击事件传递详解,
- Android代码练习:View的点击事件
- Android自定义View中的常用方法(距离、位置、点击事件)
- Android自定义View中的常用方法(距离、位置、点击事件)
- android actionbar自定义View并添加点击事件
- Android中使用回调接口实现自定义view的点击事件
- Android 自定义view模板,并实现点击事件的回调
- Flask中的flash消息
- HihoCoder 1233 Boxes (bfs 状压)
- 线程间通信
- 上传图片时,需注意事项
- HTML5基本内容
- Android自定义view的点击事件
- TableView
- 输出随机认证码图片
- 8.自定义函数综合应用示例
- python sort、sorted高级排序技巧
- [codefoces439C]The Intriguing Obsession(组合数学)
- 一、创建Assetbundle 在unity3d开发的游戏中,无论模型,音频,还是图片等,我们都做成Prefab,然后打包成Assetbundle,方便我们后面的使用,来达到资源的更新。
- 日期控件
- Linux内存清理