SurfaceView는 아이콘을 제외한 검은 색 화면을 표시합니다.

user8269530

Surfaceview에서 아이콘이 표시되어야하는 이전 가이드를 사용했습니다.

불행히도 앱은 아이콘을 제외한 전체 검정색 표면보기를 표시합니다. android studio가 오류를 표시하지 않기 때문에이 문제를 해결하는 방법을 모르겠습니다. 무엇을 추가하거나 변경해야합니까?

public class mySurfaceView extends SurfaceView {

        private SurfaceHolder surfaceHolder;
        private Bitmap bmpIcon;

        public mySurfaceView(Context context) {
            super(context);
            init();
        }

        public mySurfaceView(Context context,
                             AttributeSet attrs) {
            super(context, attrs);
            init();
        }

        public mySurfaceView(Context context,
                             AttributeSet attrs, int defStyle) {
            super(context, attrs, defStyle);
            init();
        }

        private void init(){
            surfaceHolder = getHolder();
            bmpIcon = BitmapFactory.decodeResource(getResources(),
                    R.drawable.icon);
            surfaceHolder.addCallback(new SurfaceHolder.Callback(){

                @Override
                public void surfaceCreated(SurfaceHolder holder) {
                    Canvas canvas = holder.lockCanvas(null);
                    drawSomething(canvas);
                    holder.unlockCanvasAndPost(canvas);
                }

                @Override
                public void surfaceChanged(SurfaceHolder holder,
                                           int format, int width, int height) {
                    // TODO Auto-generated method stub

                }

                @Override
                public void surfaceDestroyed(SurfaceHolder holder) {
                    // TODO Auto-generated method stub

                }});
        }

        protected void drawSomething(Canvas canvas) {
            canvas.drawColor(Color.BLACK);
    if (bmpIcon != null){        canvas.drawBitmap(bmpIcon,
                    getWidth()/2, getHeight()/2, null);
        }


        }

    }

ScreenShot

내 아이콘

<vector xmlns:android="http://schemas.android.com/apk/res/android"
        android:width="24dp"
        android:height="24dp"
        android:viewportWidth="24.0"
        android:viewportHeight="24.0">
    <path
        android:fillColor="#FF020000"
        android:pathData="M6,18c0,0.55 0.45,1 1,1h1v3.5c0,0.83 0.67,1.5 1.5,1.5s1.5,-0.67 1.5,-1.5L11,19h2v3.5c0,0.83 0.67,1.5 1.5,1.5s1.5,-0.67 1.5,-1.5L16,19h1c0.55,0 1,-0.45 1,-1L18,8L6,8v10zM3.5,8C2.67,8 2,8.67 2,9.5v7c0,0.83 0.67,1.5 1.5,1.5S5,17.33 5,16.5v-7C5,8.67 4.33,8 3.5,8zM20.5,8c-0.83,0 -1.5,0.67 -1.5,1.5v7c0,0.83 0.67,1.5 1.5,1.5s1.5,-0.67 1.5,-1.5v-7c0,-0.83 -0.67,-1.5 -1.5,-1.5zM15.53,2.16l1.3,-1.3c0.2,-0.2 0.2,-0.51 0,-0.71 -0.2,-0.2 -0.51,-0.2 -0.71,0l-1.48,1.48C13.85,1.23 12.95,1 12,1c-0.96,0 -1.86,0.23 -2.66,0.63L7.85,0.15c-0.2,-0.2 -0.51,-0.2 -0.71,0 -0.2,0.2 -0.2,0.51 0,0.71l1.31,1.31C6.97,3.26 6,5.01 6,7h12c0,-1.99 -0.97,-3.75 -2.47,-4.84zM10,5L9,5L9,4h1v1zM15,5h-1L14,4h1v1z"/>
</vector>
무투 크리슈 난 라 젠드 란

drawSomething방법에 검은 색을 주었는데 , 색상을 바꾸면 배경이 바뀝니다.

protected void drawSomething(Canvas canvas) {
        //canvas.drawColor(Color.BLACK);
        canvas.drawColor(Color.RED); // here i changed black to red(add you expected color here)
        if (bmpIcon != null) {
            canvas.drawBitmap(bmpIcon,
                    getWidth() / 2, getHeight() / 2, null);
        }

    }

드로 블은 벡터 드로어 블이므로 다음 함수를 사용하여 비트 맵으로 변환하십시오.

public static Bitmap getBitmapFromVectorDrawable(Context context, int drawableId) {
        Drawable drawable = ContextCompat.getDrawable(context, drawableId);
        if (Build.VERSION.SDK_INT < Build.VERSION_CODES.LOLLIPOP) {
            drawable = (DrawableCompat.wrap(drawable)).mutate();
        }

        Bitmap bitmap = Bitmap.createBitmap(drawable.getIntrinsicWidth(),
                drawable.getIntrinsicHeight(), Bitmap.Config.ARGB_8888);
        Canvas canvas = new Canvas(bitmap);
        drawable.setBounds(0, 0, canvas.getWidth(), canvas.getHeight());
        drawable.draw(canvas);

        return bitmap;
    }

다음과 같이 비트 맵을 만듭니다.

bmpIcon = getBitmapFromVectorDrawable(getContext(), R.drawable.icon);

잘 작동합니다.

최종 코드는 다음과 같습니다.

public class MySurface extends SurfaceView {

    private SurfaceHolder surfaceHolder;
    private Bitmap bmpIcon;

    public MySurface(Context context) {
        super(context);
        init();
    }

    public MySurface(Context context,
                     AttributeSet attrs) {
        super(context, attrs);
        init();
    }

    public MySurface(Context context,
                     AttributeSet attrs, int defStyle) {
        super(context, attrs, defStyle);
        init();
    }

    public static Bitmap getBitmapFromVectorDrawable(Context context, int drawableId) {
        Drawable drawable = ContextCompat.getDrawable(context, drawableId);
        if (Build.VERSION.SDK_INT < Build.VERSION_CODES.LOLLIPOP) {
            drawable = (DrawableCompat.wrap(drawable)).mutate();
        }

        Bitmap bitmap = Bitmap.createBitmap(drawable.getIntrinsicWidth(),
                drawable.getIntrinsicHeight(), Bitmap.Config.ARGB_8888);
        Canvas canvas = new Canvas(bitmap);
        drawable.setBounds(0, 0, canvas.getWidth(), canvas.getHeight());
        drawable.draw(canvas);

        return bitmap;
    }

    private void init() {
        surfaceHolder = getHolder();

        bmpIcon = getBitmapFromVectorDrawable(getContext(), R.drawable.icon);
        surfaceHolder.addCallback(new SurfaceHolder.Callback() {

            @Override
            public void surfaceCreated(SurfaceHolder holder) {
                Canvas canvas = holder.lockCanvas(null);
                drawSomething(canvas);
                holder.unlockCanvasAndPost(canvas);
            }

            @Override
            public void surfaceChanged(SurfaceHolder holder,
                                       int format, int width, int height) {
                // TODO Auto-generated method stub

            }

            @Override
            public void surfaceDestroyed(SurfaceHolder holder) {
                // TODO Auto-generated method stub

            }
        });
    }

    protected void drawSomething(Canvas canvas) {
        canvas.drawColor(Color.RED);
        if (bmpIcon != null) {
            canvas.drawBitmap(bmpIcon,
                    getWidth() / 2, getHeight() / 2, null);
        }

    }

}

스크린 샷

이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.

침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제

에서 수정
0

몇 마디 만하겠습니다

0리뷰
로그인참여 후 검토

관련 기사

분류에서Dev

eee pc 1025c는 Ubuntu 10.04에서 부팅 한 후 검은 색 화면을 표시합니다.

분류에서Dev

15.10은 부팅시 검은 색 화면을 표시합니다. Nvidia 드라이버 문제입니까?

분류에서Dev

앱 아이콘은 검은 색 사각형을 표시합니다.

분류에서Dev

Swift performSegueWithIdentifier가 검은 색 화면을 표시합니다.

분류에서Dev

검은 색을 제외한 색맹 ggthemes가있는 ggplot2

분류에서Dev

LWJGL은 조명을 추가 한 후 흰색 화면을 표시합니다.

분류에서Dev

SurfaceView에 검은 색 화면이 표시됨-Android

분류에서Dev

Windows는 검색에서 각 파일에 대해 두 개의 아이콘을 표시합니다. 왜?

분류에서Dev

포함을 사용하는 전체 텍스트 검색은 동일한 데이터베이스 콘텐츠로 다른 결과를 표시합니다.

분류에서Dev

검은 색 아이콘이있는 상태 표시 줄을 흰색으로 만들려면 어떻게해야합니까 : Android 11?

분류에서Dev

Flutter는 다른 경로로 이동 한 후 검은 색 화면을 반환합니다.

분류에서Dev

bin GUI 아이콘 아래의 검은 색 화살표는 무엇을 나타 냅니까?

분류에서Dev

화면에 그림을 표시하는 동안 검은 색 화면

분류에서Dev

앱을 열 때 검은 색 화면을 제거하는 방법

분류에서Dev

그놈 대시에서 검은 색 아이콘 (잠금 화면, 로그 아웃, 전원 끄기, 일시 중지, 사용자 전환)을 제거하는 방법은 무엇입니까?

분류에서Dev

검색에서 '죽은'아이콘을 제거하려면 어떻게해야합니까?

분류에서Dev

OpenGL은 여러 개체를 표시하는 동안 흰색 화면을 표시합니다.

분류에서Dev

AppIcon에서 검은 색 화면을 제거하는 방법-IOS

분류에서Dev

검은 색 사각형없이 Windows 10의 바탕 화면 아이콘에서 화살표를 제거하는 방법은 무엇입니까?

분류에서Dev

DropdownList에서 모달 팝업이 검은 색 화면을 표시하는 이유

분류에서Dev

Firefox는 GitHub와 같은 웹 사이트에 이상한 인코딩 아이콘을 표시합니다.

분류에서Dev

Typo3 Formhandler 유효성 검사는 흰색 화면을 제공합니다.

분류에서Dev

PutImageData는 검은 화면을 제공합니다.

분류에서Dev

PutImageData는 검은 화면을 제공합니다.

분류에서Dev

흰색 원은 검색 도구 모음을 표시합니다.

분류에서Dev

검색보기가 RecyclerView를 포함하는 내 조각에 결과를 제공하지 않습니다. 검색 아이콘을 클릭하면 화면이 비어 있습니다.

분류에서Dev

django Count는 검색 후 다른 값을 표시합니다.

분류에서Dev

AndEngine 게임은로드하기 전에 검은 색 화면을 표시합니다.

분류에서Dev

검은 색 픽셀을 제외한 RGB 이미지 집합에서 가장 빈번한 픽셀 값을 찾는 방법은 무엇입니까?

Related 관련 기사

  1. 1

    eee pc 1025c는 Ubuntu 10.04에서 부팅 한 후 검은 색 화면을 표시합니다.

  2. 2

    15.10은 부팅시 검은 색 화면을 표시합니다. Nvidia 드라이버 문제입니까?

  3. 3

    앱 아이콘은 검은 색 사각형을 표시합니다.

  4. 4

    Swift performSegueWithIdentifier가 검은 색 화면을 표시합니다.

  5. 5

    검은 색을 제외한 색맹 ggthemes가있는 ggplot2

  6. 6

    LWJGL은 조명을 추가 한 후 흰색 화면을 표시합니다.

  7. 7

    SurfaceView에 검은 색 화면이 표시됨-Android

  8. 8

    Windows는 검색에서 각 파일에 대해 두 개의 아이콘을 표시합니다. 왜?

  9. 9

    포함을 사용하는 전체 텍스트 검색은 동일한 데이터베이스 콘텐츠로 다른 결과를 표시합니다.

  10. 10

    검은 색 아이콘이있는 상태 표시 줄을 흰색으로 만들려면 어떻게해야합니까 : Android 11?

  11. 11

    Flutter는 다른 경로로 이동 한 후 검은 색 화면을 반환합니다.

  12. 12

    bin GUI 아이콘 아래의 검은 색 화살표는 무엇을 나타 냅니까?

  13. 13

    화면에 그림을 표시하는 동안 검은 색 화면

  14. 14

    앱을 열 때 검은 색 화면을 제거하는 방법

  15. 15

    그놈 대시에서 검은 색 아이콘 (잠금 화면, 로그 아웃, 전원 끄기, 일시 중지, 사용자 전환)을 제거하는 방법은 무엇입니까?

  16. 16

    검색에서 '죽은'아이콘을 제거하려면 어떻게해야합니까?

  17. 17

    OpenGL은 여러 개체를 표시하는 동안 흰색 화면을 표시합니다.

  18. 18

    AppIcon에서 검은 색 화면을 제거하는 방법-IOS

  19. 19

    검은 색 사각형없이 Windows 10의 바탕 화면 아이콘에서 화살표를 제거하는 방법은 무엇입니까?

  20. 20

    DropdownList에서 모달 팝업이 검은 색 화면을 표시하는 이유

  21. 21

    Firefox는 GitHub와 같은 웹 사이트에 이상한 인코딩 아이콘을 표시합니다.

  22. 22

    Typo3 Formhandler 유효성 검사는 흰색 화면을 제공합니다.

  23. 23

    PutImageData는 검은 화면을 제공합니다.

  24. 24

    PutImageData는 검은 화면을 제공합니다.

  25. 25

    흰색 원은 검색 도구 모음을 표시합니다.

  26. 26

    검색보기가 RecyclerView를 포함하는 내 조각에 결과를 제공하지 않습니다. 검색 아이콘을 클릭하면 화면이 비어 있습니다.

  27. 27

    django Count는 검색 후 다른 값을 표시합니다.

  28. 28

    AndEngine 게임은로드하기 전에 검은 색 화면을 표시합니다.

  29. 29

    검은 색 픽셀을 제외한 RGB 이미지 집합에서 가장 빈번한 픽셀 값을 찾는 방법은 무엇입니까?

뜨겁다태그

보관