自定义验证码
来源:互联网 发布:数据加密芯片 编辑:程序博客网 时间:2024/05/16 10:10
- protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec)
- {
- int widthMode = MeasureSpec.getMode(widthMeasureSpec);
- int widthSize = MeasureSpec.getSize(widthMeasureSpec);
- int heightMode = MeasureSpec.getMode(heightMeasureSpec);
- int heightSize = MeasureSpec.getSize(heightMeasureSpec);
- int width;
- int height ;
- if (widthMode == MeasureSpec.EXACTLY)
- {
- width = widthSize;
- } else
- {
- mPaint.setTextSize(mTitleTextSize);
- mPaint.getTextBounds(mTitle, 0, mTitle.length(), mBounds);
- float textWidth = mBounds.width();
- int desired = (int) (getPaddingLeft() + textWidth + getPaddingRight());
- width = desired;
- }
- if (heightMode == MeasureSpec.EXACTLY)
- {
- height = heightSize;
- } else
- {
- mPaint.setTextSize(mTitleTextSize);
- mPaint.getTextBounds(mTitle, 0, mTitle.length(), mBounds);
- float textHeight = mBounds.height();
- int desired = (int) (getPaddingTop() + textHeight + getPaddingBottom());
- height = desired;
- }
- setMeasuredDimension(width, height);
- }
现在我们修改下布局文件:
- <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.example.customview01"
- android:layout_width="match_parent"
- android:layout_height="match_parent" >
- <com.example.customview01.view.CustomTitleView
- android:layout_width="wrap_content"
- android:layout_height="wrap_content"
- custom:titleText="3712"
- android:padding="10dp"
- custom:titleTextColor="#ff0000"
- android:layout_centerInParent="true"
- custom:titleTextSize="40sp" />
- </RelativeLayout>
现在的效果是:
完全复合我们的预期,现在我们可以对高度、宽度进行随便的设置了,基本可以满足我们的需求。
当然了,这样下来我们这个自定义View与TextView相比岂不是没什么优势,所有我们觉得给自定义View添加一个事件:
在构造中添加:
- this.setOnClickListener(new OnClickListener()
- {
- @Override
- public void onClick(View v)
- {
- 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();
- }
下面再来运行:
我们添加了一个点击事件,每次让它随机生成一个4位的随机数,有兴趣的可以在onDraw中添加一点噪点,然后改写为验证码,是不是感觉很不错。
0 0
- 自定义“验证码”控件
- 自定义验证码
- 自定义“验证码”控件
- 自定义“验证码”控件
- 自定义验证码控件
- 自定义生成验证码
- 自定义验证码
- 自定义验证码方法
- laravel验证码,自定义表单验证
- 自定义view之一:自定义验证码控件
- PHP自定义大小验证码
- Asp.net自定义验证码
- jcaptcha 自定义验证码例子
- extjs4 自定义验证码类
- 自定义View-输入验证码
- 自定义TimeButton验证码倒计时
- 自定义验证码校验对话框
- Android自定义验证码组件
- Java GUI
- 入门训练 Fibonacci数列
- C++ 函数指针
- Dynamic Programming?
- golang编程之文件操作
- 自定义验证码
- Java生成和操作Excel文件
- hdu1301 kruskal+并查集
- CocoaPods 的安装和更新流程
- 沙特王子等2.5亿美元投资打车软件Lyft获5.3%股权
- linux环境下自动备份mysql
- android view的事件传递机制学习笔记
- CentOS上安裝設定JAVA環境
- TOMCAT与WAS运行时错误处理的不同