안 드 로 이 드 그림 그 리 는 몇 가지 방법
현재 사용 하고 있 는 안 드 로 이 드 에 그림 을 그 리 는 방법 을 요약 해 보 겠 습 니 다.
1.컨트롤 을 사용 하 는 setImageResource 방법
1.main.xml 파일 에 ImageView(TestView 도 가능 합 니 다.View 류 를 계승 하면 모두 가능 할 것 같 지만 하나씩 검증 하지 않 았 습 니 다) 또는 ImageButton 등 컨트롤 은 다음 과 같 습 니 다.
<LineLayout xmlns:android="http://schemas.android.com/apk/res/android" android:orientation="vertical"
android:layout_width="fill_parent"
android:layout_height="fill_parent">
<ImageView
android:id="@+id/board"
android:layout_width="wrap_content"
android:layout_height="wrap_content"></ImageView>
<ImageButton
android:id="@+id/piece"
android:layout_width="20px"
android:layout_height="20px"></ImageButton>
</LineLayout>
2.그림 파일 piece.jpg 와 board.jpg 를 res.drawable 에 두 기 폴 더 아래(drawable-hdpi,drawable-mdpi,drawable-ldpi,각각 높 은 픽 셀,중간 픽 셀,낮은 픽 셀 의 그림 을 표시 합 니 다)drawable-hdpi 아래 에 두 십시오.
3.src 의 main.java 를 다음 과 같이 수정 합 니 다.
public class main extends Activity {
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
// findViewById ImageView
board = (ImageView) findViewById(R.id.board);
// ImageView
board.setImageResource(R.drawable.board);
// findViewById ImageButton
piece = (ImageButton) findViewById(R.id.piece);
// ImageButton
piece.setImageResource(R.drawable.piece);
}
// ImageView
private ImageView board;
private ImageButton piece;
}
4.첨부 파일 의 imagtest 1.jpg 와 같이 안 드 로 이 드 애플 리 케 이 션 을 실행 합 니 다.
2.View 류 의 onDraw(Canvas canvas)방법 과 invalidate()를 사용 하여 바둑판 에 바둑 알 을 그 리 는 것 을 실현 합 니 다.
자바 에 있 는 Panel 의 paint 방법 처럼 Panel 이 처음 표시 되 었 을 때 Panel 을 그립 니 다.repaint 는 프로그래머 에 게 수 동 으로 paint 를 호출 하 는 방법 을 제공 합 니 다.
안 드 로 이 드 에서 View 류 의 onDraw 방법 도 View 가 처음 표 시 될 때 View 를 그립 니 다.invalidate()도 프로그래머 에 게 onDraw 를 수 동 으로 호출 하 는 방법 을 제공 합 니 다.
구체 적 인 실현 방법 은 다음 과 같다.
1.ImageView 에서 ImageView Self.java 를 새로 만 듭 니 다.
public class ImageViewSelf extends ImageView {
// paint , canvas
Paint paint = new Paint();
// piece.jpg , Bitmap
private Bitmap bitmap;
//
public ImageViewSelf(Context context) {
super(context);
}
public ImageViewSelf(Context context, AttributeSet attrs, int defStyle) {
super(context, attrs, defStyle);
}
public ImageViewSelf(Context context, AttributeSet attrs) {
super(context, attrs);
}
// bitmap
public void initImage(){
bitmap = Bitmap.createBitmap(BitmapFactory.decodeResource(getResources(),R.drawable.piece));
}
// onDraw
public void onDraw(Canvas canvas)
{
// onDraw
super.onDraw(canvas);
if(bitmap!=null){
// 150,150 bitmap
canvas.drawBitmap(bitmap, 150, 150, paint);
}
}
}
2.main 의 ImageView 를 ImageViewself.test.ImageViewSelf 로 수정
<Imagetest.test.ImageViewSelf
android:id="@+id/board"
android:layout_width="fill_parent"
android:layout_height="wrap_content"></Imagetest.test.ImageViewSelf>
3.main.java 수정
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
// findViewById ImageView
board = (ImageViewSelf) findViewById(R.id.board);
// ImageView
board.setImageResource(R.drawable.board);
// findViewById ImageButton
piece = (ImageButton) findViewById(R.id.piece);
// ImageButton
piece.setImageResource(R.drawable.piece);
//
piece.setOnClickListener(cl);
}
//
private Button.OnClickListener cl = new Button.OnClickListener() {
public void onClick(View v) {
// intitImage ,
board.initImage();
// board, onDraw
board.invalidate();
}
};
// ImageView
private ImageViewSelf board;
private ImageButton piece;
}
4.수정 이 끝나 면 프로그램 을 실행 하고 바둑판 에 바둑 알 이 없 기 시작 합 니 다.단 추 를 누 르 면 initImage()와 invalidata()방법 을 실행 한 후 바둑 알 이 나 오 기 를 바 랍 니 다.
첨부 파일 의 imagetest 2.jpg 와 같은 프로그램 실행 결과
paint 류 는 붓 의 색상 등 인 자 를 설정 할 수 있 습 니 다.canvas 에 서 는 그림,원형,사각형 등 여러 가지 도형 을 그 리 는 방법 을 제공 합 니 다.
상기 두 종 류 를 결합 하여 사용 하면 자바 의 Graphics 에 해당 한다.
안 드 로 이 드 그림 의 예 도 완성 되 었 습 니 다!
첫 번 째 예 의 모든 코드 와 파일 은 imagetest 압축 파일 에 있 습 니 다.
두 번 째 예 의 모든 코드 와 파일 은 imagetest 2 압축 파일 에 있 습 니 다.
미 해결 문제:
1.구문 bitmap=Bitmap.createBitmap(BitmapFactory.decodeResource(getResources(),R.drawable.piece)사용 하기;얻 은 그림 의 크기 는 실제 보다 약간 작다. ??
2.ImageViewSelf 에서 구조 방법 에서 각 매개 변수의 의미.??
계속:전에 언급 한 첫 번 째 문제 에 대해 Rect 를 사용 하여 그림 의 크기 를 조절 할 수 있 습 니 다.
쓰다 canvas. drawBitmap ( Bitmap bitmap, Rect src, RectF dst, Paint paint)
첫 번 째 Rect src 는 그 려 야 할 bitmap 그림 의 구역 입 니 다.rect 의 구조 방법 에서 네 개의 매개 변 수 는 왼쪽 좌표,위 좌표,오른쪽 좌표 와 아래 좌표 입 니 다.
자바 가 습관 적 으로 왼쪽 좌표,위 좌표,너비 와 높이 가 아 닙 니 다.
두 번 째 Rect. dst 는 view 의 어느 영역 에 그림 을 그립 니까? 예:
Rect src = new Rect(0, 0,35,35);
Rect dst = new Rect(50,50, 90,90);
canvas.drawBitmap(cursor,src,dst,paint);
이상 코드 는 view 의 dst 영역 에서 bitmap 대상 cursor 의 0,0,35,35 그림 을 그립 니 다.
두 Rect 크기 가 일치 하지 않 으 면 상관 없습니다.그 릴 때 자동 으로 채 워 집 니 다.
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
Kotlin의 기초 - 2부지난 글에서는 Kotlin이 무엇인지, Kotlin의 특징, Kotlin에서 변수 및 데이터 유형을 선언하는 방법과 같은 Kotlin의 기본 개념에 대해 배웠습니다. 유형 변환은 데이터 변수의 한 유형을 다른 데이터...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.