2

EmbossMaskFilter を使用してカスタム Drawable を作成しようとしました。しかし、エンボスを使用しようとすると、「エンボス加工された」ドローブル境界と重なる他の 2D グラフィックス オブジェクトのエッジに黒いストライプが発生するという奇妙な動作に遭遇しました。

何か不足していますか?多分いくつかの〜ピクセルブレンド設定か何か?

例: ScrollView の「フェード」の黒い縞模様。エンボス マスクを削除すると、それらはなくなります。また、Emboss を使用してバックグラウンド ドローアブルを使用して ImageButton を作成し、キャンバス ドローアブルとしてフロント ドローアブルを作成すると、このフロント ドローアブルもストライプになります。 それらの奇妙な黒い縞に注意してください

アクティビティ (+main.xml = ScrollView の LinearLayout = http://pastebin.com/031AV6Wp ):

public class TestEmbossActivity extends Activity {
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);

        Paint paint = new Paint();
        paint.setColor(Color.RED);
        paint.setMaskFilter(new BlurMaskFilter(15, Blur.INNER));
        paint.setMaskFilter(new EmbossMaskFilter(new float[] { 1, 1, 1 }, 0.4f, 5, 3f));

        ViewGroup container = (ViewGroup) findViewById(R.id.container);
        for(int i = 0; i < 20; i++) {
            ImageView view = new ImageView(this);
            view.setScaleType(ScaleType.FIT_XY);
            Drawable drawable = new MyDrawable(paint);
            view.setImageDrawable(drawable);
            LinearLayout.LayoutParams params = new LinearLayout.LayoutParams(100, 100);
            params.bottomMargin = 10;
            container.addView(view, params);
        }
    }

    private static class MyDrawable extends Drawable {
        Paint paint;

        private MyDrawable(Paint paint) {
            this.paint = paint;
        }

        @Override
        public void draw(Canvas canvas) {
            Rect bounds = getBounds();
            canvas.drawRect(bounds, paint);
        }

        @Override
        public int getOpacity() {
            return PixelFormat.TRANSLUCENT;
        }

        @Override
        public void setAlpha(int alpha) {
            // TODO Auto-generated method stub
        }
        @Override
        public void setColorFilter(ColorFilter cf) {
            // TODO Auto-generated method stub
        }
    }

}
4

0 に答える 0