自定义TextView自定义,点击生成随机数
来源:互联网 发布:调度数据网络交流 编辑:程序博客网 时间:2024/06/05 21:52
package day.com.day01_viewall;
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.util.Log;
import android.view.MotionEvent;
import android.view.View;
import java.util.ArrayList;
import static android.R.attr.width;
import static android.content.ContentValues.TAG;
/**
* autour: 周旋
* date: 2017/9/28 15:06
* update: 2017/9/28
*/
public class MyTexxtView extends View{
/**
* 需要绘制的文字
*/
private String mText;
/**
* 文本的颜色
*/
private int mTextColor;
/**
* 文本的大小
*/
private float mTextSize;
private ArrayList<String> mTextList;
/**
* 绘制时控制文本绘制的范围
*/
private Rect mBound;
private Paint mPaint;
public MyTexxtView(Context context) {
this(context, null);
}
public MyTexxtView(Context context, AttributeSet attrs) {
this(context, attrs, 0);
}
public MyTexxtView(Context context, AttributeSet attrs, int defStyleAttr) {
super(context, attrs, defStyleAttr);
mTextList = new ArrayList<String>();
//获取自定义属性的值
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);
Log.v("openxu", "文本总长度:"+mText);
mPaint = new Paint();
mPaint.setTextSize(mTextSize);
mPaint.setColor(mTextColor);
//获得绘制文本的宽和高
mBound = new Rect();
mPaint.getTextBounds(mText, 0, mText.length(), mBound);
}
//API21
// public MyTextView(Context context, AttributeSet attrs, int defStyleAttr, int defStyleRes) {
// super(context, attrs, defStyleAttr, defStyleRes);
// init();
// }
@Override
protected void onDraw(Canvas canvas) {
//绘制文字
canvas.drawText(mText,88 ,88, mPaint);
Log.i(TAG, "onDraw:=====6666 ");
}
@Override
public boolean onTouchEvent(MotionEvent event) {
switch (event.getAction()){
case MotionEvent.ACTION_MOVE:
break;
case MotionEvent.ACTION_DOWN:
//获取屏幕上点击的坐标
float x=event.getX();
float y = event.getY();
float a=(float) (Math.random()*10000);
mText=""+a;
invalidate(); //更新视图
Log.i(TAG, "onTouchEventyyy:== "+y+"onTouchEventxxx:=="+x);
//如果坐标在我们的文字区域内,则将点击的文字改颜色
if(x>width-2*textWidth){
//点击后,获取坐标代表的单词的含义
index = (int) (y/(height/27));
invalidate();//更新视图
return true;
}
break;
case MotionEvent.ACTION_UP:
//点击抬起后,回复初始位置。
Log.i(TAG, "抬起");
break;
}
//这句话不要修改
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.util.Log;
import android.view.MotionEvent;
import android.view.View;
import java.util.ArrayList;
import static android.R.attr.width;
import static android.content.ContentValues.TAG;
/**
* autour: 周旋
* date: 2017/9/28 15:06
* update: 2017/9/28
*/
public class MyTexxtView extends View{
/**
* 需要绘制的文字
*/
private String mText;
/**
* 文本的颜色
*/
private int mTextColor;
/**
* 文本的大小
*/
private float mTextSize;
private ArrayList<String> mTextList;
/**
* 绘制时控制文本绘制的范围
*/
private Rect mBound;
private Paint mPaint;
public MyTexxtView(Context context) {
this(context, null);
}
public MyTexxtView(Context context, AttributeSet attrs) {
this(context, attrs, 0);
}
public MyTexxtView(Context context, AttributeSet attrs, int defStyleAttr) {
super(context, attrs, defStyleAttr);
mTextList = new ArrayList<String>();
//获取自定义属性的值
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);
Log.v("openxu", "文本总长度:"+mText);
mPaint = new Paint();
mPaint.setTextSize(mTextSize);
mPaint.setColor(mTextColor);
//获得绘制文本的宽和高
mBound = new Rect();
mPaint.getTextBounds(mText, 0, mText.length(), mBound);
}
//API21
// public MyTextView(Context context, AttributeSet attrs, int defStyleAttr, int defStyleRes) {
// super(context, attrs, defStyleAttr, defStyleRes);
// init();
// }
@Override
protected void onDraw(Canvas canvas) {
//绘制文字
canvas.drawText(mText,88 ,88, mPaint);
Log.i(TAG, "onDraw:=====6666 ");
}
@Override
public boolean onTouchEvent(MotionEvent event) {
switch (event.getAction()){
case MotionEvent.ACTION_MOVE:
break;
case MotionEvent.ACTION_DOWN:
//获取屏幕上点击的坐标
float x=event.getX();
float y = event.getY();
float a=(float) (Math.random()*10000);
mText=""+a;
invalidate(); //更新视图
Log.i(TAG, "onTouchEventyyy:== "+y+"onTouchEventxxx:=="+x);
//如果坐标在我们的文字区域内,则将点击的文字改颜色
if(x>width-2*textWidth){
//点击后,获取坐标代表的单词的含义
index = (int) (y/(height/27));
invalidate();//更新视图
return true;
}
break;
case MotionEvent.ACTION_UP:
//点击抬起后,回复初始位置。
Log.i(TAG, "抬起");
break;
}
//这句话不要修改
return super.onTouchEvent(event);
}
}
//xml中调用
<day.com.day01_viewall.MyTexxtView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
fanyl:mTextSize="25sp"
fanyl:mTextColor="#263de9"
fanyl:mText="1508A"
/>
阅读全文
0 0
- 自定义TextView自定义,点击生成随机数
- Android 自定义Textview 点击生成随机数
- 自定义View+点击生成随机数
- 自定义view点击生成随机数
- 自定义View点击生成随机数
- Android 自定义属性(点击生成随机数)
- 自定义View之点击生成随机数
- 自定义view 生成随机数
- 自定义TextView设置边框与背景颜色添加点击事件,点击更改随机数与背景
- 自定义View+随机数点击变化
- 自定义view随机数点击事件
- android自定义TextView点击效果
- 自定义圆自定义文字随机数点击改变
- iOS 生成自定义位数随机数
- 自定义控件_View----实现点击更换随机数
- 点击TextView中链接,自定义处理事件
- 自定义圆角点击变色TextView
- android TextView 实现自定义文字点击效果
- Oracle 12c R2版本 Application Containers 特性(一)
- Java 调用 Rest api 设置经典 Linux 虚拟机的实例启停
- linux安装mysql
- 刮刮乐小游戏
- 理解RESTful架构
- 自定义TextView自定义,点击生成随机数
- Linux上安装ImageMagick和JMagick
- Mac Android Studio中启动Android Device Monitor失败 解决方案
- 【润乾报表5】普通填报表 只对用户修改行更新创建人编号
- Cron表达式构成
- 一张图让你彻底学懂java中try_catch_finally语句的流程走向
- linux操作oracle
- Oracle 12c R2版本 Application Containers 特性(二)
- 大数据初学者怎样学习?