Java Code로 모형 만드는 방법은 크게 4가지가 있다.
- 직사각형은 RectShape Class로 생성한다.
- 타원은 OvalShape Class로 생성한다.
- 모서리가 둥근 사각형은 RoundRectShape 클래스로 생성한다.
- 다각형은 Path Class 로 생성하여 점과 점사이를 연결하는 방식으로 만든다.
사각형
private void rectShape() { ShapeDrawable drawable = new ShapeDrawable(new RectShape()); drawable.setIntrinsicWidth(200); drawable.setIntrinsicHeight(100); drawable.getPaint().setColor(Color.BLUE); ImageView ivRect = (ImageView) findViewById(R.id.imageView1); ivRect.setImageDrawable(drawable); }
- setIntrinsicHeight(int height), setIntrinsicWidth (int width) method는 모형의 높이와 너비를 나타낸다.
- getPaint() method는 색상이나 문자, 비트맵의 이미지를 넣을 수 있는 Paint객체를 반환한다.
타원
private void ovalShape() { ShapeDrawable drawable = new ShapeDrawable(new OvalShape()); drawable.setIntrinsicWidth(200); drawable.setIntrinsicHeight(100); drawable.getPaint().setColor(Color.RED); ImageView ivOval = (ImageView) findViewById(R.id.imageView2); ivOval.setImageDrawable(drawable); }
라운드 모서리 사각형
private void roundRectShape() { float[] outerR = new float[] { 12, 12, 12, 12, 0, 0, 0, 0 }; RectF inset = new RectF(6, 6, 6, 6); float[] innerR = new float[] { 12, 12, 0, 0, 12, 12, 0, 0 }; ShapeDrawable drawable = new ShapeDrawable(new RoundRectShape(outerR,inset, innerR)); drawable.setIntrinsicWidth(200); drawable.setIntrinsicHeight(100); drawable.getPaint().setShader(new LinearGradient(0, 0, 50, 50, new int[] {0xFFFF0000, 0XFF00FF00, 0XFF0000FF }, null,Shader.TileMode.REPEAT)); ImageView ivRoundRect = (ImageView) findViewById(R.id.imageView3); ivRoundRect.setImageDrawable(drawable); }
- public RoundRectShape(float[] outerRadii, RectF inset, float[] innerRadii) 생성자는 라운드된 사각형을 그린다.
- outerRadii는 두 개의 실수 배열을 쌍으로 외부 사각형의 모서리 라운드 형태를 구성한다. 처음 왼쪽 위으 모서를 시작하여 시계방향으로 모서리의 각을 정의한다.
- inset는 외부와 내부 라운드된 사각형간의 거리이다.
- innerRadii는 두개를 쌍으로 내부 사각형의 모서리 라운드를 구성한다.
- public Shader setShader(Shader shader)는 색상을 입히는 기능을 한다. 하위 클래스는 BitmapShader, ComposeShader, LinearGradient, RadialGradient, SweepGradient와 같은 클래스들이 있다.
- public LinearGradient(float x0, float y0, float x1, float y1, int[] colors, float[] positions, Shader.TileMode tile )
- 선형 색상 바르기 객체를 생성한다.
- x0, y0 는 x축과 y축의 색상 바르기 시작점을 나타낸다.
- x1, y1 는 색상 바르기 종착점을 나타낸다.
- tile은 이미지의 타일 모드를 나타낸다.
- public RadialGradient(float x, float y, float radius, int[] colors, float[]positions, Shader.TileMode tile)
- 방사형 색상 바르기 객체를 생성한다.
- x,y는 방사형 중심으로 색상 바르기를 나타낸다.
- radius는 반지름을 나타낸다.
- tile은 이미지의 타일 모드를 나타낸다.
- public SweepGradient (float cx, float cy, int[] colors, float[] positions)
- 쓸어내기 효과를 나타낸다.
- cx와 cy는 쓸어내기의 중심을 나타낸다.
마름모 모형
private void pathShape() { Path path = new Path(); path.moveTo(50, 0); path.lineTo(0, 50); path.lineTo(50, 100); path.lineTo(100, 50); path.close(); ShapeDrawable drawable = new ShapeDrawable(new PathShape(path, 100, 100)); drawable.setIntrinsicWidth(200); drawable.setIntrinsicHeight(100); int[] pixels = new int[] { 0xFFFF0000, 0xFF00FF00, 0XFF0000FF, 0 }; Bitmap bm = Bitmap.createBitmap(pixels, 2, 2, Bitmap.Config.ARGB_8888); drawable.getPaint().setShader(new BitmapShader(bm, Shader.TileMode.REPEAT,Shader.TileMode.REPEAT)); ImageView ivPath = (ImageView) findViewById(R.id.imageView4); ivPath.setImageDrawable(drawable); }
- moveTo(float x, float y) method는 다각형응ㄹ 그릴 최초 위치로 이동한다.
- x와 y는 상대적인 위치로 화면의 위치와는 무관하다.
- lineTo(float x, float y) method는 마지막 위치로부터 상대적인 위치의 좌표축으로 라인을 그린다.
- public static Bitmap createBitmap(int[] colors, int width, int height, Bitmap.Config config) method는 주어진 색상을 사용하여 너비와 높이를 비트맵으로 만든다.
- public BitmapShader(Bitmap bitmap, Shader.TileMode tileX, Shader.TileMode tileY) method는 비트맵을 사용하여 색상 바르기를 위한 세이더 객체를 생성한다.
관련글
- [Android] 모형 자르기(Clip Drawable)
- [Android] 모형 겹치기(Layer List)
- [Android]상태 리스트 모형 (Selector)
- [Android] 형태모형(Shape Drawable)
- [Android] Bitmap 모형
댓글 없음:
댓글 쓰기