trapezoid example create android android-drawable shapedrawable

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);