سؤال

أود أن أضع شريط تقدم في شريط الإخطار. تتمثل الفكرة في عرض شريط التقدم أثناء تحميل البرنامج ملفًا إلى خادم. كل شيء آخر على ما يرام ، لكن لا يمكنني معرفة كيفية تحديث شريط التقدم داخل الإخطار. هل يعرف أي شخص أي نمط للعب معه؟ أعني ، حيث يجب أن أقوم بتحديث شريط التقدم ، في خدمة أو نشاط وهكذا.

هل كانت مفيدة؟

المحلول

لا أعرف كيف يبدو رمزك ، لذلك لا أعرف ما تحتاج إلى تعديله ، قام Buti ببعض البحث من خلال الوثائق. لقد وجدت بعض الأشياء على إشعارات, ProgressBars, ، و RemoteViews.

على وجه التحديد ، في RemoveView ، يمكنك تحديث شريط التقدم. لذا ، الجمع بين بعض رمز المثال في كل رابط ، أحصل على شيء مثل هذا:

public class MyActivity extends Activity {
    private static final int PROGRESS = 0x1;
    private static final int MAX_PROGRESS = 100;

    private int mProgressStatus = 0;

    private Handler mHandler = new Handler();

    protected void onCreate(Bundle icicle) {
        super.onCreate(icicle);

        //define Notification
        //...

        RemoteViews contentView = new RemoteViews(getPackageName(), R.layout.custom_notification_layout);
        contentView.setProgressBar(R.id.progress_bar, MAX_PROGRESS, mProgressStatus, false);
        notification.contentView = contentView;

        // Start file upload in a background thread
        new Thread(new Runnable() {
            public void run() {
                while (mProgressStatus < MAX_PROGRESS) {
                    mProgressStatus = doWork();

                    // Update the progress bar
                    mHandler.post(new Runnable() {
                        public void run() {
                            contentView.setProgressBar(R.id.progress_bar, MAX_PROGRESS, mProgressStatus, false);
                        }
                    });
                }
            }
        }).start();
    }
}

نصائح أخرى

يمكنك استخدام طرق عرض مخصصة في الإخطار:
https://developer.android.com/guide/topics/ui/Notifiers/notifications.html#customexpandview

لإزالة شريط التقدم من RemoteView استخدم الكود التالي:-

 remoteViews.setViewVisibility(R.id.progressBar, View.INVISIBLE);

تستطيع ايضا استخذام View.GONE ولكن هذا سيجعل Android لملء المساحة الفارغة.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top