为什么有些手机上的彩色涂料是黑色的?

时间:2014-08-04 19:34:13

标签: android drawable

在我的应用程序中,我有一些drawables,我给用户提供了使用sharedpreferences更改backgroundcolor的可能性。问题是,即使没有设置共享偏好,在某些移动电话上,drawable也会用黑色着色。旧手机上的问题API Level< 19.

我也尝试了drawable.setColorFilter(...)

        Resources resForColorFilter = getApplicationContext().getResources();
        Drawable drawableForColorFilter = resForColorFilter.getDrawable(R.drawable.soundshape);

        if(backgroundcolorPref.equalsIgnoreCase("backgroundcolorString")){
            Log.d("in backgroundcolorString", "in backgroundcolorString");
            drawableForColorFilter.setColorFilter(new PorterDuffColorFilter(Color.WHITE, PorterDuff.Mode.CLEAR));
        }


        try {
            if(!(backgroundcolorPref.equalsIgnoreCase(textFarbePref))){
                drawableForColorFilter.setColorFilter(new PorterDuffColorFilter(Color.parseColor(backgroundcolorPref), PorterDuff.Mode.CLEAR));

            // wenn die Hintergrundfarbe gleich der Textfarbe ist
            } else if(backgroundcolorPref.equalsIgnoreCase(textFarbePref)) {

                // wenn der Hintergrund schwarz gefärbt ist
                if(backgroundcolorPref.equalsIgnoreCase("#000000")){
                    textFarbePref = "#FFFFFF";
                } else if(backgroundcolorPref.equalsIgnoreCase("#ffffff")){
                    textFarbePref = "#000000";
                } else {
                    textFarbePref = "#000000";
                }

            }
        } catch(IllegalArgumentException illegalArgumentException){
            drawableForColorFilter.setColorFilter(new PorterDuffColorFilter(Color.WHITE, PorterDuff.Mode.CLEAR));
        }

        Resources res = getApplicationContext().getResources();
        Drawable drawable = res.getDrawable(R.drawable.soundshape);
        // das geladene Design auf der TextView anwenden, damit ein abgerunter Rahmen erscheint
        soundUmrandung.setBackground(drawable);         
        if(backgroundcolorPref.equalsIgnoreCase("backgroundcolorString")){
            Log.d("in backgroundcolorString", "in backgroundcolorString");
            drawableForColorFilter.setColorFilter(new PorterDuffColorFilter(Color.WHITE, PorterDuff.Mode.CLEAR));
        }


        try {
            if(!(backgroundcolorPref.equalsIgnoreCase(textFarbePref))){
                drawableForColorFilter.setColorFilter(new PorterDuffColorFilter(Color.parseColor(backgroundcolorPref), PorterDuff.Mode.CLEAR));

            // wenn die Hintergrundfarbe gleich der Textfarbe ist
            } else if(backgroundcolorPref.equalsIgnoreCase(textFarbePref)) {

                // wenn der Hintergrund schwarz gefärbt ist
                if(backgroundcolorPref.equalsIgnoreCase("#000000")){
                    textFarbePref = "#FFFFFF";
                } else if(backgroundcolorPref.equalsIgnoreCase("#ffffff")){
                    textFarbePref = "#000000";
                } else {
                    textFarbePref = "#000000";
                }

            }
        } catch(IllegalArgumentException illegalArgumentException){
            drawableForColorFilter.setColorFilter(new PorterDuffColorFilter(Color.WHITE, PorterDuff.Mode.CLEAR));
        }

        Resources res = getApplicationContext().getResources();
        Drawable drawable = res.getDrawable(R.drawable.soundshape);
        // das geladene Design auf der TextView anwenden, damit ein abgerunter Rahmen erscheint
        soundUmrandung.setBackground(drawable);

为什么某些手机上的彩绘颜色为黑色?

好吧,这似乎是API级别16的错误。我通过使用drawable.setAlpha(0)的透明度来解决问题。

还有一个小问题:按钮的角落以及我在xml中指定的角落不再可见。

0 个答案:

没有答案