Comment obtenir une image à partir de VectorDrawable

Comment obtenir une image à partir de VectorDrawable

Je suis encore à essayer de résoudre le problème que j'ai depuis quelques jours et je n'ai pas encore trouvé une solution. Cependant, j'y arrive, étape par étape. Maintenant, j'ai couru dans un autre barrage.

J'essaie d'obtenir Bitmap.getpixel(int x, int y) pour retourner le Color de ce que l'utilisateur a touché à l'aide de OnTouchListener. La tarte est un VectorDrawable de ressources, vectordrawable.xml je n'ai pas besoin de faire quoi que ce soit avec les données de pixel encore, j'ai juste besoin de le tester. J'ai donc fait un TextView qui va cracher le Color touché.

public class MainActivity extends AppCompatActivity {
    ImageView imageView;
    TextView textView;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        imageView = (ImageView) findViewById(R.id.imageView);
        textView = (TextView) findViewById(R.id.textView);

        imageView.setOnTouchListener(imageViewOnTouchListener);
    }

    View.OnTouchListener imageViewOnTouchListener = new View.OnTouchListener() {
        @Override
        public boolean onTouch(View view, MotionEvent event) {

            Drawable drawable = ((ImageView)view).getDrawable();
            //Bitmap bitmap = BitmapFactory.decodeResource(imageView.getResources(),R.drawable.vectordrawable);
            Bitmap bitmap = ((BitmapDrawable)drawable).getBitmap();

            int x = (int)event.getX();
            int y = (int)event.getY();

            int pixel = bitmap.getPixel(x,y);

            textView.setText("touched color: " + "#" + Integer.toHexString(pixel));

            return true;
        }
    };
}

Mais mon application rencontre une erreur fatale dès que je touche le ImageView, donne de la "Malheureusement,..." message et se ferme. Dans la trace de la pile, j'ai trouvé ce.

java.lang.ClassCastException: android.graphics.drawable.VectorDrawable cannot be cast to android.graphics.drawable.BitmapDrawable
    at com.skwear.colorthesaurus.MainActivity$1.onTouch(MainActivity.java:38)

et la ligne 38 est de ce type,

Bitmap bitmap = ((BitmapDrawable)drawable).getBitmap();

Je les ai suivi cette. Ce que je fais mal? Est-ce parce que c'est un VectorDrawable. Que puis-je faire pour obtenir le Color? Vous pouvez voir que j'ai aussi essayé BitmapFactory à jeter la Drawable. Pourrait-il aussi être un problème avec l'API de niveau de VectorDrawable depuis qu'il a été ajouté comme API 21?

OriginalL'auteur skwear | 2016-04-09