example - Dibujo programático de forma oval con borde(radio de esquina) en Android
shapedrawable example (2)
¡Encontré una manera de evitar la creación de nuevos objetos dibujables!
A definido un círculo con borde de XML de Android como sigue:
<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>
Luego, cuando quiero cambiar el color dibujable, estoy aplicando ColorFilter. Por ejemplo, si quiero cambiar el color rojo del dibujo a azul, hago esto:
Drawable drawable = context.getResources().getDrawable(R.drawable.name);
drawable.setColorFilter(Color.BLUE, PorterDuff.Mode.SRC_ATOP);
Si queremos usar StateListDrawable para crear selectores personalizados a partir del código, tenga en cuenta que StateListDrawable se aplica a los filtros dibujables ... aplique el filtro en todo el selector por selector.setColorFilter...
solucione el problema.
Estoy tratando de dibujar ShapeDrawable personalizado con OvalShape, relleno de blanco y con borde gris. He creado un dibujo como este:
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);
Pero el resultado de eso fue: esquinas problema.
La idea es crear una forma programática de esta manera pero con diferentes colores:
<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>
¿Cómo se puede arreglar esto?
Esta es una nueva solución:
RoundedBitmapDrawable RBD = RoundedBitmapDrawableFactory.create(mContext.getResources(),YourBitmap);
RBD.setCornerRadius(20);
RBD.setAntiAlias(true);
wholeRel.setBackground(RBD);