Для моего первого и самого удивительного проекта Android я хочу создать виджет домашнего экрана, который отображает один из тех Arc Clocks , которыми все дети в восторге в эти дни.
Исходя из ограничений RemoteViews , мне кажется, что соответствующий способ фактически нарисовать его на экране - это использовать ImageView в реальном макете, а затем, когда это обновление, создайте ShapeDrawable или два и нарисуйте их на только что созданном Bitmap . Затем установите это растровое изображение в качестве источника ImageView.
В этом процессе есть что-то, что я просто не лажу. Ниже приведен код, который я пытался использовать для обновления виджета. Я вообще ничего не рисую на экране. В ImageView есть изображение-заполнитель, которое устанавливается его свойством src
. Когда я не запускаю код, чтобы обновить его до своего чертежа, изображение заполнителя остается на месте. Итак, я знаю, что этот код делает что-то , просто явно не правильная вещь.
RemoteViews views = new RemoteViews(context.getPackageName(), R.layout.widget);
Bitmap bitmap = Bitmap.createBitmap(100, 100, Config.ARGB_8888);
Canvas canvas = new Canvas(bitmap);
ShapeDrawable drawable = new ShapeDrawable(new ArcShape(0, 360));
drawable.getPaint().setColor(0xffff0000);
drawable.getPaint().setStrokeWidth(5.0f);
drawable.setIntrinsicWidth(100);
drawable.setIntrinsicHeight(100);
drawable.draw(canvas);
views.setImageViewBitmap(R.id.ImageView01, bitmap);
appWidgetManager.updateAppWidget(appWidgetId, views);
Я знал, что это не может быть так просто. Итак, я даже направляюсь в правильном направлении?
Обновление
Хорошо, возможно, это было слишком много информации. Вопрос, который я действительно пытаюсь задать, таков:
Если я хочу рисовать фигуры в виджете, должен ли я использовать ImageView и создать растровое изображение из моего ShapeDrawable или есть более подходящий способ рисовать в виджет, где он ограничен RemoteViews?