我第一次写app widget
,并且知道对它有太多限制。
我知道我无法在ViewPager
内使用custom view
和任何app widget
,但我需要使用ViewPager
的左右滑动效果。请看看这个..
要求是,每当用户点击左箭头(左上角)时,下一个列表将从右侧滑入,有三个列表逐个显示,这将循环显示, 即。 -L1-L2-L3-L1 -
有没有办法实现这个?
答案 0 :(得分:0)
如果手势不是您所寻求的,那么您应该只使用ViewFlipper
。它与ViewPager
类似,不同之处在于它不支持手势并且需要以实用方式更改页面。
因此,当您的用户按下左箭头时,您只需拨打viewPager.showPrev()
即可返回上一页。
您还可以通过以下方式添加页面输入/退出动画:
viewFlipper.setInAnimation(context, R.anim.page_in_animation);
viewFlipper.setOutAnimation(context, R.anim.page_out_animation);
viewFlipper.showPrev();
答案 1 :(得分:0)
使用ViewFlipper
来实现上述行为。
以下是扩展AppWidgetProvider
public static final String TRIGGER = "trigger";
@Override
public void onUpdate(Context context, AppWidgetManager appWidgetManager,
int[] allAppWidgetIds) {
for (int appWidgetId : allAppWidgetIds) {
RemoteViews remoteViews = new RemoteViews(context.getPackageName(),
R.layout.layout_widget);
Intent clickIntent = new Intent(context, CueWidgetProvider.class);
clickIntent.setAction(AppWidgetManager.ACTION_APPWIDGET_UPDATE);
clickIntent.putExtra(AppWidgetManager.EXTRA_APPWIDGET_ID, appWidgetId);
clickIntent.putExtra(CueWidgetProvider.TRIGGER,
R.id.app_wid_fltr_next_btn);
PendingIntent pendingIntent = PendingIntent.getBroadcast(context,
0, clickIntent, PendingIntent.FLAG_UPDATE_CURRENT);
remoteViews.setOnClickPendingIntent(R.id.app_wid_fltr_next_btn,
pendingIntent);
appWidgetManager.updateAppWidget(appWidgetId, remoteViews);
}
}
@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.layout_widget);
if (id == R.id.app_wid_fltr_next_btn) {
root.showNext(R.id.app_wid_fltr_flipper);
}
appWidgetManager.updateAppWidget(widgetId, root);
}
提到this问题的答案。