تحديث شريط التقدم في شريط الإخطار
-
01-10-2019 - |
سؤال
أود أن أضع شريط تقدم في شريط الإخطار. تتمثل الفكرة في عرض شريط التقدم أثناء تحميل البرنامج ملفًا إلى خادم. كل شيء آخر على ما يرام ، لكن لا يمكنني معرفة كيفية تحديث شريط التقدم داخل الإخطار. هل يعرف أي شخص أي نمط للعب معه؟ أعني ، حيث يجب أن أقوم بتحديث شريط التقدم ، في خدمة أو نشاط وهكذا.
المحلول
لا أعرف كيف يبدو رمزك ، لذلك لا أعرف ما تحتاج إلى تعديله ، قام 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 لملء المساحة الفارغة.