Android应用《撕开美女衣服》的实现过程及源代码
16lz
2021-01-26
现在很多Android市场中都能找到关于美女的应用,比如 撕开美女衣服、吹裙子等。
这些应用的下载量挺大的,作为Android的开发人员或者一名技术人员我们不能只局限在欣赏应用的层面,很多时候需要我们去揭开神秘背后的真相,下面我们来看一下如何来开发这样一个类似的撕开美女衣服的应用。
先来看一下效果:
其实这个应用的原理很简单,有两张图片,布局如下:
<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="fill_parent" android:layout_height="fill_parent" ><ImageView android:id="@+id/back_img" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_gravity="center" android:src="@drawable/back"/><ImageView android:id="@+id/up_img" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_gravity="center" android:src="@drawable/up"/></FrameLayout>
上面一张图片是穿着衣服的图片,下面一张图片是撕开衣服的图片。
在Activity中我们先创建一个可以编辑的Bitmap图片对象,然后对该图片中像素点的颜色(透明度)进行改变就实现我们所要的效果了。
package com.example.sikaimeinvyifu;import android.app.Activity;import android.graphics.Bitmap;import android.graphics.BitmapFactory;import android.graphics.BitmapFactory.Options;import android.graphics.Canvas;import android.graphics.Color;import android.graphics.Matrix;import android.graphics.Paint;import android.os.Bundle;import android.view.MotionEvent;import android.view.View;import android.view.View.OnTouchListener;import android.widget.ImageView;public class MainActivity extends Activity {private ImageView backImg;private ImageView upImg;private Bitmap alterBitmap;private Canvas canvas;private Paint paint;@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);//改变图片大小BitmapFactory.Options opts = new Options();opts.inSampleSize = 1;backImg = (ImageView) findViewById(R.id.back_img);upImg = (ImageView) findViewById(R.id.up_img);//只读的图片Bitmap back = BitmapFactory.decodeResource(getResources(), R.drawable.back, opts);Bitmap up = BitmapFactory.decodeResource(getResources(), R.drawable.up, opts);//可以修改的空白的BitmapalterBitmap = Bitmap.createBitmap(up.getWidth(), up.getHeight(), up.getConfig());//将alterBitmap作为画布,然后将Bitmap up画到画布上。canvas = new Canvas(alterBitmap); paint = new Paint();paint.setStrokeWidth(5);paint.setColor(Color.BLACK);canvas.drawBitmap(up, new Matrix(), paint);backImg.setImageBitmap(back);upImg.setImageBitmap(alterBitmap);upImg.setOnTouchListener(new OnTouchListener() {@Overridepublic boolean onTouch(View v, MotionEvent event) {switch (event.getAction()) {case MotionEvent.ACTION_MOVE:int x = (int) event.getX();int y = (int) event.getY();System.out.println(x);System.out.println(y);for(int i=-5; i<5; i++){for(int j=-5; j<5; j++){//更改画布上该像素点的颜色alterBitmap.setPixel(i + x, j + y, Color.TRANSPARENT);}}//重新绘制到ImageView上面upImg.setImageBitmap(alterBitmap);break;default:break;}return true;}});}}
源代码下载地址:http://download.csdn.net/detail/lxq_xsyu/6744849
更多相关文章
- Android选择图片
- Android中合多图片和文字合成PDF文件---路很长
- ANDROID XML图像资源文件详细讲解(一)
- Android中的缓存策略—拉取网络图片,缓存本地
- android 新闻图片加载,缓存处理
- Android(安卓)使用ColorMatrix改变图片颜色
- Android(安卓)图片获取及上传
- 使用Glide替换Picasso经验小结
- Android中新建的文件在R没有显示对应的文件解决办法总结