Android2009. 12. 31. 21:26

 
public boolean onTouchEvent(MotionEvent event) { 
	iClickGetX = (int)event.getX();//터치된 곳의 x좌표
	iClickGetY = (int)event.getY();//터치된 곳의 y좌표
	ActionValue = event.getAction();//터치 액션값 
	
	if( ActionValue == MotionEvent.ACTION_DOWN ){//터치 하고 있을때
	sAction = "ACTION DOWN";
	}else if( ActionValue == MotionEvent.ACTION_UP ){//터치 하지 않을때
	sAction = "ACTION UP";
	}else if( ActionValue == MotionEvent.ACTION_MOVE){//터치된 상태에서 이동중(드래그)
	sAction = "ACTION MOVE";
	}
	return super.onTouchEvent(event);
}
요 메소드를 가지고 화면에 터치한곳으로 움직이는 이미지를 그려보았다.
이번 글작성은 SyntaxHighlighter를 티스토리에 적용시켜 코드를 뿌려주는 테스트 또한 해보았다. ㅋㅋ  

결과물

'Android' 카테고리의 다른 글

우연치 않게...  (0) 2010.01.18
Day 5 : Gesture Test  (0) 2010.01.12
Day 4 : 이미지 그려주기 테스트  (0) 2009.12.31
Day 4 : 2D 를 표현하기 위한 기본 코드  (0) 2009.12.31
Tip. Key 에 대한 정의 지정해주기.  (0) 2009.12.30
Posted by ™설야
Android2009. 12. 31. 16:04

PNG 파일을 불러와 그려주고 크기변경하고 이미지 자르기 테스트

작성코드

DrawTest.java

    protected void onDraw(Canvas cvs){

        

        Paint paint = new Paint();

        paint.setColor(Color.argb(iA, iR, iG, iB));

      

        Bitmap iOrigin = getImage(R.drawable.img_test);

        Bitmap iResize = resizeImage(iOrigin, 50, 200);

        Bitmap iClip = clipImage(iOrigin, 21,5, 58, 32);

        

        cvs.drawBitmap(iOrigin, 0, 0, paint);

        cvs.drawBitmap(iResize, iOrigin.getWidth(), 0, paint);

        cvs.drawBitmap(iClip, iOrigin.getWidth()+iResize.getWidth(), 0, paint);

        

    }

    /**

     * Get Bitmap

     * @param resId Resource ID

     * @return 비트맵 넘겨주기

     */

    public Bitmap getImage(int resId){

        return BitmapFactory.decodeResource(getResources(), resId);

    }

    /**

     * Resize Bitmap

     * @param origin 원본 비트맵

     * @param width 변경할 비트맵의 가로 사이즈

     * @param height 변경할 비트맵의 세로 사이즈

     * @return 변경된 비트맵 넘겨주기

     */

    public Bitmap resizeImage(Bitmap origin, int width, int height){

        return Bitmap.createScaledBitmap(origin, width, height, true);

    }

    /**

     * Clip Bitmap

     * @param origin 원본 비트맵

     * @param sx 원본이미지에서 자를곳의 시작 x 위치

     * @param sy 원본이미지에서 자를곳의 시작 y 위치

     * @param cw x,y 위치부터 자를 가로 크기

     * @param ch x,y 위치부터 자를 세로 크기

     * @return 원본 비트맵에서 자른 부분 넘겨주기

     */

    public Bitmap clipImage(Bitmap origin, int sx, int sy, int cw, int ch){

        return origin.createBitmap(origin, sx, sy, cw, ch);

    }

 

결과물


사용된 이미지

Posted by ™설야
Android2009. 12. 31. 14:26

 

기본 클래스

Test1.java

public class Test1 extends Activity {

/** Called when the activity is first created. */

@Override

public void onCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);

setContentView(new DrawTest(this));

 

}

}

DrawTest.java

public class DrawTest extends View {

    

    public DrawTest(Context context) {

        super(context);

    }

 

    @Override

    protected void onDraw(Canvas cvs){

        int iA = 0xFF;//alpha value

        int iR = 0x00;//red value

        int iG = 0xFF;//green value

        int iB = 0x00;//blue value

 

        Paint paint = new Paint();

        String sDrawStr = "DrawText";

        String sAlphaStr = " ";

        int iStrLeng = 0;

        for(int i=15;i<cvs.getHeight();i+=15){

            paint.setColor(Color.argb(iA-i, iR, iG, iB));

            sAlphaStr = " <- Alpha Value ("+(iA-i)+")";

            iStrLeng = sAlphaStr.length()+sDrawStr.length();

            cvs.drawText(sDrawStr+sAlphaStr, 0, iStrLeng, 0, i, paint);

        }

    }

}

 기존에 Activity가 xml을 참조하던 것과는 달리 View객체를 받은 DrawTest라는 사용자가 만든 클래스를 참조하게 만든다. DrawTest에 onDraw(Canvas cvs) 에 그려줄 내용들을 적으면 화면에 뿌려진다.

위의 소스는 글자를 뿌려주기 위해 만들었고 덤으로 Alpha 값에 대한 것도 알아볼 수 있다.

여태 Color를 RGB값만 쓰던 나를 당황시켜준 값이 Color가 ARGB를 쓴다는 것. 아예 기본적인 Color에 Alpha값 까지 플러스되서 오히려 엄청 편하게 됐다. 처음에 paint.setColor 로 색상값을 정해줄 때 당연히 RGB값만 들어가는 줄 알고 작성했다가 한 시간을 오류와 씨름했다.

 결과값

 

알파값에 따른 불투명 효과
알파값이 –값이 나오더라도 결과값이 나온다.

Posted by ™설야