Android简易实战教程--第三十话《撕衣美女》
2016-09-20 10:29
330 查看
此篇邪恶一些,给单身屌丝发点“福利”,通过图片的绘制,给美女脱掉衣服。
原理:图片覆盖图片,通过画笔对顶端的图片做一些特效处理,即手指触摸的地方,设置为透明。即可显示最底部的美女图片。
布局:一张内衣,一张外衣
代码如下:
运行程序:
![](https://img-blog.csdn.net/20160920102726202?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQv/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center)
欢迎关注本博客点击打开链接 http://blog.csdn.net/qq_32059827,每天花上5分钟,阅读一篇有趣的安卓小文哦
原理:图片覆盖图片,通过画笔对顶端的图片做一些特效处理,即手指触摸的地方,设置为透明。即可显示最底部的美女图片。
布局:一张内衣,一张外衣
<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=".MainActivity" > <ImageView android:layout_width="wrap_content" android:layout_height="wrap_content" android:src="@drawable/aneiyi" /> <ImageView android:id="@+id/iv" android:layout_width="wrap_content" android:layout_height="wrap_content" android:src="@drawable/awaiyi" /> </RelativeLayout>
代码如下:
package com.itandroid.syf; import android.os.Bundle; import android.app.Activity; 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.view.Menu; import android.view.MotionEvent; import android.view.View; import android.view.View.OnTouchListener; import android.widget.ImageView; public class MainActivity extends Activity { private Bitmap bmCopy; private ImageView iv; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); Bitmap bmSrc = BitmapFactory.decodeResource(getResources(), R.drawable.awaiyi); // 1.创建一个与原图一模一样大小的bitmap对象 bmCopy = Bitmap.createBitmap(bmSrc.getWidth(), bmSrc.getHeight(), bmSrc.getConfig()); // 2.创建画笔对象 Paint paint = new Paint(); // 3.创建画板对象 Canvas canvas = new Canvas(bmCopy); // 4.开始作画 canvas.drawBitmap(bmSrc, new Matrix(), paint); iv = (ImageView) findViewById(R.id.iv); //添加图片触摸事件 iv.setOnTouchListener(new OnTouchListener() { @Override public boolean onTouch(View v, MotionEvent event) { switch (event.getAction()) { case MotionEvent.ACTION_MOVE: //获取x和y的坐标 int x = (int) event.getX(); int y = (int) event.getY(); //算法 for(int i = -5; i <= 5; i++){//扩大坐标点的范围 for(int j = -5; j <= 5; j++){ //把用户划过的坐标置为透明色 //改变指定的像素颜色 if(Math.sqrt(i*i + j*j) <= 5){ //防止角标越界 if(x + i < bmCopy.getWidth() && y + j < bmCopy.getHeight() && x + i >= 0 && y + j >= 0){ //直接指定x和y的坐标置为第三个参数的颜色。即透明色 bmCopy.setPixel(x + i, y + j, Color.TRANSPARENT); // 绘制后,再次设置最新的图片情况,刷新显示。 iv.setImageBitmap(bmCopy); } } } } break; } return true; } }); } }
运行程序:
欢迎关注本博客点击打开链接 http://blog.csdn.net/qq_32059827,每天花上5分钟,阅读一篇有趣的安卓小文哦
相关文章推荐
- Android简易实战教程--第三十话《撕衣美女》
- Android实战简易教程-第四枪(ScrollView和HorizontalScrollView动态添加控件并提供事件监听)
- Android实战简易教程-第九枪(BitmapFactory.Options对资源图片进行缩放)
- Android实战简易教程-第二十二枪(基于Baas的用户注册功能)
- Android实战简易教程-第二十八枪(Uri转String型实例)
- Android实战简易教程-第五枪(ListView用法研究)
- Android实战简易教程-第十七枪(LayoutAnimation布局动画)
- Android实战简易教程-第二十三枪(基于Baas的用户注册验证用户名是否重复功能!)
- Android实战简易教程-第十九枪(SwipeRefreshLayout下拉刷新使用实例)
- Android实战简易教程-第二十七枪(Android设置头像上传功能实现)
- Android实战简易教程-第七枪(Activity的启动模式)
- Android实战简易教程-第十一枪(树形组件:ExpandableListView显示和动态添加删除)
- Android实战简易教程-第二十三枪(基于Baas的用户注册和登录模块实现!)
- Android实战简易教程-第二枪(Spinner下拉级联效果)
- Android实战简易教程-第八枪(ImageSwitcher用法实例)
- Android实战简易教程-第十三枪(五大布局研究)
- Android实战简易教程-第十四枪(介绍SwipeMenuListView-简单实现类似QQ的滑动删除效果)
- Android实战简易教程-第二十六枪(基于ViewPager实现微信页面切换效果)
- Android实战简易教程-第二十四枪(基于Baas的用户表查询功能实现!)