主要原理是:extends view重载onDrow(),需要一bitmap,重载view,在 canvas上画临时bmp,当按下确定的时候按下

   画到real_bmp上,其他的跟前面的基本上没有什么区别。


   
import com.example.test.R;import android.app.Activity;import android.content.Context;import android.graphics.Bitmap;import android.graphics.Canvas;import android.os.Bundle;import android.provider.ContactsContract.CommonDataKinds.Event;import android.util.AttributeSet;import android.util.Log;import android.view.MotionEvent;import android.view.View;public class bmpeffect extends Activity{ /*   * 需要一bitmap,重载view,在 canvas上画临时bmp,当按下确定的时候按下   * 画到real_bmp上,其他的跟前面的基本上没有什么区别   */private static Bitmap src;private static Bitmap heart;private static Bitmap star;private static Bitmap star2;private static int choose;private int height;private int width;public static float bmp_x;    public static  float bmp_y;private Canvas my_canvas;public void onCreate(Bundle save){Log.e("on create", "hello");  super.onCreate(save);  src=data.src_bmp;  if(data.src_bmp==null)  Log.e("bmp", "null");  my_canvas=new Canvas(data.src_bmp);  height=data.src_bmp.getHeight();  width=data.src_bmp.getWidth(); heart=data.getbmp(getResources(), R.drawable.small_heart); star=data.getbmp(getResources(), R.drawable.small_star); star2=data.getbmp(getResources(), R.drawable.star8);  choose=0;  setContentView(R.layout.bmptest);  }  public void on_star2(final View v){  //star8;  choose=3;    }  public void on_star(final View v){  choose=2;  }  public void on_heart(final View v){  choose=1;  }  public void on_ok(final View v){ drow_bmp(my_canvas);  }  public static void drow_bmp(Canvas canvas){  switch(choose){  case 1:  canvas.drawBitmap(heart, bmp_x, bmp_y, null);  break;  case 2:  canvas.drawBitmap(star, bmp_x,bmp_y, null);  break;  case 3:  //canvas.drawBitmap(star2, matrix, paint)  canvas.drawBitmap(star2, bmp_x, bmp_y, null);  }  }  public static class bmpview extends View{public bmpview(Context context,AttributeSet attrs) {super(context,attrs);// TODO Auto-generated constructor stub} protected void onDraw(Canvas canvas){ canvas.drawColor(0xff000000); Log.i("canvas", "drow"); if(src!=null){ canvas.drawBitmap(src, 0, 0, null); } drow_bmp(canvas); } public boolean onTouchEvent(MotionEvent event){ int action=event.getAction(); //现在应该可以不用区分不同的手势事件了,只需要得到 bmp_x=event.getX(); bmp_y=event.getY(); invalidate(); return true; }  } }
效果如下

更多相关文章

  1. android直播app礼物连击动画效果
  2. android 主界面 底部菜单 DEMO
  3. android 小技巧,不断更新中
  4. Handler内存泄露原理及解决方法
  5. Android视频播放器屏幕左侧边随手指上下滑动亮度调节功能的原理
  6. Android(安卓)Studio 设置内存大小及原理
  7. android之点击回退键俩次退出程序
  8. 四则运算第一次冲刺
  9. Android的ViewFlipper与GestureDetector

随机推荐

  1. 最强 Android(安卓)Studio 使用小技巧和
  2. Android(安卓)5.0为了安全而“关门”
  3. 跨进程调用Service(AIDL服务)
  4. Android开发请求网络方式详解
  5. android学习——Android的系统架构简介
  6. Android中图片占用内存的计算
  7. Android本地视频播放器开发--ffmpeg解码
  8. Android(安卓)startActivity源码详解
  9. android中MVP的理解和实例
  10. EventBus3.0使用详解