显示确认界面

编写: roya 原文:https://developer.android.com/training/wearables/ui/confirm.html

Android Wear应用中的确认界面(Confirmations)通常是全屏或者相比于手持应用占更大的部分。这样确保用户可以一眼看到确认界面(confirmations)且有一个足够大的触摸区域用于取消一个操作。

Wearable UI库帮助我们在Android Wear应用中显示确认动画和定时器:

确认定时器

  • 自动确认定时器为用户显示一个定时器动画,让用户可以取消他们最近的操作。

确认界面动画

  • 确认界面动画给用户在完成一个操作时的视觉反馈。

下面的章节将演示了如何实现这些模式。

使用自动确认定时器

自动确认定时器让用户取消刚做的操作。当用户做一个操作,我们的应用会显示一个带有定时动画的取消按钮,并且启动该定时器。用户可以在定时结束前选择取消操作。如果用户选择取消操作或定时结束,我们的应用会得到一个通知。

创建确认界面 - 图1

Figure 1: 一个确认定时器.

为了在用户完成操作时显示一个确认定时器:

  1. 添加DelayedConfirmationView元素到layout中。
  2. 在activity中实现DelayedConfirmationListener接口。
  3. 当用户完成一个操作时,设置定时器的定时时间然后启动它。

像下面这样添加DelayedConfirmationView元素到layout中:

  1. <android.support.wearable.view.DelayedConfirmationView
  2. android:id="@+id/delayed_confirm"
  3. android:layout_width="40dp"
  4. android:layout_height="40dp"
  5. android:src="@drawable/cancel_circle"
  6. app:circle_border_color="@color/lightblue"
  7. app:circle_border_width="4dp"
  8. app:circle_radius="16dp">
  9. </android.support.wearable.view.DelayedConfirmationView>

在layout定义中,我们可以用android:src制定一个drawable资源,用于显示在圆形里。然后直接设置圆的参数。

为了获得定时结束或用户点击按钮时的通知,需要在activity中实现相应的listener方法:

  1. public class WearActivity extends Activity implements
  2. DelayedConfirmationView.DelayedConfirmationListener {
  3. private DelayedConfirmationView mDelayedView;
  4. @Override
  5. protected void onCreate(Bundle savedInstanceState) {
  6. super.onCreate(savedInstanceState);
  7. setContentView(R.layout.activity_wear_activity);
  8. mDelayedView =
  9. (DelayedConfirmationView) findViewById(R.id.delayed_confirm);
  10. mDelayedView.setListener(this);
  11. }
  12. @Override
  13. public void onTimerFinished(View view) {
  14. // User didn't cancel, perform the action
  15. }
  16. @Override
  17. public void onTimerSelected(View view) {
  18. // User canceled, abort the action
  19. }
  20. }

为了启动定时器,添加下面的代码到activity处理用户选择某个操作的位置中:

  1. // Two seconds to cancel the action
  2. mDelayedView.setTotalTimeMs(2000);
  3. // Start the timer
  4. mDelayedView.start();

显示确认动画

为了当用户在我们的应用中完成一个操作时显示确认动画,我们需要创建一个从应用中的某个activity启动ConfirmationActivity的intent。我们可以用EXTRA_ANIMATION_TYPE intent extra来指定下面其中一种动画:

  • SUCCESS_ANIMATION
  • FAILURE_ANIMATION
  • OPEN_ON_PHONE_ANIMATION

我们还可以在确认图标下面添加一条消息。

创建确认界面 - 图2

Figure 2: 一个确认动画

要在应用中使用ConfirmationActivity,首先在manifest文件声明这个activity:

  1. <manifest>
  2. <application>
  3. ...
  4. <activity
  5. android:name="android.support.wearable.activity.ConfirmationActivity">
  6. </activity>
  7. </application>
  8. </manifest>

然后确定用户操作的结果,并使用intent启动activity:

  1. Intent intent = new Intent(this, ConfirmationActivity.class);
  2. intent.putExtra(ConfirmationActivity.EXTRA_ANIMATION_TYPE,
  3. ConfirmationActivity.SUCCESS_ANIMATION);
  4. intent.putExtra(ConfirmationActivity.EXTRA_MESSAGE,
  5. getString(R.string.msg_sent));
  6. startActivity(intent);

当确认动画显示结束后,ConfirmationActivity会销毁(Finish),我们的的activity会恢复(Resume)。