我是新來創建/更改任何類型的圖像在Android中。我想要做的是以下幾點:android:如何將自定義圖像添加到小部件?
我有一個小部件,從廣播接收機定期更新。事情是,我想在這個小部件中顯示一個自制的(即編程創建的)圖像。我實際上不知道如何將圖像添加到小部件佈局。 任何人都可以幫我嗎?繼承人更新部件的代碼:
public class MyReceiver extends BroadcastReceiver {
@Override
public void onReceive(Context context, Intent intent) {
AppWidgetManager appWidgetManager = AppWidgetManager.getInstance(context.getApplicationContext());
int[] allWidgetIds = intent.getIntArrayExtra(AppWidgetManager.EXTRA_APPWIDGET_IDS);
// DO SOME THINGS...
ComponentName myWidget = new ComponentName(context.getApplicationContext(), MyWidgetProvider.class);
int[] allMyWidgetIds = appWidgetManager.getAppWidgetIds(myWidget);
for (int widgetId : allMyWidgetIds) {
RemoteViews rViews = new RemoteViews(context.getPackageName(), R.layout.widget_layout);
rViews.setTextViewText(R.id.TextView01, "xyz"); // this works just fine, i.e. it gets updated as intended :)
appWidgetManager.updateAppWidget(widgetId, rViews);
}
// set next update
Calendar c = Calendar.getInstance();
c.add(Calendar.SECOND, Config.UPDATE_RATE);
Date d = new Date(c.getTimeInMillis());
Intent i = new Intent(context.getApplicationContext(), MyReceiver.class);
i.putExtra(AppWidgetManager.EXTRA_APPWIDGET_IDS, allWidgetIds);
PendingIntent sender = PendingIntent.getBroadcast(context.getApplicationContext(), 0, i, PendingIntent.FLAG_UPDATE_CURRENT);
AlarmManager aManager = (AlarmManager) context.getSystemService(Context.ALARM_SERVICE);
aManager.set(AlarmManager.RTC, d.getTime(), sender);
}
}
所以這工作得很好。在將「xyz」寫入TextView的行中,先前彙編的數據(在廣播接收器中)按預期顯示,即得到更新。 在這一點上,我想要「繪製」這些數據,即創建一個應顯示在小部件中的圖形。
但是:我該怎麼做?我想我最終會得到一個drawable。我如何才能將它顯示在窗口小部件中(當然還有更新)?
UPDATE:
這是視圖類應該做的圖形。到目前爲止,它只是畫一條短線。這個作品,如果我在活動中通過的setContentView()設置這是一個觀點:
public class Chart extends View {
public Chart(Context context) {
super(context);
}
@Override
public void onDraw(Canvas canvas) {
canvas.drawColor(Color.WHITE);
Paint paint = new Paint();
paint.setFlags(Paint.ANTI_ALIAS_FLAG);
paint.setColor(Color.BLACK);
canvas.drawLine(0, 0, 30, 30, paint);
}
}
小部件的佈局是很無聊:
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/widget_layout"
android:orientation="vertical"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_margin="8dip"
android:background="@drawable/traffic_shape" >
<TextView
android:id="@+id/TextView01"
android:text="test"
android:layout_width="match_parent"
android:layout_height="match_parent" >
</TextView>
<ImageView
android:id="@+id/graph"
android:contentDescription="blah"
android:src="@drawable/icon"
android:layout_width="match_parent"
android:layout_height="match_parent" >
</ImageView>
</LinearLayout>
沒有我如何得到我在視圖中創建我的圖表類將顯示在小部件中?不幸的是RemoteViews不提供任何功能,以設置視圖,因爲它似乎... :(
我不太得到它,就像你在你的佈局一個TextView,添加一個ImageView的還有什麼你找 – 2012-02-20 10:09:17
是 - 我有這個圖像視圖,現在讓我們假設,我有這個類擴展了「視圖」,我做到了在那裏創建我的圖像...但是現在:我如何獲得視圖(由類x表示)顯示在定義在xml佈局中的imageview中? – xenonite 2012-02-20 13:54:54