comment mettre une image Bitmap d'arrière-plan pour une vue d'API Android 10-18?
Ce que j'ai est:
Manifeste:
<uses-sdk
android:minSdkVersion="10"
android:targetSdkVersion="18" />
source:
View view = createViewFromWhatever();
Bitmap bitmap = loadSomethingAddMore();
Partout j'ai cherché c'est accepté, suggéré:
view.setBackgroundDrawable(new BitmapDrawable(bitmap));
Mais il est Déconseillé de l'API de 18 ans. Je suis terrorisée avec le cadre de bugs et de manquer de la documentation au niveau de l'OS. Je veux respecter ce qu'ils disent et en cas de plantage de "c'est pas de ma faute"
Je ne peux même pas utiliser le new BitmapDrawable(bitmap)
et j'ai besoin de new BitmapDrawable(getActivity().getResources(), bitmap)
à la place. Si je change ma méthode à une méthode recommandée: setBackground(new BitmapDrawable(getActivity().getResources(), bitmap));
Il marquera d'erreur avec le message:
Appel nécessite l'API de niveau 16 (actuelle est à 10 min):
android.widget de.RelativeLayout#setBackground
Comme une solution j'ai pu vérifier quelle version est en cours d'exécution à l'utilisateur et faire un if-else que je vais avoir un code avec if(isAndroidVersion10()) else if () ...
Toute solution solution acceptable?
Si j'ai échappé de la dépréciation des alertes par réflexion je vais avoir la responsabilité en cas de crash, parce que j'ai communiqué le code avec la méthode dépréciée! -juste la façon dont je l'appelle est différent.
Si j'ignore que les Peluches, que ça va se planter à un faible niveau de version de l'api, testé.
Ofc je veux soutenir API 10 , ne peut donc pas accepter la plupart des réponses à partir de ici
OriginalL'auteur | 2013-09-14
Vous devez vous connecter pour publier un commentaire.
Il a été rapide, obtenu à partir de voici une solution acceptable
Homme... un simple setBackground()...
Google a commencé à copier des choses à partir d'iOS ( rotation, pushModal est très différent en 4.3,5,6) horrible à développer une version
OriginalL'auteur
Juste parce que quelque chose est obsolète, ne signifie pas qu'il ne fonctionne pas. À partir de la L'affichage de la source, la définition de
setBackground
est (à compter de la dernière version d'Android):Donc à partir de ce moment, vous pouvez certainement utiliser
setBackgroundDrawable
pour toutes les API niveaux. Ce n'est pas de dire que la vérification de la SDK_INT n'est pas une bonne idée que les versions futures peuvent changer la façon dontsetBackground
œuvres.OriginalL'auteur ianhanniballake
Un peu tard pour cette partie, mais mon ami, je pense que les raisons de votre crash sont en baisse de outOfMemoryExceptions pas la méthode setBackground...assurez-vous que vous chargez vos bitmaps de manière efficace avant de les mettre à un arrière-plan. Cela pourrait aider à ici
OriginalL'auteur Jonny2Plates
Si vous voulez éviter le code affiché dans l'acceptation de réponse, essayez ceci:
OriginalL'auteur vanomart