package com.gusfree.draw; import java.io.InputStream; import java.net.URL; import java.util.Random; import android.app.Activity; import android.content.Context; import android.graphics.Bitmap; import android.graphics.BitmapFactory; import android.graphics.Canvas; import android.graphics.Color; import android.graphics.Paint; import android.graphics.Paint.Style; import android.graphics.Rect; import android.graphics.RectF; import android.os.Bundle; import android.util.Log; import android.view.Display; import android.view.MotionEvent; import android.view.View; import android.view.WindowManager; import android.widget.Toast; public class DrawActivity extends Activity { @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(new MyView(this)); WindowManager mWindowManager = (WindowManager)getSystemService(WINDOW_SERVICE); Display mDisplay = mWindowManager.getDefaultDisplay(); Log.i("phoneInfo", "mDisplay.getWidth()>>> "+mDisplay.getWidth()); Log.i("phoneInfo", "mDisplay.getHeight()>>> "+mDisplay.getHeight()); // View - TextView } class MyView extends View{ public MyView(Context context) { super(context); } @Override protected void onDraw(Canvas canvas) { super.onDraw(canvas); Paint yellow=new Paint(); yellow.setColor(Color.YELLOW); yellow.setAntiAlias(true); canvas.drawCircle(160, 50, 20, yellow); yellow.setStyle(Style.STROKE); canvas.drawCircle(160+100, 50,20, yellow); yellow.setStrokeWidth(10); //선 두껍게 canvas.drawLine(160+20, 50+50, 160+100-20, 50+50, yellow); /* mission : 동그라미 100개 random한 크기와 위치 */ Random random = new Random(); Paint rPaint=new Paint(); //rPaint.setStyle(Style.STROKE); for(int i=0 ; i < 100 ; i++ ){ int x = random.nextInt(320); // 0~320까지 랜덤 int y = random.nextInt(400); int r = random.nextInt(160); int red=random.nextInt(255); int green=random.nextInt(255); int blue=random.nextInt(255); rPaint.setColor(Color.argb(80, red, green, blue)); //0~255 canvas.drawCircle(x, y, r, rPaint); } Paint bluePaint=new Paint(); bluePaint.setColor(Color.BLUE); canvas.drawRect(100, 200,100+200, 200+50,bluePaint); RectF oval=new RectF(50, 50, 300, 100); //네모 canvas.drawOval(oval, bluePaint); //타원 Paint white=new Paint(); white.setColor(Color.WHITE); white.setTextSize(30); canvas.drawText("안녕하세요", 75, 75, white); canvas.drawArc(oval, -360, 100, false, white); String addr="http://www.imaeil.com/news_img/2012/StarNews/20120504_170303000.jpg"; try { URL url = new URL(addr); // String -> URL //단말기에서 WebServer로 데이터 요청 + Permission InputStream is = url.openStream(); //요청 + 결과 받기 //비트맵 공장에서 받은 데이터로 Bitmap 생성 Bitmap bitmap=BitmapFactory.decodeStream(is); //비트맵을 지정된 위치에 그리기 //canvas.drawBitmap(bitmap, 10, 10, null); //비트맵을 지정된 위치에 지정된 크기로 그리기 Rect src=new Rect(0, 0, //원래 크기 0+bitmap.getWidth(), 0+bitmap.getHeight()); //원하는 위치와 크기 RectF dst=new RectF(0, 200, 160, 360); canvas.drawBitmap(bitmap, null, dst, null); } catch (Exception e) { } } } //옵션메뉴 -> onOptionsItemSelected() //on: 콜백,자동,항상 ,TouchEvent @Override public boolean onTouchEvent(MotionEvent event) { setContentView(new MyView(this)); Log.i("정보보기",event.getAction()+""); Log.i("onTouchEvent",event.getEventTime()+""); Log.w("onTouchEvent","X의 위치 :" +event.getRawX()+""); Log.w("onTouchEvent","Y의 위치 :" +event.getRawY()+""); Log.i("onTouchEvent",""+event.getDeviceId()+""); //터치 다운의 이벤트만 처리하기 if(event.getAction()==MotionEvent.ACTION_DOWN){ if(event.getRawX()>75&&event.getRawX()<75+100&& event.getRawY()>75&&event.getRawY()<75+100){ Toast.makeText(DrawActivity.this, "안녕하세요", 0).show(); } } return super.onTouchEvent(event); } }
사진을 클릭시 그림이 다시 그려짐
'Android > 2012.04월 강좌' 카테고리의 다른 글
8일차 FileIO 2 - 읽은 데이터를 파일로 저장하기(DDMS) (0) | 2012.05.07 |
---|---|
8일차 FileIO - text파일 내용읽어서 화면출력 (2) | 2012.05.07 |
8일차 Draw 2 TouchEvent (0) | 2012.05.07 |
7일차 Draw (0) | 2012.05.04 |
7일차 Thread 2 (0) | 2012.05.04 |