package com.stanleycen.facebookanalytics; import android.content.BroadcastReceiver; import android.content.Context; import android.content.Intent; import android.content.IntentFilter; import android.os.Bundle; import android.util.AttributeSet; import android.widget.ProgressBar; /** * Created by scen on 8/31/13. */ public class ReceiverProgressBarView extends ProgressBar { ProgressBroadcastReceiver receiver; public ReceiverProgressBarView(Context context) { super(context); init(); } private void init() { receiver = new ProgressBroadcastReceiver(); IntentFilter filter = new IntentFilter("com.stanleycen.facebookanalytics.progress"); filter.addCategory("android.intent.category.DEFAULT"); getContext().registerReceiver(receiver, filter); setIndeterminate(true); } public ReceiverProgressBarView(Context context, AttributeSet attrs) { super(context, attrs); init(); } public ReceiverProgressBarView(Context context, AttributeSet attrs, int defStyle) { super(context, attrs, defStyle); init(); } @Override public void onDetachedFromWindow() { getContext().unregisterReceiver(receiver); super.onDetachedFromWindow(); } public class ProgressBroadcastReceiver extends BroadcastReceiver { @Override public void onReceive(Context context, Intent intent) { Bundle e = intent.getExtras(); if (e != null) { String s = e.getString("action", ""); if (s.equals("indeterminate")) { setIndeterminate(true); } else if (s.equals("update")) { setIndeterminate(false); setProgress(e.getInt("progress", 0)); } } } } }