我正在查看来自Google的这个示例图片,并试图弄清楚如何实现这样的事情。
它看起来非常类似于带有标题,描述和图标的标准CardFragment
布局。但我在左边看到一个额外的时钟图像/动画,这让我觉得他们使用自定义布局。这可能与标准CardFragment
有关吗?或者是否有另一个便利类允许支持多个图标?
答案 0 :(得分:7)
我通过扩展CardFragment并覆盖onCreateContentView
来完成此任务:
@Override
public View onCreateContentView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
mRootView = (ViewGroup) inflater.inflate(R.layout.fragment_my_card, null);
...
}
这可让您控制白卡上的内容。
答案 1 :(得分:2)
您要显示的示例图像实际上是一个自定义通知。您需要在此处熟悉Android Wear通知:
这个练习有点冗长,所以我会尽量简短而简洁。
1)首先,您需要定义自定义通知布局,该布局在XML布局文件中定义通知的外观。要复制Google的示例,请定义一个XML布局,其中包含循环进度计时器的ImageView和锻炼描述的两个文本字段:
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="horizontal">
<ImageView
...
</>
<RelativeLayout
android:layout_marginStart="20dp"
android:layout_width="match_parent"
android:layout_height="match_parent"
xmlns:android="http://schemas.android.com/apk/res/android">
<TextView
...
</>
<TextView
...
</>
</RelativeLayout>
2)创建一个扩展Drawable API的类CircularTimer.class。这个类应该实现一个start()和stop()方法来处理计时器的倒计时。 Drawable API超出了本练习的范围,但您可以通过在进度条上搜索Web来了解更多信息。为简洁起见,这是一个例子:
public class CircularTimer() extends Drawable {
...
public CircularTimer(int maxValue) { ... }
@Override
public void onDraw(Canvas canvas) {
// Use drawCircle(), drawArc() to draw a circle and pie bar
// Use drawText to draw the timeout value in center of circle
}
...
}
4)创建一个WorkoutCustomView.class类,并将其内容视图设置为先前定义的XML。获取ImageView的引用并为setImageDrawable()方法设置可绘制对象。例如:
mImageView = (ImageView) findViewById(R.id.imageview);
mCircularTimer = new CircularTimer(60); // 60s countdown
mImageView.setImageDrawable(mCircularTimer);
3)设置基本通知:
NotificationCompat.Builder builder = new NotificationCompat.Builder(this)
.setContentTitle("Workout")
.setContentText("Push Ups")
.setSmallIcon(R.drawable.ic_bicep);
4)创建将由自定义通知启动的意图和待处理意图:
Intent i = new Intent(this, WorkoutCustomView.class);
PendingIntent pi = PendingIntent.getActivity(this, 0, i, PendingIntent.FLAG_UPDATE_CURRENT);
5)为WearableExtender类的setDisplayIntent()方法设置挂起的intent对象:
NotificationCompat.WearableExtender we = new NotificationCompat.WearableExtender()
.setDisplayIntent(pi);
// Add wearable specific features
builder.extend(wearableExtender);
6)发送您的通知
NotificationManagerCompat notificationManager =
NotificationManagerCompat.from(this);
notificationManager.notify(NOTIFICATION_ID, builder.build());
希望这有帮助!
如需进一步阅读,请结帐http://www.learnandroidwear.com/wear-custom-notification。 作者实际上实现了对您的示例的精确复制。
安德鲁