1 package org.coolreader.crengine; 2 3 import android.view.Gravity; 4 import android.view.LayoutInflater; 5 import android.view.View; 6 import android.widget.LinearLayout; 7 import android.widget.PopupWindow; 8 9 import org.coolreader.R; 10 11 public class ProgressPopup { 12 private BaseActivity context; 13 private View parent; 14 private PopupWindow popup; ProgressPopup(BaseActivity context, View parent)15 public ProgressPopup(BaseActivity context, View parent) { 16 this.context = context; 17 this.parent = parent; 18 } show()19 public void show() { 20 if (popup == null) { 21 L.d("showing progress indicator"); 22 LayoutInflater inflater = LayoutInflater.from(context); 23 View content = inflater.inflate(R.layout.network_access_progress, null); 24 content.measure(LinearLayout.LayoutParams.WRAP_CONTENT, LinearLayout.LayoutParams.WRAP_CONTENT); 25 popup = new PopupWindow(content, content.getMeasuredWidth(), content.getMeasuredHeight()); 26 //popup.setContentView(content); 27 popup.setBackgroundDrawable(null); 28 popup.setOutsideTouchable(true); 29 popup.showAtLocation(parent, Gravity.CENTER, 0, 0); 30 popup.setTouchable(true); 31 popup.setTouchInterceptor((v, event) -> { 32 // process & ignore all touch events 33 return true; 34 }); 35 popup.setOnDismissListener(() -> popup = null); 36 } 37 } hide()38 public void hide() { 39 if (popup != null) { 40 L.d("hiding progress indicator"); 41 popup.dismiss(); 42 popup = null; 43 } 44 } isShown()45 public boolean isShown() { 46 return popup != null && popup.isShowing(); 47 } 48 } 49