package com.ztspeech.simutalk2.dictionary.util; import android.content.Context; import android.graphics.drawable.AnimationDrawable; import android.view.Gravity; import android.view.LayoutInflater; import android.view.View; import android.view.View.OnClickListener; import android.view.ViewGroup.LayoutParams; import android.view.ViewTreeObserver.OnPreDrawListener; import android.widget.Button; import android.widget.ImageView; import android.widget.PopupWindow; import android.widget.PopupWindow.OnDismissListener; import com.ztspeech.simutalk2.R; import com.ztspeech.simutalk2.qa.WaitingActivity.OnWaitingListener; public class PopWindowTTs { public Context context; public boolean isCancel = false; private LayoutInflater inflater; private View v; private PopupWindow mRecognizerWindow; private ImageView waitImageView; private AnimationDrawable waiteAnimation; private Button btn_cancel; @SuppressWarnings("unused") private boolean flag = false; private OnWaitingListener mOnWaitingListener; public PopWindowTTs(Context context) { this.context = context; inflater = (LayoutInflater) context.getSystemService(Context.LAYOUT_INFLATER_SERVICE); v = inflater.inflate(R.layout.pop_recognizer_view, null); mRecognizerWindow = new PopupWindow(v, LayoutParams.FILL_PARENT, LayoutParams.WRAP_CONTENT); mRecognizerWindow.setFocusable(true); mRecognizerWindow.setOutsideTouchable(false); // mRecognizerWindow.setBackgroundDrawable(new BitmapDrawable()); // mRecognizerWindow.setOnDismissListener(onDismissListener); waitImageView = (ImageView) v.findViewById(R.id.imageviewanim); waitImageView.setBackgroundResource(R.drawable.recognizer_wait_anim); waiteAnimation = (AnimationDrawable) waitImageView.getBackground(); btn_cancel = (Button) v.findViewById(R.id.btn_cancel); btn_cancel.setOnClickListener(new OnClickListener() { @Override public void onClick(View v) { // dismissPopWindow(); if (mOnWaitingListener != null) { mOnWaitingListener.onCancel(); } else { dismissPopWindow(); } } }); } public void showLoading() { startProgressDialog(); } public void stopProgressDialog() { flag = true; dismissPopWindow(); } private void startProgressDialog() { waiteAnimation.stop(); mFirst = true; waitImageView.getViewTreeObserver().addOnPreDrawListener(mOnPreDrawListener); showPopWindowLocation(); } private void showPopWindowLocation() { mRecognizerWindow.showAtLocation(v, Gravity.BOTTOM, 0, 0); } public void setCancel(OnWaitingListener _mOnWaitingListener) { mOnWaitingListener = _mOnWaitingListener; } private void dismissPopWindow() { waiteAnimation.stop(); mFirst = true; mRecognizerWindow.dismiss(); } private boolean mFirst = true; private OnPreDrawListener mOnPreDrawListener = new OnPreDrawListener() { @Override public boolean onPreDraw() { if (mFirst) { waiteAnimation.start(); mFirst = false; } return true; } }; @SuppressWarnings("unused") private OnDismissListener onDismissListener = new OnDismissListener() { @Override public void onDismiss() { // if (!flag) { // dismissPopWindow(); // } if (mOnWaitingListener != null) { mOnWaitingListener.onCancel(); } flag = false; } }; }