관리 메뉴

moozi

미니포토샵 본문

TIS_2017/응용sw_1기

미니포토샵

moozi 2017. 3. 14. 10:24
package com.naver.miniphotoshop;

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.Path;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.MotionEvent;
import android.view.View;
import android.widget.ImageButton;
import android.widget.LinearLayout;

public class MainActivity extends AppCompatActivity {

MyView myView;
ImageButton ibZoomIn, ibZoomOut, ibRotate,ibBright, ibDark, ibGray,ibPen;

static float scaleX = 1, scaleY = 1;
static boolean isPen=false;

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
setTitle("미니 포토샵");

LinearLayout pictureLayout = (LinearLayout) findViewById(R.id.pictureLayout);
myView = new MyView(this);
pictureLayout.addView(myView);

//확대버튼
ibZoomIn=(ImageButton)findViewById(R.id.imageButton);

ibZoomIn.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
scaleX = scaleX + 0.2f;
scaleY = scaleY + 0.2f;
myView.invalidate();
}
});

//축소버튼
ibZoomOut=(ImageButton)findViewById(R.id.imageButton2);
ibZoomOut.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
if(scaleX>0.5f && scaleY>0.5f){
scaleX = scaleX - 0.2f;
scaleY = scaleY - 0.2f;
}
myView.invalidate();
}
});

//펜기능
ibPen=(ImageButton)findViewById(R.id.imageButton7);
ibPen.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
if(isPen){
isPen=false;
}else{
isPen=true;
}
}
});


}

// inner class. custom view
private static class MyView extends View {
int x;
int y;

Path path = new Path();
public MyView(Context context) {
super(context);
}

@Override
public boolean onTouchEvent(MotionEvent event) {
if(isPen){
switch (event.getAction()){
case MotionEvent.ACTION_DOWN:
x=(int)event.getX();
y=(int)event.getY();
path.moveTo(x, y);
this.invalidate();
break;
case MotionEvent.ACTION_MOVE:
x=(int)event.getX();
y=(int)event.getY();
path.lineTo(x, y);
this.invalidate();
break;
case MotionEvent.ACTION_UP:
break;
}
}

return true;
}

@Override
protected void onDraw(Canvas canvas) {
super.onDraw(canvas);


Bitmap picture = BitmapFactory.decodeResource(getResources(),
R.drawable.android01);
int picX = (this.getWidth() - picture.getWidth()) / 2;
int picY = (this.getHeight() - picture.getHeight()) / 2;
int cenX = this.getWidth() / 2;
int cenY = this.getHeight() / 2;
canvas.scale(scaleX, scaleY, cenX, cenY);
canvas.drawBitmap(picture,picX,picY,null);
picture.recycle();

Paint paint=new Paint();
paint.setStrokeWidth(3);
paint.setColor(Color.BLACK);
paint.setStyle(Paint.Style.STROKE);

canvas.drawPath(path, paint);
}



}


}



'TIS_2017 > 응용sw_1기' 카테고리의 다른 글

mp3 player  (0) 2017.03.17
안드로이드연습문제07-미니프로젝트  (0) 2017.03.16
안드로이드 연습문제06  (0) 2017.03.10
안드로이드 연습문제05  (0) 2017.03.09
안드로이드 연습문제04  (0) 2017.03.08
Comments