How to disable all user inputs (click, touch) on an android view
In your GameView implement onTouchEvent() like this.
public class GameView extends View {
public boolean isTouchable() {
return isTouchable;
}
public void setTouchable(boolean isTouchable) {
this.isTouchable = isTouchable;
}
private boolean isTouchable= true;
public GameView(Context context, AttributeSet attrs) {
super(context, attrs);
}
public GameView(Context context) {
super(context);
}
//// ... Your Code
@Override
public boolean onTouchEvent(MotionEvent event) {
if(isTouchable){
return super.onTouchEvent(event); // Enable touch event
}
return false; // Block touch event
}
}
How to use?
gameView.setTouchable(false); // to disable touch
gameView.setTouchable(true); // to enable touch
How to disable touch events on a View?
Generally, you will want the splash screen to prevent the user from doing anything while it is present. You can actually do this, because views in android, as in other UI frameworks, have a hierarchy in which touch events cascade.
Even though you don't want the splash screen to be interactive, you can still steal all of the touch events that occur on it, and just do nothing with them. The answer itself is to override onTouchEvent
in your SplashScreen
class with:
@Override
public boolean onTouchEvent(MotionEvent event) {
return true; // Splash screen is consuming all touch events on it.
}
Returning true
in this basically says that nothing under this view should receive a touch event. As long as it is visible and over top of the surface view, your surface view will not get any touch events. See here for details.
Disable a whole activity from user action
In order to block user touch events, use:
getWindow().setFlags(WindowManager.LayoutParams.FLAG_NOT_TOUCHABLE,
WindowManager.LayoutParams.FLAG_NOT_TOUCHABLE);
To get touch events back, use:
getWindow().clearFlags(WindowManager.LayoutParams.FLAG_NOT_TOUCHABLE);
EDIT:
If you want to add a feature of disable and greyed out display, you need to add in your xml layout file a linear layout that fills the parent. Set its background to #B0000000 and its visibilty to Gone. Than programicly set its visibility to Visible.
How to disable user interaction while ProgressBar is visible in android?
Your question: How to disable the user interaction while ProgressBar is visible in android?
To disable the user interaction you just need to add the following code
getWindow().setFlags(WindowManager.LayoutParams.FLAG_NOT_TOUCHABLE,
WindowManager.LayoutParams.FLAG_NOT_TOUCHABLE);
To get user interaction back you just need to add the following code
getWindow().clearFlags(WindowManager.LayoutParams.FLAG_NOT_TOUCHABLE);
Here is an example:
Note:I am giving you just an example to show how to disable or retain user interaction
Add a progress bar in your xml.Something like this
<ProgressBar
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:id="@+id/progressBar"
android:visibility="gone"/>
In MainActivity when a button pressed you show the progressbar and disable the user interaction.
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
mImageView = (ImageView) findViewById(R.id.imageView);
mProgressBar = (ProgressBar) findViewById(R.id.progressBar);
mImageView.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
mProgressBar.setVisibility(View.VISIBLE);
getWindow().setFlags(WindowManager.LayoutParams.FLAG_NOT_TOUCHABLE,
WindowManager.LayoutParams.FLAG_NOT_TOUCHABLE);
}
});
}
And when user backPressed you remove the progressbar again retain the user interaction.Something like this
@Override
public void onBackPressed() {
super.onBackPressed();
mProgressBar.setVisibility(View.GONE);
getWindow().clearFlags(WindowManager.LayoutParams.FLAG_NOT_TOUCHABLE);
}
If you want to add a feature of disable and greyed out display, you need to add in your xml layout file a linear layout that fills the parent. Set its background to #B0000000 and its visibilty
to GONE
. Then programmatically set its visibility
to VISIBLE
.
Hope this help!
Android: How to prevent any touch events from being passed from a view to the one underneath it?
Add an onTouchEvent
method to the view with top position then return true. True will tell the event bubbling that the event was consumed therefore prevent event from bubbling to other views.
protected boolean onTouchEvent (MotionEvent me) {
return true;
}
For v1
you would do an import:
import android.view.View.OnTouchListener;
Then set the onTouchListener:
v1.setOnTouchListener(new OnTouchListener() {
@Override
public boolean onTouch(View v, MotionEvent event) {
return true;
}
});
How to disable touch event?
The way to ignore a touch event on a webview is quite simple, just do :
mWebView.setOnTouchListener(new View.OnTouchListener() {
@Override
public boolean onTouch(View v, MotionEvent event) {
return false; //returns true if you wan't also ignore the js touch events
}
});
The thing is, I'm not sure the triggered event are from the webview or another view, you need to define it so you can set this same OnTouchListener on the appropriate view.
Related Topics
Asking Camera Permission for Webview At Runtime
How to Clear Livedata Stored Value
How to Implement Referral Program in Mobile Apps for Both Android and Iphone
Fastest Way to Upload Multiple Image to Server in Android
How to Create a Folder in Android External Storage Directory
Detect or Prevent If User Uses Fake Location
How to Set Space Between Listview Items in Android
React Native | Failed to Install the App. Please Accept All Necessary Sdk Licenses Using Sdk Manager
Remove Apk from Library in Google Play Developer Console
Android: How to Open a Specific Folder Via Intent and Show Its Content in a File Browser
Import Android.Support.V7.App Cannot Be Resolved
Download Manager Progress Not Visible in the Notification Area
How to Set the Starting Position of a Scrollview
How to Add/Remove Object in Recyclerview Using Arraylist in Android
How Disable Redirect in Webview
App Crashes When Running Maps Activity
Android: Open a Pdf from My App Using the Built in Pdf Viewer