안 드 로 이 드 이미지 중첩 효과 - 두 가지 방법

원본 링크:http://www.cnblogs.com/not-code/archive/2011/08/18/2145126.html
효과 그림:
첫 번 째 종류:
두 번 째:
 
첫 번 째 는 canvas 를 통 해 그 려 진 효과 입 니 다.
public void first(View v) {

        //     Immutable bitmap passed to Canvas constructor  
        Bitmap bitmap1 = BitmapFactory.decodeResource(getResources(),
                R.drawable.apple).copy(Bitmap.Config.ARGB_8888, true);
        Bitmap bitmap2 = ((BitmapDrawable) getResources().getDrawable(
                R.drawable.go)).getBitmap();

        Bitmap newBitmap = null;

        newBitmap = Bitmap.createBitmap(bitmap1);
        Canvas canvas = new Canvas(newBitmap);
        Paint paint = new Paint();

        int w = bitmap1.getWidth();
        int h = bitmap1.getHeight();

        int w_2 = bitmap2.getWidth();
        int h_2 = bitmap2.getHeight();

        paint.setColor(Color.GRAY);
        paint.setAlpha(125);
        canvas.drawRect(0, 0, bitmap1.getWidth(), bitmap1.getHeight(), paint);

        paint = new Paint();
        canvas.drawBitmap(bitmap2, Math.abs(w - w_2) / 2,
                Math.abs(h - h_2) / 2, paint);
        canvas.save(Canvas.ALL_SAVE_FLAG);
        //         
        canvas.restore();

        image.setImageBitmap(newBitmap);
    }

 
Canvas canvas = new Canvas(newBitmap); new Bitmap 으로 Canvas 를 만 들 었 을 때 이 그림 에서 작업 이 이 루어 졌 습 니 다.
이 예 는 플레이어 가 재생 을 시작 하 는 효과 로 중간 위 치 를 계산 하고 투명 한 회색 정사각형 을 덮어 중간 에 자신 이 재생 하 는 단 추 를 그 리 는 것 이 라 고 할 수 있다.
 
두 번 째 는 시스템 을 사용 하 는 LayerDrawable 류 입 니 다. 이 종 류 는 주로 여러 그림 의 결합 을 제어 하 는 데 사 용 됩 니 다.
 
public void second(View v) {

        Bitmap bitmap1 = ((BitmapDrawable) getResources().getDrawable(
                R.drawable.apple)).getBitmap();
        Bitmap bitmap2 = ((BitmapDrawable) getResources().getDrawable(
                R.drawable.go)).getBitmap();

        Drawable[] array = new Drawable[2];
        array[0] = new BitmapDrawable(bitmap1);
        array[1] = new BitmapDrawable(bitmap2);
        LayerDrawable la = new LayerDrawable(array);
        //              ,          left、top、right bottom
        la.setLayerInset(0, 0, 0, 0, 0);
        la.setLayerInset(1, 20, 20, 20, 20);
        image.setImageDrawable(la);
    }

관련 배열 array, 각 층 의 위 치 를 제어 합 니 다.
 
메모: Immutable bitmap passed to Canvas constructor 오류 방지
copy 방법 을 사용 하지 않 으 면 자원 파일 을 직접 참조 하여 수정 할 수 있 으 며, 안 드 로 이 드 는 코드 에서 res 파일 의 그림 을 수정 할 수 없 기 때 문 입 니 다.
저도 왜 한 시간 동안 코드 를 테스트 하고 이 글 을 쓰 는 지 모 르 겠 습 니 다. 나중에 자 료 를 보기 위해 서 일 수도 있 습 니 다. 제 마음 속 의 그 효 과 를 검증 하기 위해 서 일 수도 있 습 니 다. 마음 이 갑자기 평범 해 졌 기 때 문 일 수도 있 습 니 다. 제 가 지금 four season in one day 라 는 마음 을 듣 고 있 는 것 과 같 습 니 다.
프로젝트 코드:http://files.cnblogs.com/not-code/picture_overlay.zip
원본 주소:http://www.cnblogs.com/not-code/archive/2011/08/18/2145126.html
본 고 는 오리지널 입 니 다. 만약 전재 가 필요 하 다 면 작가 와 출처 를 밝 혀 주 십시오. 감사합니다!
다음으로 전송:https://www.cnblogs.com/not-code/archive/2011/08/18/2145126.html

좋은 웹페이지 즐겨찾기