私の最初の、そして最も素晴らしい Android プロジェクトとして、最近すべての子供たちが熱狂しているアーク時計の 1 つを表示するホーム画面ウィジェットを作成したいと考えています。
RemoteViewsの制限に基づいて、実際に画面に描画する適切な方法は、実際のレイアウトでImageViewを使用し、更新時にShapeDrawableを1 つまたは 2 つ作成し、それらを新しく描画することです。ビットマップを作成しました。次に、その 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 によって制約されているウィジェットに描画するより適切な方法はありますか?