Je souhaite afficher une flèche indiquant la direction d'un objectif, en utilisant le capteur d'orientation et la position GPS actuelle. Tout fonctionne bien, sauf que je veux faire pivoter l'image de la flèche dans mon ImageView.Rotation de l'image dans ImageView
Le code actuel, qui montre la flèche vers le haut, est celle-ci:
ImageViewArrow.setImageResource(R.drawable.arrow);
Quelle est la meilleure solution pour montrer la flèche, rotation par N degrés?
J'ai essayé, mais l'ai donnée foiré graphiques:
Matrix matrix = new Matrix();
matrix.postRotate(Rotation);
Bitmap bitmapOrg = BitmapFactory.decodeResource(getResources(),
R.drawable.arrow);
Bitmap resizedBitmap = Bitmap.createBitmap(bitmapOrg, 0, 0,
bitmapOrg.getWidth(),bitmapOrg.getHeight(), matrix, true);
BitmapDrawable bmd = new BitmapDrawable(resizedBitmap);
InfoArrow.setScaleType(ScaleType.CENTER);
InfoArrow.setImageDrawable(bmd);
J'ai essayé cela avant de poster la question, mais j'ai obtenu des résultats erronés. Cependant, c'est en fait la solution - je juste ai dû enlever la ligne InfoArrow.setScaleType (ScaleType.CENTER) ;, alors il semble juste. –
C'est terriblement inefficace pour quelque chose qui est continuellement mis à jour. Pour ce genre de chose, vous devriez vraiment écrire une vue personnalisée qui dessine ce que vous voulez. Il n'est pas nécessaire d'abuser d'une classe standard comme ImageView comme ceci; écrire une vue personnalisée qui dessine un bitmap (et applique une rotation avant de le faire) est assez simple. – hackbod