Android实现自定义view---绘制图片
16lz
2021-01-25
主要原理是: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; } } }
效果如下
更多相关文章
- android直播app礼物连击动画效果
- android 主界面 底部菜单 DEMO
- android 小技巧,不断更新中
- Handler内存泄露原理及解决方法
- Android视频播放器屏幕左侧边随手指上下滑动亮度调节功能的原理
- Android(安卓)Studio 设置内存大小及原理
- android之点击回退键俩次退出程序
- 四则运算第一次冲刺
- Android的ViewFlipper与GestureDetector