向CardFragment添加额外的图片/图标(Android Wear)

我正在看这个来自Google的示例图像,并试图找出如何实现这样的事情。

它看起来非常类似于标题,描述和图标的标准CardFragment布局。 但是我在左边看到一个额外的时钟图像/animation,这让我觉得他们使用自定义布局。 这是可能做到一个标准的CardFragment ? 还是有另一个便利类,允许支持多个图标?

在这里输入图像说明

Solutions Collecting From Web of "向CardFragment添加额外的图片/图标(Android Wear)"

我通过扩展CardFragment并覆盖onCreateContentView来实现这一点:

 @Override public View onCreateContentView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { mRootView = (ViewGroup) inflater.inflate(R.layout.fragment_my_card, null); ... } 

这可以让你控制白卡上的内容。

您显示的示例图像实际上是一个自定义通知。 您需要在这里熟悉Android Wear通知:

自定义通知

这个练习有点冗长,所以我会尽量简洁而简洁。

1)首先,您将需要定义一个自定义通知布局,该布局定义了XML布局文件中通知的外观。 要复制Google的示例,请为循环进度计时器定义包含ImageView的XML布局,并为锻炼说明定义两个文本字段:

 <?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)创build一个扩展Drawable API的类CircularTimer.class。 这个类应该实现一个start()和stop()方法来处理定时器的倒计时。 Drawable API不在本练习的范围内,但您可以通过在进度条上search网站来了解更多信息。 为简洁起见,下面是一个例子:

 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)创build一个类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)创build将由自定义通知启动的意图和未决意图:

 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 。 作者实际上是对你的例子进行了精确的复制。

安德鲁