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 ™설야