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
Vous devez vous connecter pour publier un commentaire.
Tout d'abord, vous ne pouvez pas convertir
VectorDrawable
àBitmapDrawable
. Ils n'ont pas une relation parent-enfant. Ils sont tous les deux sous-classes directes deDrawable
classe.Maintenant, pour obtenir une image à partir de drawable, vous aurez besoin de créer un
Bitmap
de la drawable métadonnées.Probablement quelque chose comme cela dans une autre méthode,
J'espère que cette aide.
Merci beaucoup, vraiment aidé, mais qu'en est
drawable
variable? C'est d'inscription, affecté à d'autres méthodes, mais pas outputed, seulementbitmap
ont une sortie. J'ai pensé qu'il doit être appliquer avec quelque chose de Android méthodes après il attribuer toutes les méthodes, ou pas?Il fonctionne comme un charme!! Thx!!
Qu'est-ce que
BITMAP_CONFIG
?vous avez besoin de remplacer BITMAP_CONFIG avec l'un des Bitmap Configs disponibles. Pour exemple: Bitmap.Config.RGB_565 Plus de détails peuvent être trouvés sur: stackoverflow.com/questions/45511017/...
OriginalL'auteur Jabbar_Jigariyo