Fix the flickering issue when 2 SurfaceView are one above the other (with the Printer Simulator)

This commit is contained in:
dgis 2019-06-24 19:39:14 +02:00
parent 8ebe008438
commit 74a9994d53
4 changed files with 23 additions and 24 deletions

View file

@ -145,10 +145,10 @@ The Eric's Real scripts ("real*.kml" and "real*.bmp") are embedded in this appli
TODO TODO
- Pan and zoom seems possible after closing the calc.
- In Chrome OS: - In Chrome OS:
- The timezone seems to be GMT (localtime_r not right?)! - The timezone seems to be GMT (localtime_r not right?)!
- sometimes there is no OK button in the KML Script Compilation Result. - sometimes there is no OK button in the KML Script Compilation Result.
- Pan and zoom seems possible after closing the calc.
- Improve the swipe gesture. - Improve the swipe gesture.
- The clock seems unsynchronized sometimes. - The clock seems unsynchronized sometimes.
- Add KML script loading dependencies fallback to the inner ROM (and may be KML include?). - Add KML script loading dependencies fallback to the inner ROM (and may be KML include?).

View file

@ -28,13 +28,13 @@ import android.view.InputDevice;
import android.view.KeyEvent; import android.view.KeyEvent;
import android.view.MotionEvent; import android.view.MotionEvent;
import android.view.ScaleGestureDetector; import android.view.ScaleGestureDetector;
import android.view.SurfaceView;
import android.view.View; import android.view.View;
import android.widget.OverScroller; import android.widget.OverScroller;
import androidx.core.view.ViewCompat; import androidx.core.view.ViewCompat;
public class PanAndScaleView extends SurfaceView { /* Inherit from View and not SurfaceView to prevent 2 SurfaceView with one over the other! */
public class PanAndScaleView extends View {
protected static final String TAG = "PanAndScaleView"; protected static final String TAG = "PanAndScaleView";
protected final boolean debug = false; protected final boolean debug = false;

View file

@ -19,7 +19,6 @@ import android.app.Activity;
import android.app.Dialog; import android.app.Dialog;
import android.content.Context; import android.content.Context;
import android.content.Intent; import android.content.Intent;
import android.content.res.Resources;
import android.graphics.Bitmap; import android.graphics.Bitmap;
import android.graphics.Canvas; import android.graphics.Canvas;
import android.graphics.Color; import android.graphics.Color;
@ -27,22 +26,18 @@ import android.graphics.ColorMatrixColorFilter;
import android.graphics.Paint; import android.graphics.Paint;
import android.graphics.Rect; import android.graphics.Rect;
import android.os.Bundle; import android.os.Bundle;
import android.text.Layout;
import android.util.AttributeSet; import android.util.AttributeSet;
import android.util.Log; import android.util.Log;
import android.util.TypedValue;
import android.view.LayoutInflater; import android.view.LayoutInflater;
import android.view.MenuItem; import android.view.MenuItem;
import android.view.View; import android.view.View;
import android.view.ViewGroup; import android.view.ViewGroup;
import android.view.Window; import android.view.Window;
import android.view.WindowManager;
import android.widget.TextView; import android.widget.TextView;
import androidx.annotation.NonNull; import androidx.annotation.NonNull;
import androidx.appcompat.app.AppCompatDialogFragment; import androidx.appcompat.app.AppCompatDialogFragment;
import androidx.appcompat.widget.Toolbar; import androidx.appcompat.widget.Toolbar;
import androidx.core.content.ContextCompat;
import androidx.core.content.FileProvider; import androidx.core.content.FileProvider;
import androidx.viewpager.widget.PagerAdapter; import androidx.viewpager.widget.PagerAdapter;
import androidx.viewpager.widget.ViewPager; import androidx.viewpager.widget.ViewPager;
@ -144,6 +139,7 @@ public class PrinterSimulatorFragment extends AppCompatDialogFragment {
// intent.addFlags(Intent.FLAG_GRANT_READ_URI_PERMISSION); // intent.addFlags(Intent.FLAG_GRANT_READ_URI_PERMISSION);
// intent.putExtra(Intent.EXTRA_STREAM, FileProvider.getUriForFile(getActivity(),getActivity().getPackageName() + ".provider", imageFile)); // intent.putExtra(Intent.EXTRA_STREAM, FileProvider.getUriForFile(getActivity(),getActivity().getPackageName() + ".provider", imageFile));
startActivity(Intent.createChooser(intent, getString(Utils.resId(PrinterSimulatorFragment.this, "string", "message_printer_share_text")))); startActivity(Intent.createChooser(intent, getString(Utils.resId(PrinterSimulatorFragment.this, "string", "message_printer_share_text"))));
//dismiss();
} else if(item.getItemId() == Utils.resId(PrinterSimulatorFragment.this, "id", "menu_printer_simulator_share_graphic")) { } else if(item.getItemId() == Utils.resId(PrinterSimulatorFragment.this, "id", "menu_printer_simulator_share_graphic")) {
String imageFilename = "HPPrinter-" + new SimpleDateFormat("yyyy-MM-dd_HH-mm-ss", Locale.US).format(new Date()); String imageFilename = "HPPrinter-" + new SimpleDateFormat("yyyy-MM-dd_HH-mm-ss", Locale.US).format(new Date());
try { try {
@ -168,6 +164,7 @@ public class PrinterSimulatorFragment extends AppCompatDialogFragment {
intent.addFlags(Intent.FLAG_GRANT_READ_URI_PERMISSION); intent.addFlags(Intent.FLAG_GRANT_READ_URI_PERMISSION);
intent.putExtra(Intent.EXTRA_STREAM, FileProvider.getUriForFile(getActivity(),getActivity().getPackageName() + ".provider", imageFile)); intent.putExtra(Intent.EXTRA_STREAM, FileProvider.getUriForFile(getActivity(),getActivity().getPackageName() + ".provider", imageFile));
startActivity(Intent.createChooser(intent, getString(Utils.resId(PrinterSimulatorFragment.this, "string", "message_printer_share_graphic")))); startActivity(Intent.createChooser(intent, getString(Utils.resId(PrinterSimulatorFragment.this, "string", "message_printer_share_graphic"))));
//dismiss();
} catch (Exception e) { } catch (Exception e) {
e.printStackTrace(); e.printStackTrace();
Utils.showAlert(getActivity(), e.getMessage()); Utils.showAlert(getActivity(), e.getMessage());
@ -180,16 +177,16 @@ public class PrinterSimulatorFragment extends AppCompatDialogFragment {
return true; return true;
} }
}); });
TypedValue tv = new TypedValue(); // Context context = getContext();
Context context = getContext(); // if(context != null) {
if(context != null) { // Resources.Theme theme = context.getTheme();
Resources.Theme theme = context.getTheme(); // if (theme != null) {
if (theme != null) { // TypedValue tv = new TypedValue();
theme.resolveAttribute(androidx.appcompat.R.attr.actionBarSize, tv, true); // theme.resolveAttribute(androidx.appcompat.R.attr.actionBarSize, tv, true);
int actionBarHeight = getResources().getDimensionPixelSize(tv.resourceId); // int actionBarHeight = getResources().getDimensionPixelSize(tv.resourceId);
toolbar.setMinimumHeight(actionBarHeight); // toolbar.setMinimumHeight(actionBarHeight);
} // }
} // }
setMenuVisibility(true); setMenuVisibility(true);
// ViewPager with Text and Graph // ViewPager with Text and Graph
@ -245,9 +242,11 @@ public class PrinterSimulatorFragment extends AppCompatDialogFragment {
return view; return view;
} }
private void appendTextToPrinter(String text) { private void appendTextToPrinter(String fullText, String text) {
if(textViewPrinterText != null && text != null && text.length() > 0) { if(textViewPrinterText != null) {
if(fullText != null)
textViewPrinterText.setText(fullText);
if (text != null && text.length() > 0) {
// boolean isAtMaxScrollPosition; // boolean isAtMaxScrollPosition;
// int currentScrollPosition = textViewPrinterText.getScrollY(); // SP // int currentScrollPosition = textViewPrinterText.getScrollY(); // SP
// int viewHeight = textViewPrinterText.getHeight(); // VH // int viewHeight = textViewPrinterText.getHeight(); // VH
@ -270,14 +269,15 @@ public class PrinterSimulatorFragment extends AppCompatDialogFragment {
// textViewPrinterText.scrollTo(0, currentScrollPosition); // textViewPrinterText.scrollTo(0, currentScrollPosition);
// } // }
// } else // } else
textViewPrinterText.append(text); textViewPrinterText.append(text);
}
} }
} }
private void updatePaper(String textAppended) { private void updatePaper(String textAppended) {
if(debug) Log.d(TAG, "updatePaper(" + textAppended + ")"); if(debug) Log.d(TAG, "updatePaper(" + textAppended + ")");
if(textViewPrinterText != null) { if(textViewPrinterText != null) {
appendTextToPrinter(textAppended == null ? printerSimulator.getText() : textAppended); appendTextToPrinter(textAppended == null ? printerSimulator.getText() : null, textAppended);
} }
if(printerGraphView != null) { if(printerGraphView != null) {
printerGraphView.updatePaperLayout(); printerGraphView.updatePaperLayout();

View file

@ -38,7 +38,6 @@ import android.view.View;
import android.view.ViewGroup; import android.view.ViewGroup;
import android.widget.ImageButton; import android.widget.ImageButton;
import android.widget.TextView; import android.widget.TextView;
import android.widget.Toast;
import androidx.annotation.Nullable; import androidx.annotation.Nullable;
import androidx.appcompat.app.ActionBarDrawerToggle; import androidx.appcompat.app.ActionBarDrawerToggle;