Android图像处理(三) 刮刮卡
2016-05-25 19:37
387 查看
思路:
类似前面的画画板不过这里是通过将滑动的像素点设置成透明颜色
altBitMap.setPixel(x + i, y + j, Color.TRANSPARENT)
而且是双层for循环设置以这个点为中心的圆为透明颜色(一个像素一个像素的刮太慢了。。。)
而且在设置的时候注意边界问题。
代码:
package cn.zsp.guaguale; import android.graphics.Bitmap; import android.graphics.BitmapFactory; import android.graphics.Canvas; import android.graphics.Color; import android.graphics.Matrix; import android.graphics.Paint; import android.os.Bundle; import android.support.v7.app.AppCompatActivity; import android.view.MotionEvent; import android.view.View; import android.widget.ImageView; import android.widget.Toast; public class MainActivity extends AppCompatActivity { private ImageView imageView; private Bitmap altBitMap; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); imageView = (ImageView) findViewById(R.id.iv); Bitmap bitMap = BitmapFactory.decodeResource(getResources(), R.drawable.guagua); altBitMap = Bitmap.createBitmap(bitMap.getWidth(), bitMap.getHeight(), bitMap.getConfig()); Canvas canvas = new Canvas(altBitMap); Paint paint = new Paint(); canvas.drawBitmap(bitMap, new Matrix(), paint); imageView.setImageBitmap(altBitMap); imageView.setOnTouchListener(new View.OnTouchListener() { @Override public boolean onTouch(View v, MotionEvent event) { switch (event.getAction()) { case MotionEvent.ACTION_MOVE: int x = (int) event.getX(); int y = (int) event.getY(); Toast.makeText(MainActivity.this, "移动" + x + "," + y, Toast.LENGTH_SHORT).show(); for (int i = -20; i < 20; i++) { for (int j = -20; j < 20; j++) { if (Math.sqrt((i * i) + (j * j)) <= 20) {//设置成透明 以x,y 为半径的圆 遍历 //宽 高 不能越界 if (x + i >= 0 && x + i < altBitMap.getWidth() && y + j >= 0 && y + j < altBitMap.getHeight()) { altBitMap.setPixel(x + i, y + j, Color.TRANSPARENT); } } } } imageView.setImageBitmap(altBitMap); break; } return true; } }); } }
相关文章推荐
- Android 天气预报
- 关于android中调用系统拍照,返回图片是旋转90度
- Android之AIDL
- Android 漫谈---登录窗口
- Android常用布局极其优缺点
- Android 和 Java 性能优化最佳实践
- Androin学习笔记五十:Android 将文件复制到指定目录
- Android图像处理(二) 画画板
- 一图看懂layout_gravity和gravity的区别
- Android Handler个人见解
- Ubuntu Android 开发(三) 使用SDK更新SDK 镜像
- Android实践之简易天气(一)
- Android中Toast的用法简介
- android 多媒体编程(四) Vitamio播放视频
- android 多媒体编程(三) VideoView播放视频
- android 多媒体编程(二) MediaPlayer 播放视频
- android 多媒体编程(一) MediaPlayer 播放音频
- Android Studio不打印Logcat解决!
- Android官方开发文档Training系列课程中文版:OpenGL绘图之响应触摸事件
- 在AndroidStudio中使用V8包中的RenderScript