Ich versuche, benutzerdefinierte ShapeDrawable mit OvalShape zu zeichnen, gefüllt mit weißem und grauem Rand. Ich habe so ein Zeichen erstellt:
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);
Aber das Ergebnis war: Ecken Problem
Die Idee ist programmgesteuert, eine Form mit unterschiedlichen Farben zu erstellen:
<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>
Wie kann das behoben werden?
dies ist eine neue Lösung:
RoundedBitmapDrawable RBD = RoundedBitmapDrawableFactory.create(mContext.getResources(),YourBitmap);
RBD.setCornerRadius(20);
RBD.setAntiAlias(true);
wholeRel.setBackground(RBD);
Ich habe einen Weg gefunden, neue Zeichensätze zu erstellen!
Ein definierter Kreis mit Rand aus Android XML wie folgt:
<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>
Wenn dann die Zeichenfarbe geändert werden soll, wende ich ColorFilter an. Wenn ich zum Beispiel die rote Farbe von drawable in blau ändern möchte, mache ich Folgendes:
Drawable drawable = context.getResources().getDrawable(R.drawable.name);
drawable.setColorFilter(Color.BLUE, PorterDuff.Mode.SRC_ATOP);
Wenn Sie StateListDrawable zum Erstellen von benutzerdefinierten Selektoren aus Code verwenden möchten, beachten Sie Folgendes: StateListDrawable löscht die auf Zeichnungsfilter angewendeten Filter ... Wenden Sie den Filter auf den gesamten Selektor an, indem Sie selector.setColorFilter...
das Problem beheben.