我从url获取图像并在imageView上显示它.此功能正常运行.但我希望当我点击该图像时,它必须是全屏的.那么如何实现这一功能呢?我知道我错过了什么.请帮我.屏幕截图已附上.我也想在我的应用程序中使用相同的功能.
这是我的代码,我正在尝试图片点击:
@Override
public void onClick(View v) {
if (isTouch1) {
horizontalScrollView.setVisibility(View.GONE);
isTouch1 = false;
// mSystemUiHider.toggle();
setTheme(R.style.FullscreenTheme);
Log.d("Here isTouch is true", ">");
// ChangeThemeUtils.changeToTheme(FullScreenImageAdapter.this, ChangeThemeUtils.THEME_HIDE_ALL_WINDOW);
getSupportActionBar().hide();
} else {
isTouch1 = true;
horizontalScrollView.setVisibility(View.VISIBLE);
getSupportActionBar().show();
setTheme(R.style.ExampleTheme);
//mSystemUiHider.show();
Log.d("Here isTouch is false", ">");
}
}
Run Code Online (Sandbox Code Playgroud) 问题
激活和停用(沉浸式)全屏模式会导致状态栏和导航栏“淡入”和淡出。动画似乎在不同设备上有所不同,我想完全禁用动画。我的最低目标 SDK 是 19;但是,我也会对需要更高 API 级别的解决方案感到满意。请参阅下文了解更多详情。
运行演示
我实现了一个(最小的)演示,以便人们可以轻松测试。一切都可以在 GitHub 上找到:
为了澄清起见,我使用setSystemUiVisibility(FLAGS)
激活/停用全屏模式。此外,我使用以下标志:
激活全屏模式:
int visibility = View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN
| View.SYSTEM_UI_FLAG_HIDE_NAVIGATION
| View.SYSTEM_UI_FLAG_FULLSCREEN
| View.SYSTEM_UI_FLAG_IMMERSIVE_STICKY;
mainView.setSystemUiVisibility(visibility);
Run Code Online (Sandbox Code Playgroud)
停用全屏模式:
int visibility = View.SYSTEM_UI_FLAG_VISIBLE;
mainView.setSystemUiVisibility(visibility);
Run Code Online (Sandbox Code Playgroud)
我尝试过的
我已经尝试了很多不同的事情并做了很多研究。下面,我想总结一下我已经尝试过的主要方法。
setSystemUiVisibility
很多人建议使用getWindow().setFlags
更改标志,而不是使用(这似乎是推荐的)。然而,以不同的方式设置标志似乎没有效果。我还认为这已经过时了。有些人只是推荐不同的标志(通常只是为了隐藏栏) - 但动画保持不变。
View.setSystemUiVisibility(View.STATUS_BAR_HIDDEN);
overridePendingTransition(0, 0)
但在这种情况下这似乎并不那么有效。动画看起来是什么样子
只是为了澄清我的意思。下面是显示状态/导航栏动画的 gif 动画(抱歉,我没有嵌入图像的权限)
Android 8.0 / 华为 / 没有淡出动画(两个条都根据需要消失,但动画有淡出)。状态栏和导航栏都会“闪现”。
Android …
我已经完成了隐藏状态栏的工作,但遗憾的是,一旦隐藏状态栏,我就没有找到显示它的方法.我做了很多解决方法,但仍然没有成功,无论是在这里还是在这里.
活动
WindowManager manager = ((WindowManager) getApplicationContext()
.getSystemService(Context.WINDOW_SERVICE));
WindowManager.LayoutParams localLayoutParams = new WindowManager.LayoutParams();
localLayoutParams.type = WindowManager.LayoutParams.TYPE_SYSTEM_ERROR;
localLayoutParams.gravity = Gravity.TOP;
localLayoutParams.flags = WindowManager.LayoutParams.FLAG_NOT_FOCUSABLE|
// this is to enable the notification to receive touch events
WindowManager.LayoutParams.FLAG_NOT_TOUCH_MODAL |
// Draws over status bar
WindowManager.LayoutParams.FLAG_LAYOUT_IN_SCREEN;
localLayoutParams.width = WindowManager.LayoutParams.MATCH_PARENT;
localLayoutParams.height = (int) (50 * getResources()
.getDisplayMetrics().scaledDensity);
localLayoutParams.format = PixelFormat.TRANSPARENT;
customViewGroup view = new customViewGroup(this);
manager.addView(view, localLayoutParams);
Run Code Online (Sandbox Code Playgroud)
customViewGroup类
class customViewGroup extends ViewGroup {
public customViewGroup(Context context) {
super(context);
}
@Override
protected void …
Run Code Online (Sandbox Code Playgroud)