0

複数のファイルを同時にダウンロードし、各ファイルのダウンロードのプロセスを通知領域に表示するアプリが欲しいのですが、どうすればよいですか?ファイルをダウンロードするときにプロセス バーを 1 つだけ表示できるようになりました。ここにファイル notification_progress_layout.xml

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent" 
android:layout_height="fill_parent"
android:padding="5dp">
<ImageView android:id="@+id/status_icon"
    android:layout_width="wrap_content" 
    android:layout_height="fill_parent"
    android:layout_alignParentLeft="true" 
    android:layout_marginRight="10dp"
    android:src="@drawable/icon_download1"/>

<RelativeLayout android:layout_width="fill_parent"
    android:layout_height="fill_parent" 
    android:layout_toRightOf="@id/status_icon">

    <TextView android:id="@+id/status_text" 
        android:layout_width="fill_parent"
        android:layout_height="wrap_content" 
        android:layout_alignParentTop="true" 
        />
    <ProgressBar android:id="@+id/status_progress"
        android:layout_width="fill_parent" 
        android:layout_height="wrap_content"
        android:layout_below="@id/status_text"
        android:indeterminate="false" 
        android:indeterminateOnly="false"
        style="?android:attr/progressBarStyleHorizontal"  />


</RelativeLayout>

および通知ファイル

        Intent notificationIntent = new Intent();
        PendingIntent contentIntent = PendingIntent.getActivity(activity, 0, notificationIntent, 0);
        notificationManager = (NotificationManager) activity.getSystemService(Context.NOTIFICATION_SERVICE);
        notification = new Notification(R.drawable.icon_download1, "Downloading...", System.currentTimeMillis());

        contentView = new RemoteViews(activity.getPackageName(), R.layout.notification_progress_layout);
        contentView.setProgressBar(R.id.status_progress, 100, 0, false);        
        contentView.setTextViewText(R.id.status_text,"Downloading...");  

        notification.flags = notification.flags| Notification.FLAG_ONGOING_EVENT;
        notification.contentView = contentView;         
        notification.contentIntent = contentIntent;

        notificationManager.notify(NOTIFICATION_ID,notification);
4

1 に答える 1

0

このようにしてください:

  1. LinearLayout内部でデフォルトのXMLを作成します。
  2. ProgressBar内部で別のレイアウトを作成します。
  3. 次のコードを使用します。

コード:

contentView = new RemoteViews(activity.getPackageName(), R.layout.notification_progress_main);
for (i=0; i<downloads.length;i++){
   contentView2 = new RemoteViews(activity.getPackageName(), R.layout.notification_progress_layout);
   contentView2.setProgressBar(R.id.status_progress, 100, 0, false); 
   contentView.addView(R.layout.linearid, contentView2);

}
notification.contentView = contentView;
notificationManager.notify(NOTIFICATION_ID,notification);

ダウンロードごとに、progressBarの値を正しい値に変更します。

于 2012-11-30T08:41:39.693 に答える