android 选取图片部分显示(验证码)
来源:互联网 发布:python scikit learn 编辑:程序博客网 时间:2024/04/30 00:26
最近在做一些小游戏,然后难免就遇到一些矢量图集成的全部图片。(即一张图包含n个独立图片)
这里尝试使用最简单的方法canvas来取出所要的图片。(当前图片就只有一张,上面有0-9是个数字,考虑将其中一个个的数字切割下来,需要显示什么数字,组合一下就好了。)
示例程序:
在editText中输入数据,然后提交按键由图片截取并转换成类似验证码的形式。
其中,数字图片只有一张,如图:
具体实现方法
先自定义iew:
public class MyView extends View{private Bitmap num[] = new Bitmap[10];private int iconWidth=30,iconHeight=50;private boolean isFirst;private String str = new String();public MyView(Context context, AttributeSet attrs) {super(context, attrs);isFirst = true;initNum();}public void initNum(){Bitmap resource = BitmapFactory.decodeResource(this.getResources(), R.drawable.num); for(int i=0;i<10;i++) num[i] = Bitmap.createBitmap(resource, 0, i*11 , 7, 11); //初始化数字图片,其width为7,height为11}protected void onDraw(Canvas canvas) {if(isFirst){isFirst = false;for(int i=0;i<4;i++)canvas.drawBitmap(num[i], null, new Rect(iconWidth*i, 0, (i+1)*iconWidth, iconHeight), null);}else{//点击之后更新数据char numbers[] = str.toCharArray(); //将获取的editText字符串妆化为数组for(int i=0;i<numbers.length;i++)canvas.drawBitmap(num[numbers[i]-'0'], null, new Rect(iconWidth*i, 0, (i+1)*iconWidth, iconHeight), null);}}public void setNumbers(String s){str = s;}}
布局文件:
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" 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=".NumberTest" > <TextView android:id="@+id/textView1" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="输入数字:" /> <EditText android:id="@+id/editText1" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_alignLeft="@+id/textView1" android:layout_below="@+id/textView1" android:ems="10" > </EditText> <Button android:id="@+id/button1" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_alignLeft="@+id/textView1" android:layout_below="@+id/myview" android:text="显示" /> <com.qiao.numbertest.MyView android:id="@+id/myview" android:layout_width="wrap_content" android:layout_height="50dp" android:layout_alignLeft="@+id/editText1" android:layout_alignRight="@+id/editText1" android:layout_below="@+id/editText1" android:layout_margin="3dp" android:padding="5dp" /></RelativeLayout>
最后是主activity:、
public class NumberTest extends Activity {//implements OnButtonListener {private EditText et;private Button bt;private MyView mv;@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_number_test);et = (EditText)findViewById(R.id.editText1);bt = (Button)findViewById(R.id.button1);mv = (MyView)findViewById(R.id.myview);bt.setOnClickListener(new OnClickListener() {@Overridepublic void onClick(View v) {String text = et.getText().toString();if(text != ""){mv.setNumbers(text);mv.invalidate();}}});}}
源码下载链接地址:
http://download.csdn.net/detail/u011254308/6476525
for(int i=0;i<10;i++)
num[i] = Bitmap.createBitmap(resource, 0, i*11 , 7, 11); //初始化数字图片,其width为7,height为11
num[i] = Bitmap.createBitmap(resource, 0, i*11 , 7, 11); //初始化数字图片,其width为7,height为11
- android 选取图片部分显示(验证码)
- android选取相册图片,适屏显示
- ps如何选取自己想要的图片部分(一)
- ps如何选取自己想要的图片部分(二)
- 验证码图片显示
- android 选取相册图片
- 矩形框选取图片并保存显示(截图功能)
- 无法显示验证码图片
- Struts2显示图片验证码
- Android 拍照与从相册选取图片时,图片不显示的问题
- Android 通过Gallery选取图片
- android之选取本地图片
- Android选取本地的图片
- 图片验证码部分代码整理
- Android图片验证码
- Android BottomSheet:以选取图片为例(2)
- android+html5上传图片 只显示图片头部部分
- android拍照图片选取与图片剪裁
- 程序基石系列之类的声明Class declaration
- 安卓自测试题——第十五期
- PHP的构造方法,析构方法和this关键字
- Windows服务简介
- PyScripter 错误 UnicodeEncodeError:'ascii' codec can't encode characters in position 1-2
- android 选取图片部分显示(验证码)
- node.js 的crypto模块用来加密
- cocos2d-x总结(六) cocos2d-x与ISO内存管理
- jQuery-----效果
- 安卓自测试题——第十六期
- 设计模式六大原则(1):单一职责原则
- linux centos installs svn server with http
- 本地推送
- 一款开源的自动化测试工具curl-loader