Android實現自訂view---繪製圖片

來源:互聯網
上載者:User

標籤:android   style   blog   class   code   java   

主要原理是: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; }  } }
效果如下

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.