J'essaie de dessiner ShapeDrawable personnalisé avec OvalShape, rempli de blanc et de bordure grise. J'ai créé un drawable comme ceci:
ShapeDrawable drawable = new ShapeDrawable(new OvalShape());
drawable.getPaint().setColor(Color.GRAY);
drawable.getPaint().setStyle(Style.STROKE);
drawable.getPaint().setStrokeWidth(getPixels(5));
drawable.getPaint().setAntiAlias(true);
Mais le résultat de ceci était: un problème de corners
L'idée est de créer par programme une forme comme celle-ci mais avec des couleurs différentes:
<shape xmlns:Android="http://schemas.Android.com/apk/res/Android"
Android:shape="oval">
<corners Android:radius="10dip"/>
<stroke Android:color="#FF0000" Android:width="5dip"/>
<solid Android:color="@Android:color/transparent"/>
</shape>
Comment peut-on résoudre ce problème?
c'est une nouvelle solution:
RoundedBitmapDrawable RBD = RoundedBitmapDrawableFactory.create(mContext.getResources(),YourBitmap);
RBD.setCornerRadius(20);
RBD.setAntiAlias(true);
wholeRel.setBackground(RBD);
J'ai trouvé un moyen de contourner la création de nouveaux tirables!
A défini un cercle avec une bordure à partir d’Android XML comme suit:
<shape xmlns:Android="http://schemas.Android.com/apk/res/Android"
Android:shape="oval">
<corners Android:radius="10dip"/>
<stroke Android:color="#FF0000" Android:width="5dip"/>
<solid Android:color="@Android:color/transparent"/>
</shape>
Puis, quand je veux changer de couleur, j'applique ColorFilter. Par exemple, si je veux changer la couleur rouge de drawable en bleu, je fais ceci:
Drawable drawable = context.getResources().getDrawable(R.drawable.name);
drawable.setColorFilter(Color.BLUE, PorterDuff.Mode.SRC_ATOP);
Si vous voulez utiliser StateListDrawable pour créer des sélecteurs personnalisés à partir de code, soyez conscient - StateListDrawable efface les filtres appliqués à des filtres pouvant être dessinés ... appliquer un filtre sur tout le sélecteur par selector.setColorFilter...
pour résoudre le problème.