2 düğmeniz var: SOL ve SAĞ. . Öncelikle burada Service#onStart
den tetiklenen her (için bekleyen niyet iliştirirdi: Sonra
@Override
public void onStart(Intent intent, int startId) {
AppWidgetManager appWidgetManager = AppWidgetManager.getInstance(this.getApplicationContext());
int[] allWidgetIds = intent.getIntArrayExtra(AppWidgetManager.EXTRA_APPWIDGET_IDS);
// add listeners for every widget registered
for (int widgetId : allWidgetIds) {
addClickListeners(appWidgetManager, widgetId, root);
}
stopSelf();
}
protected void addClickListeners(AppWidgetManager appWidgetManager, int widgetId, RemoteViews root) {
root.setOnClickPendingIntent(R.id.left, getNavigationIntent(widgetId, R.id.left));
root.setOnClickPendingIntent(R.id.right, getNavigationIntent(widgetId, R.id.right));
}
protected PendingIntent getNavigationIntent(int widgetId, final int id) {
Intent clickIntent = new Intent(this, WidgetProvider.class);
clickIntent.setAction(AppWidgetManager.ACTION_APPWIDGET_UPDATE);
clickIntent.putExtra(AppWidgetManager.EXTRA_APPWIDGET_ID, widgetId);
clickIntent.putExtra(TRIGGER, id);
PendingIntent pendingIntent = PendingIntent.getBroadcast(getApplicationContext(), 0, clickIntent,
PendingIntent.FLAG_UPDATE_CURRENT);
return pendingIntent;
}
Bu yapmalı AppWidgetProvider
yılında
@Override
public void onReceive(Context context, Intent intent) {
String action = intent.getAction();
Bundle extras = intent.getExtras();
Integer id = (Integer) (extras == null ? null : extras.get(TRIGGER));
if (AppWidgetManager.ACTION_APPWIDGET_UPDATE.equals(action) && id != null) {
int widgetId = extras.getInt(AppWidgetManager.EXTRA_APPWIDGET_ID, 0);
onNavigate(context, widgetId, id);
} else {
super.onReceive(context, intent);
}
}
protected void onNavigate(Context context, Integer widgetId, Integer id) {
AppWidgetManager appWidgetManager = AppWidgetManager.getInstance(context);
RemoteViews root = new RemoteViews(context.getPackageName(), R.layout.app_widget);
if (id == R.id.left) {
root.showPrevious(R.id.scroll);
} else {
root.showNext(R.id.scroll);
}
appWidgetManager.updateAppWidget(widgetId, root);
}
yapmak Şimdi sorun - bu yalnızca API çalışacak 11 + ve ben sadece root.setInt(R.id.scroll, "setDisplayedChild", pos)
API 7 içinde çalışmayacak zor yolunu buldum.
Harika cevap, çok teşekkür ederim Ne yazık ki benim app API 7 +, bu yüzden deneyebilirsiniz önce biraz beklemek zorundayım Yukarıdaki, ama bazı gerçekten açılır benim widget'ları ile teresting olanakları. Paylaşım için teşekkürler. –
Aynı konuyla uğraşmak zorunda kaldım ve sadece TextView ve ImageView ile tek LinearLayout'a sahip oldum ve daha sonra navigasyon olayını tespit ettiğinizde değerleri değiştirelim. Fantezi kayma efektleri yok ama yeterince iyi – Bostone
Animasyon eklediğimde, uygulama widget'ım çalışmıyor. Bir ev uygulaması widget'ı animasyonlarla flip çalışması yapmanın bir yolu var mı? ' ' –