现在很多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

更多相关文章

  1. Android选择图片
  2. Android中合多图片和文字合成PDF文件---路很长
  3. ANDROID XML图像资源文件详细讲解(一)
  4. Android中的缓存策略—拉取网络图片,缓存本地
  5. android 新闻图片加载,缓存处理
  6. Android(安卓)使用ColorMatrix改变图片颜色
  7. Android(安卓)图片获取及上传
  8. 使用Glide替换Picasso经验小结
  9. Android中新建的文件在R没有显示对应的文件解决办法总结

随机推荐

  1. Android中的弹出提示框
  2. Android使用自定义字体
  3. Appium自动化测试Android
  4. android viewpage的施用
  5. Android Studio 第四十九期 - Sqlite数据
  6. android studio 打包自动生成版本号与日
  7. XE5 开发android平台搭建
  8. Android 源码之OpenGL 人物走动源码
  9. [Android][Audio] audio_policy.conf文件
  10. 【实习项目记录】(三)调整网络图片固定宽