package com.pets.ui; import com.example.actionbar.R; import android.content.Context; import android.graphics.Color; import android.graphics.drawable.GradientDrawable.Orientation; import android.os.Handler; import android.os.Message; import android.view.Gravity; import android.view.View; import android.view.View.OnClickListener; import android.widget.ImageView; import android.widget.LinearLayout; import android.widget.ProgressBar; public class ProgressMenuItem extends LinearLayout implements OnClickListener { private ProgressBar progressBar; private ImageView img; private ProgressCallback progressCallback; private Handler handler = new Handler() { @Override public void handleMessage(Message msg) { stopProgress(); } }; public Handler getHandler() { return handler; } public ProgressMenuItem(Context context) { super(context); init(); // setOnClickListener(this); } private ImageView initImageView() { img = new ImageView(getContext()); img.setLayoutParams(new LayoutParams(LayoutParams.MATCH_PARENT, LayoutParams.MATCH_PARENT)); img.setImageResource(R.drawable.gd_action_bar_refresh); img.setOnClickListener(this); return img; } private ProgressBar initProgressBar(int max, int visible) { progressBar = new ProgressBar(getContext()); progressBar.setLayoutParams(new LayoutParams(LayoutParams.MATCH_PARENT, LayoutParams.MATCH_PARENT, Gravity.CENTER)); progressBar.setIndeterminate(true); progressBar.setVisibility(visible); progressBar.setMax(max); progressBar.setScrollBarStyle(android.R.attr.progressBarStyleSmall); return progressBar; } private void init() { LayoutParams params = new LayoutParams(LayoutParams.MATCH_PARENT, LayoutParams.MATCH_PARENT); setLayoutParams(params); setOrientation(VERTICAL); addView(initImageView()); addView(initProgressBar(100, View.GONE)); } public void stopProgress() { if (progressBar.isShown()) { progressBar.setVisibility(View.INVISIBLE); } img.setVisibility(View.VISIBLE); } @Override public void onClick(View v) { if (!progressBar.isShown()) { progressBar.setVisibility(View.VISIBLE); } img.setVisibility(View.GONE); if (null != this.progressCallback) { progressCallback.onRefleshClick(); } } public static interface ProgressCallback { /** * 当刷新图标点击时触发 */ void onRefleshClick(); } public ProgressCallback getProgressCallback() { return progressCallback; } public void setProgressCallback(ProgressCallback progressCallback) { this.progressCallback = progressCallback; } }