我正在查看來自Google的此示例圖像,並試圖找出如何實現這樣的事情。將額外的圖像/圖標添加到CardFragment(Android Wear)
它看起來與採用標題,描述和圖標的標準CardFragment
佈局非常相似。但是我在左邊看到一個額外的時鐘圖像/動畫,這讓我認爲他們使用自定義佈局。這可能與標準CardFragment
有關嗎?還是有另一個便利類,允許支持多個圖標?
我正在查看來自Google的此示例圖像,並試圖找出如何實現這樣的事情。將額外的圖像/圖標添加到CardFragment(Android Wear)
它看起來與採用標題,描述和圖標的標準CardFragment
佈局非常相似。但是我在左邊看到一個額外的時鐘圖像/動畫,這讓我認爲他們使用自定義佈局。這可能與標準CardFragment
有關嗎?還是有另一個便利類,允許支持多個圖標?
我做到了這一點通過擴展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佈局文件中的外觀。要複製谷歌的例子,定義包含圓形進度計時器和鍛鍊描述的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)創建一個擴展的Drawable類CircularTimer.class API。這個類應該實現一個start()和stop()方法來處理定時器的倒計時。 Drawable API不在本練習的範圍內,但您可以通過在進度條上搜索網站來了解更多信息。爲了簡便起見,這裏有一個例子:
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()方法的未決意圖對象:
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。 作者實際上實施了您的示例的精確複製。
Andrew
您是否知道在使用自定義佈局時如何顯示頂部圖標?由於'onCreateContentView'的視圖放置在'CardFrame'內。 – Libin
@利賓,我處於類似的情況,最終創建了我自己的片段,根本不使用CardFragment。 – Vesko