| package com.fairphone.checkup.tests.display; |
| |
| |
| import android.content.Context; |
| import android.view.MotionEvent; |
| import android.view.View; |
| import android.widget.RelativeLayout; |
| import android.widget.ViewFlipper; |
| |
| import com.fairphone.checkup.R; |
| import com.fairphone.checkup.tests.Test; |
| |
| |
| public class DisplayTest extends Test { |
| |
| private static final String TAG = DisplayTest.class.getSimpleName(); |
| |
| private ViewFlipper mViewFlipper; |
| private RelativeLayout mParentLayout; |
| |
| private int parentPaddingLeft; |
| private int parentPaddingTop; |
| private int parentPaddingRight; |
| private int parentPaddingBottom; |
| |
| public DisplayTest(Context context) { |
| super(context); |
| } |
| |
| @Override |
| protected int getTestTitleID() { |
| return R.string.lcd_test_title; |
| } |
| |
| @Override |
| protected int getTestDescriptionID() { |
| return R.string.lcd_test_description; |
| } |
| |
| @Override |
| protected int getTestInstructionsID() { |
| return R.string.lcd_test_instructions; |
| } |
| |
| protected void saveParentPadding() { |
| parentPaddingLeft = mParentLayout.getPaddingLeft(); |
| parentPaddingTop = mParentLayout.getPaddingTop(); |
| parentPaddingRight = mParentLayout.getPaddingRight(); |
| parentPaddingBottom = mParentLayout.getPaddingBottom(); |
| } |
| |
| protected void removeParentPaddingSave() { |
| saveParentPadding(); |
| mParentLayout.setPadding(0, 0, 0, 0); |
| } |
| |
| protected void restoreParentPadding() { |
| mParentLayout.setPadding( |
| parentPaddingLeft, |
| parentPaddingTop, |
| parentPaddingRight, |
| parentPaddingBottom); |
| } |
| |
| private void switchToFullScreen() { |
| mViewFlipper = new ViewFlipper(getContext()); |
| ViewFlipper.LayoutParams layoutParams = new ViewFlipper.LayoutParams( |
| ViewFlipper.LayoutParams.WRAP_CONTENT, ViewFlipper.LayoutParams.WRAP_CONTENT); |
| mViewFlipper.setLayoutParams(layoutParams); |
| mParentLayout.addView(mViewFlipper); |
| |
| mViewFlipper.setSystemUiVisibility(View.SYSTEM_UI_FLAG_LOW_PROFILE |
| | View.SYSTEM_UI_FLAG_FULLSCREEN |
| | View.SYSTEM_UI_FLAG_LAYOUT_STABLE |
| | View.SYSTEM_UI_FLAG_IMMERSIVE_STICKY |
| | View.SYSTEM_UI_FLAG_LAYOUT_HIDE_NAVIGATION |
| | View.SYSTEM_UI_FLAG_HIDE_NAVIGATION); |
| removeParentPaddingSave(); |
| hideStartButton(); |
| } |
| |
| private void hideStartButton() { |
| findViewById(R.id.test_button).setVisibility(View.INVISIBLE); |
| } |
| |
| private void showStartButton() { |
| findViewById(R.id.test_button).setVisibility(View.VISIBLE); |
| } |
| |
| private void addDisplayPatterns() { |
| mViewFlipper.addView(new FullColorTestView(getContext(), 0xffff0000)); |
| mViewFlipper.addView(new FullColorTestView(getContext(), 0xff00ff00)); |
| mViewFlipper.addView(new FullColorTestView(getContext(), 0xff0000ff)); |
| mViewFlipper.addView(new FullColorTestView(getContext(), 0xffffffff)); |
| mViewFlipper.addView(new FullColorTestView(getContext(), 0xff000000)); |
| mViewFlipper.addView(new GradientTestView(getContext())); |
| } |
| |
| private void setTouchHandler() { |
| mViewFlipper.setOnTouchListener(new View.OnTouchListener() { |
| @Override |
| public boolean onTouch(View v, MotionEvent event) { |
| ViewFlipper viewFlipper = (ViewFlipper) v; |
| if (event.getAction() == MotionEvent.ACTION_DOWN) { |
| int displayedChild = viewFlipper.getDisplayedChild(); |
| int childCount = viewFlipper.getChildCount(); |
| if (displayedChild == childCount - 1) { |
| onTestSuccess(); |
| } |
| viewFlipper.showNext(); |
| } |
| return true; |
| } |
| }); |
| } |
| |
| @Override |
| protected void runTest() { |
| switchToFullScreen(); |
| setTouchHandler(); |
| addDisplayPatterns(); |
| } |
| |
| @Override |
| protected void onCleanUp() { |
| restoreParentPadding(); |
| showStartButton(); |
| mParentLayout.removeView(mViewFlipper); |
| super.onCleanUp(); |
| } |
| |
| @Override |
| protected void onPrepare() { |
| displayInstructions(); |
| mParentLayout = (RelativeLayout) findViewById(R.id.generic_test_relative_layout); |
| } |
| } |