Missing `PendingIntent` mutability flag 修复了ui NoteEditActivity中的错误: 1.Must be one of: View.VISIBLE, View.INVISIBLE, View.GONE 2.Missing `PendingIntent` mutability flag 修复了ui NoteEditText中的错误: This custom view should extend `androidx.appcompat.widget.AppCompatEditText` instead 修复了ui NotesPreferenceActivity中的错误: `mReceiver` is missing `RECEIVER_EXPORTED` or `RECEIVER_NOT_EXPORTED` flag for unprotected broadcasts registered for net.micode.notes.gtask.remote.gtask_sync_servicemain
							parent
							
								
									7533b5809c
								
							
						
					
					
						commit
						d97a5a7c2b
					
				| @ -0,0 +1,190 @@ | ||||
| package net.micode.notes; | ||||
| 
 | ||||
| import android.annotation.SuppressLint; | ||||
| import androidx.appcompat.app.ActionBar; | ||||
| import androidx.appcompat.app.AppCompatActivity; | ||||
| import android.os.Build; | ||||
| import android.os.Bundle; | ||||
| import android.os.Handler; | ||||
| import android.os.Looper; | ||||
| import android.view.MotionEvent; | ||||
| import android.view.View; | ||||
| import android.view.WindowInsets; | ||||
| import net.micode.notes.databinding.ActivitySplashBinding; | ||||
| 
 | ||||
| /** | ||||
|  * An example full-screen activity that shows and hides the system UI (i.e. | ||||
|  * status bar and navigation/system bar) with user interaction. | ||||
|  */ | ||||
| public class SplashActivity extends AppCompatActivity { | ||||
|     /** | ||||
|      * Whether or not the system UI should be auto-hidden after | ||||
|      * {@link #AUTO_HIDE_DELAY_MILLIS} milliseconds. | ||||
|      */ | ||||
|     private static final boolean AUTO_HIDE = true; | ||||
| 
 | ||||
|     /** | ||||
|      * If {@link #AUTO_HIDE} is set, the number of milliseconds to wait after | ||||
|      * user interaction before hiding the system UI. | ||||
|      */ | ||||
|     private static final int AUTO_HIDE_DELAY_MILLIS = 3000; | ||||
| 
 | ||||
|     /** | ||||
|      * Some older devices needs a small delay between UI widget updates | ||||
|      * and a change of the status and navigation bar. | ||||
|      */ | ||||
|     private static final int UI_ANIMATION_DELAY = 300; | ||||
| 
 | ||||
|     private View mContentView; | ||||
|     private View mControlsView; | ||||
|     private boolean mVisible; | ||||
| private ActivitySplashBinding binding; | ||||
| 
 | ||||
|     @Override | ||||
|     protected void onCreate(Bundle savedInstanceState) { | ||||
|         super.onCreate(savedInstanceState); | ||||
| 
 | ||||
|      binding = ActivitySplashBinding.inflate(getLayoutInflater()); | ||||
|      setContentView(binding.getRoot()); | ||||
| 
 | ||||
|         mVisible = true; | ||||
|         mControlsView = binding.fullscreenContentControls; | ||||
|         mContentView = binding.fullscreenContent; | ||||
| 
 | ||||
|         // Set up the user interaction to manually show or hide the system UI.
 | ||||
|         mContentView.setOnClickListener(new View.OnClickListener() { | ||||
|             @Override | ||||
|             public void onClick(View view) { | ||||
|                 toggle(); | ||||
|             } | ||||
|         }); | ||||
| 
 | ||||
|         // Upon interacting with UI controls, delay any scheduled hide()
 | ||||
|         // operations to prevent the jarring behavior of controls going away
 | ||||
|         // while interacting with the UI.
 | ||||
|         binding.dummyButton.setOnTouchListener(mDelayHideTouchListener); | ||||
|     } | ||||
| 
 | ||||
|     @Override | ||||
|     protected void onPostCreate(Bundle savedInstanceState) { | ||||
|         super.onPostCreate(savedInstanceState); | ||||
| 
 | ||||
|         // Trigger the initial hide() shortly after the activity has been
 | ||||
|         // created, to briefly hint to the user that UI controls
 | ||||
|         // are available.
 | ||||
|         delayedHide(100); | ||||
|     } | ||||
| 
 | ||||
|     /** | ||||
|      * Touch listener to use for in-layout UI controls to delay hiding the | ||||
|      * system UI. This is to prevent the jarring behavior of controls going away | ||||
|      * while interacting with activity UI. | ||||
|      */ | ||||
|     private final View.OnTouchListener mDelayHideTouchListener = new View.OnTouchListener() { | ||||
|         @Override | ||||
|         public boolean onTouch(View view, MotionEvent motionEvent) { | ||||
|             switch (motionEvent.getAction()) { | ||||
|                 case MotionEvent.ACTION_DOWN: | ||||
|                     if (AUTO_HIDE) { | ||||
|                         delayedHide(AUTO_HIDE_DELAY_MILLIS); | ||||
|                     } | ||||
|                     break; | ||||
|                 case MotionEvent.ACTION_UP: | ||||
|                     view.performClick(); | ||||
|                     break; | ||||
|                 default: | ||||
|                     break; | ||||
|             } | ||||
|             return false; | ||||
|         } | ||||
|     }; | ||||
| 
 | ||||
|     private void toggle() { | ||||
|         if (mVisible) { | ||||
|             hide(); | ||||
|         } else { | ||||
|             show(); | ||||
|         } | ||||
|     } | ||||
| 
 | ||||
|     private void hide() { | ||||
|         // Hide UI first
 | ||||
|         ActionBar actionBar = getSupportActionBar(); | ||||
|         if (actionBar != null) { | ||||
|             actionBar.hide(); | ||||
|         } | ||||
|         mControlsView.setVisibility(View.GONE); | ||||
|         mVisible = false; | ||||
| 
 | ||||
|         // Schedule a runnable to remove the status and navigation bar after a delay
 | ||||
|         mHideHandler.removeCallbacks(mShowPart2Runnable); | ||||
|         mHideHandler.postDelayed(mHidePart2Runnable, UI_ANIMATION_DELAY); | ||||
|     } | ||||
| 
 | ||||
|     private final Runnable mHidePart2Runnable = new Runnable() { | ||||
|         @SuppressLint("InlinedApi") | ||||
|         @Override | ||||
|         public void run() { | ||||
|             // Delayed removal of status and navigation bar
 | ||||
|             if (Build.VERSION.SDK_INT >= 30) { | ||||
|                 mContentView.getWindowInsetsController().hide( | ||||
|                         WindowInsets.Type.statusBars() | WindowInsets.Type.navigationBars()); | ||||
|             } else { | ||||
|                 // Note that some of these constants are new as of API 16 (Jelly Bean)
 | ||||
|                 // and API 19 (KitKat). It is safe to use them, as they are inlined
 | ||||
|                 // at compile-time and do nothing on earlier devices.
 | ||||
|                 mContentView.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); | ||||
|             } | ||||
|         } | ||||
|     }; | ||||
| 
 | ||||
|     private void show() { | ||||
|         // Show the system bar
 | ||||
|         if (Build.VERSION.SDK_INT >= 30) { | ||||
|             mContentView.getWindowInsetsController().show( | ||||
|                     WindowInsets.Type.statusBars() | WindowInsets.Type.navigationBars()); | ||||
|         } else { | ||||
|             mContentView.setSystemUiVisibility(View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN | ||||
|                     | View.SYSTEM_UI_FLAG_LAYOUT_HIDE_NAVIGATION); | ||||
|         } | ||||
|         mVisible = true; | ||||
| 
 | ||||
|         // Schedule a runnable to display UI elements after a delay
 | ||||
|         mHideHandler.removeCallbacks(mHidePart2Runnable); | ||||
|         mHideHandler.postDelayed(mShowPart2Runnable, UI_ANIMATION_DELAY); | ||||
|     } | ||||
| 
 | ||||
|     private final Runnable mShowPart2Runnable = new Runnable() { | ||||
|         @Override | ||||
|         public void run() { | ||||
|             // Delayed display of UI elements
 | ||||
|             ActionBar actionBar = getSupportActionBar(); | ||||
|             if (actionBar != null) { | ||||
|                 actionBar.show(); | ||||
|             } | ||||
|             mControlsView.setVisibility(View.VISIBLE); | ||||
|         } | ||||
|     }; | ||||
| 
 | ||||
|     private final Handler mHideHandler = new Handler(Looper.myLooper()); | ||||
|     private final Runnable mHideRunnable = new Runnable() { | ||||
|         @Override | ||||
|         public void run() { | ||||
|             hide(); | ||||
|         } | ||||
|     }; | ||||
| 
 | ||||
|     /** | ||||
|      * Schedules a call to hide() in delay milliseconds, canceling any | ||||
|      * previously scheduled calls. | ||||
|      */ | ||||
|     private void delayedHide(int delayMillis) { | ||||
|         mHideHandler.removeCallbacks(mHideRunnable); | ||||
|         mHideHandler.postDelayed(mHideRunnable, delayMillis); | ||||
|     } | ||||
| } | ||||
| @ -0,0 +1,47 @@ | ||||
| <?xml version="1.0" encoding="utf-8"?> | ||||
| <FrameLayout xmlns:android="http://schemas.android.com/apk/res/android" | ||||
|     xmlns:tools="http://schemas.android.com/tools" | ||||
|     android:theme="@style/ThemeOverlay.Notesmaster.FullscreenContainer" | ||||
|     android:layout_width="match_parent" | ||||
|     android:layout_height="match_parent" | ||||
|     android:background="?attr/fullscreenBackgroundColor" | ||||
|     tools:context=".SplashActivity"> | ||||
| 
 | ||||
|     <!-- The primary full-screen view. This can be replaced with whatever view | ||||
|          is needed to present your content, e.g. VideoView, SurfaceView, | ||||
|          TextureView, etc. --> | ||||
|     <TextView android:id="@+id/fullscreen_content" | ||||
|         android:layout_width="match_parent" | ||||
|         android:layout_height="match_parent" | ||||
|         android:textColor="?attr/fullscreenTextColor" | ||||
|         android:keepScreenOn="true" | ||||
|         android:textStyle="bold" | ||||
|         android:textSize="50sp" | ||||
|         android:gravity="center" | ||||
|         android:text="@string/dummy_content" /> | ||||
| 
 | ||||
|     <!-- This FrameLayout insets its children based on system windows using | ||||
|          android:fitsSystemWindows. --> | ||||
|     <FrameLayout android:layout_width="match_parent" | ||||
|         android:layout_height="match_parent" | ||||
|         android:fitsSystemWindows="true"> | ||||
| 
 | ||||
|         <LinearLayout android:id="@+id/fullscreen_content_controls" | ||||
|             style="@style/Widget.Theme.Notesmaster.ButtonBar.Fullscreen" | ||||
|             android:layout_width="match_parent" | ||||
|             android:layout_height="wrap_content" | ||||
|             android:layout_gravity="bottom|center_horizontal" | ||||
|             android:orientation="horizontal" | ||||
|             tools:ignore="UselessParent"> | ||||
| 
 | ||||
|             <Button android:id="@+id/dummy_button" | ||||
|                 style="?android:attr/buttonBarButtonStyle" | ||||
|                 android:layout_width="0dp" | ||||
|                 android:layout_height="wrap_content" | ||||
|                 android:layout_weight="1" | ||||
|                 android:text="@string/dummy_button" /> | ||||
| 
 | ||||
|         </LinearLayout> | ||||
|     </FrameLayout> | ||||
| 
 | ||||
| </FrameLayout> | ||||
					Loading…
					
					
				
		Reference in new issue