我是靠谱客的博主 傲娇樱桃,最近开发中收集的这篇文章主要介绍自定义View点击生成随机数,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

//首先创建自定义View类继承 view

public class CustomTitleView extends View {
/**

* 文本

*/

private String mTitleText;

/**

* 文本的颜色

*/

private int mTitleTextColor;

/**

* 文本的大小

*/

private int mTitleTextSize;


/**

* 绘制时控制文本绘制的范围

*/

private Rect mBound;

private Paint mPaint;


public CustomTitleView(Context context, AttributeSet attrs)
{
this(context, attrs, 0);

}
public CustomTitleView(Context context)
{
this(context, null);

}
/**

* 获得我自定义的样式属性

*

* @param context

* @param attrs

* @param defStyle

*/

public CustomTitleView(Context context, AttributeSet attrs, int defStyle)
{
super(context, attrs, defStyle);

/**

* 获得我们所定义的自定义样式属性

*/

TypedArray a = context.getTheme().obtainStyledAttributes(attrs, R.styleable.CustomTitleView, defStyle, 0);

int n = a.getIndexCount();

for (int i = 0; i < n; i++)
{
int attr = a.getIndex(i);

switch (attr)
{
case R.styleable.CustomTitleView_titleText:
mTitleText = a.getString(attr);

break;

case R.styleable.CustomTitleView_titleTextColor:
// 默认颜色设置为黑色

mTitleTextColor = a.getColor(attr, Color.BLACK);

break;

case R.styleable.CustomTitleView_titleTextSize:
// 默认设置为16sp,TypeValue也可以把sp转化为px

mTitleTextSize = a.getDimensionPixelSize(attr, (int) TypedValue.applyDimension(
TypedValue.COMPLEX_UNIT_SP, 16, getResources().getDisplayMetrics()));

break;


}
}
a.recycle();


/**

* 获得绘制文本的宽和高

*/

mPaint = new Paint();

mPaint.setTextSize(mTitleTextSize);

// mPaint.setColor(mTitleTextColor);

mBound = new Rect();

mPaint.getTextBounds(mTitleText, 0, mTitleText.length(), mBound);


}
@Override

protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec)
{
super.onMeasure(widthMeasureSpec, heightMeasureSpec);

}
@Override

protected void onDraw(Canvas canvas)
{
mPaint.setColor(Color.YELLOW);

canvas.drawRect(0, 0, getMeasuredWidth(), getMeasuredHeight(), mPaint);


mPaint.setColor(mTitleTextColor);

canvas.drawText(mTitleText, getWidth() / 2 - mBound.width() / 2, getHeight() / 2 + mBound.height() / 2, mPaint);

this.setOnClickListener(new OnClickListener() {
@Override

public void onClick(View view) {
mTitleText = randomText();

postInvalidate();

}
});

}
private String randomText() {
Random random = new Random();

Set<Integer> set = new HashSet<Integer>();

while (set.size() < 4)
{
int randomInt = random.nextInt(10);

set.add(randomInt);

}
StringBuffer sb = new StringBuffer();

for (Integer i : set)
{
sb.append("" + i);

}
return sb.toString();

}
}
//创建attrs

<?xml version="1.0" encoding="utf-8"?>
<resources>


<attr name="titleText" format="string" />

<attr name="titleTextColor" format="color" />

<attr name="titleTextSize" format="dimension" />


<declare-styleable name="CustomTitleView">

<attr name="titleText" />

<attr name="titleTextColor" />

<attr name="titleTextSize" />

</declare-styleable>

</resources>
//布局

注意:一定要加(后面为包名)

xmlns:custom="http://schemas.android.com/apk/res/com.tangao.dianjiview"

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"

xmlns:tools="http://schemas.android.com/tools"

xmlns:custom="http://schemas.android.com/apk/res/com.tangao.dianjiview"

android:layout_width="match_parent"

android:background="@color/colorPrimaryDark"

android:layout_height="match_parent" >


<com.tangao.dianjiview.CustomTitleView

android:id="@+id/tangao"

android:layout_width="200dp"

android:layout_height="200dp"

android:layout_centerInParent="true"

custom:titleText="3712"

custom:titleTextColor="#ff0000"

custom:titleTextSize="40sp" />

</RelativeLayout>

最后

以上就是傲娇樱桃为你收集整理的自定义View点击生成随机数的全部内容,希望文章能够帮你解决自定义View点击生成随机数所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(49)

评论列表共有 0 条评论

立即
投稿
返回
顶部