Ответ 1
это новое решение:
RoundedBitmapDrawable RBD = RoundedBitmapDrawableFactory.create(mContext.getResources(),YourBitmap);
RBD.setCornerRadius(20);
RBD.setAntiAlias(true);
wholeRel.setBackground(RBD);
Я пытаюсь нарисовать пользовательский ShapeDrawable с OvalShape, заполненный белым и с серой рамкой. Я создал такой способ:
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);
Но результатом этого было следующее: проблема углов
Идея программно создать такую форму, но с разными цветами:
<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>
Как это можно исправить?
это новое решение:
RoundedBitmapDrawable RBD = RoundedBitmapDrawableFactory.create(mContext.getResources(),YourBitmap);
RBD.setCornerRadius(20);
RBD.setAntiAlias(true);
wholeRel.setBackground(RBD);
Я нашел способ обойти создание новых чертежей!
Определен круг с границей из XML-андроида следующим образом:
<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>
Затем, когда вы хотите изменить яркий цвет, я применяю ColorFilter. Например, если я хочу изменить яркий красный цвет на синий, я делаю это:
Drawable drawable = context.getResources().getDrawable(R.drawable.name);
drawable.setColorFilter(Color.BLUE, PorterDuff.Mode.SRC_ATOP);
Если мы хотим использовать StateListDrawable для создания настраиваемых селекторов из кода, вам нужно знать - StateListDrawable очищает, применяемые к фильтрам drawables... применить фильтр на весь селектор на selector.setColorFilter...
устранить проблему.