2014-07-27 78 views
10

我正在查看來自Google的此示例圖像,並試圖找出如何實現這樣的事情。將額外的圖像/圖標添加到CardFragment(Android Wear)

它看起來與採用標題,描述和圖標的標準CardFragment佈局非常相似。但是我在左邊看到一個額外的時鐘圖像/動畫,這讓我認爲他們使用自定義佈局。這可能與標準CardFragment有關嗎?還是有另一個便利類,允許支持多個圖標?

enter image description here

回答

7

我做到了這一點通過擴展CardFragment和壓倒一切的onCreateContentView

@Override 
public View onCreateContentView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { 

    mRootView = (ViewGroup) inflater.inflate(R.layout.fragment_my_card, null); 
    ... 
} 

這樣可以控制所發生的白卡上。

+4

您是否知道在使用自定義佈局時如何顯示頂部圖標?由於'onCreateContentView'的視圖放置在'CardFrame'內。 – Libin

+0

@利賓,我處於類似的情況,最終創建了我自己的片段,根本不使用CardFragment。 – Vesko

2

您顯示的示例圖像實際上是一個自定義通知。你需要熟悉這裏Android Wear通知:

Custom Notifications

這項工作是一個有點冗長,所以我會盡量簡短而簡潔。

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