在旧版本的Android中,有必要使用:android:theme="@android:style/Theme.NoTitleBar.Fullscreen"在清单中使标题栏消失.
在较新的ADT版本中,我注意到了一个SystemUiHider类,它允许您调用它的hide()方法,不仅删除标题栏,还删除操作栏和导航栏.
我正在尝试编写一个全屏应用程序,我希望保持全屏(对于自助服务终端实施),除非按下一个小的隐藏按钮.
我尝试过采用标准的FullscreenActivity(从新的android项目向导生成),并阻止UI以多种方式重新出现:
mSystemUiHider.hide()在setOnVisibilityChangeListener(去尝试,并立即隐藏UI当它检测到的能见度的变化)AUTO_HIDE_DELAY_MILLIS = 0如果可见则尝试立即隐藏)mSystemUiHider.show();在onClick方法内的调用contentView.setOnClickListener(以防止它被显示)setSystemUiVisibilityandroid.view的文档中看到了这个例子(如果显示或者可见性被更改,再次尝试立即隐藏它)它们似乎都不起作用(当尝试其中任何一个时,Android默认为导航栏的低配置模式.
我知道他们可能不希望开发人员做我正在尝试做的事情,但我希望我可以扩展SystemUiHider(和/或SystemUiHiderBase)并覆盖show()方法,除非传递一个true标志,否则基本上不显示.我似乎无法在这些类中找到任何文档(也许是因为它们是实用程序类?).
我有一个有2个活动的应用程序:
出于某种原因,当从第一个活动转到第二个活动时,有一个"跳跃"的布局过程,它显示没有操作栏和通知栏的第二个活动的内容,片刻之后它会同时显示它们.
这导致下面的内容也移动,这是非常明显的.
正如我所见,一个可能的解决方案是隐藏操作栏并稍后显示(500毫秒后),但这似乎是一个糟糕的解决方案(使其变慢并且无缘无故地隐藏),而且我需要得到actionBar项目位置用于其他目的(用于显示教程).
是否有可能避免"跳跃"?一个不涉及这种奇怪的解决方法?
android android-notification-bar actionbarsherlock android-fullscreen
任何人都知道这是一个Bug还是应该这样做.在使用KitKat的沉浸式模式时单击"溢出"图标时,它会禁用沉浸式模式.遇到其他人?
谷歌的完整代码 - 在这里
public void toggleHideyBar() {
// The UI options currently enabled are represented by a bitfield.
// getSystemUiVisibility() gives us that bitfield.
int uiOptions = getActivity().getWindow().getDecorView().getSystemUiVisibility();
int newUiOptions = uiOptions;
boolean isImmersiveModeEnabled =
((uiOptions | View.SYSTEM_UI_FLAG_IMMERSIVE_STICKY) == uiOptions);
if (isImmersiveModeEnabled) {
Log.i(TAG, "Turning immersive mode mode off. ");
} else {
Log.i(TAG, "Turning immersive mode mode on.");
}
// Navigation bar hiding: Backwards compatible to ICS.
if (Build.VERSION.SDK_INT >= 14) {
newUiOptions ^= View.SYSTEM_UI_FLAG_HIDE_NAVIGATION;
}
// Status …Run Code Online (Sandbox Code Playgroud) 为了制作全屏应用程序,我对新的"空白活动"项目的清单进行了以下更改:
android:theme="@android:style/Theme.NoTitleBar.Fullscreen"
Run Code Online (Sandbox Code Playgroud)
在任何设备上运行时,应用程序崩溃.我所做的更改已经被StackOverflow中的许多帖子推荐,我无法弄清楚我做错了什么.
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.example.app"
android:versionCode="1"
android:versionName="1.0" >
<uses-sdk
android:minSdkVersion="8"
android:targetSdkVersion="19" />
<application
android:allowBackup="true"
android:icon="@drawable/ic_launcher"
android:label="@string/app_name"
android:theme="@android:style/Theme.NoTitleBar.Fullscreen">
<activity
android:name="com.example.app.MainActivity"
android:label="@string/app_name" >
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
</application>
</manifest>
Run Code Online (Sandbox Code Playgroud) 我需要在该输入下创建包含文本输入(EditText)和一些项目列表(TextView-s)的活动.状态栏不可见,只有导航栏可见.用户单击EditText后,需要显示软键盘,但系统UI无法更改(状态栏不可见,导航栏可见).用户必须仍然能够滚动到ListView的底部(以便能够看到ListView中的最后一项),而软键盘仍然可见.
问题是我无法实现此行为 - 仅当我使用标志WindowManager.LayoutParams.FLAG_FULLSCREEN时,状态栏才会保持隐藏状态.但在这种情况下,活动内容不会调整大小,键盘将覆盖ListView底部的少量TextView-s.我在这里发现了许多类似的问题,但没有一个描述我的情况(隐形状态栏+可见软键盘+可见活动的所有布局内容).
似乎键盘显示的时候,android会改变UI的一些标志,所以我试着在之后重新设置它们,但没有成功 - 请参阅方法"hideStatusBar()"的用法.
这是我的代码:
布局:
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical">
<EditText
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="EditText"/>
<ListView
android:id="@+id/test_list_view"
android:layout_width="match_parent"
android:layout_height="wrap_content">
</ListView>
</LinearLayout>
Run Code Online (Sandbox Code Playgroud)
活动:
public class TestActivity extends Activity {
private ListView listView;
private ArrayAdapter<View> adapter;
private List<View> views = new ArrayList<>();
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.test_content);
adapter = new ArrayAdapter<View>(this, 0, views) {
@Override
public View getView(int position, View convertView, ViewGroup parent) {
return views.get(position);
}
};
listView = (ListView) findViewById(R.id.test_list_view);
listView.setAdapter(adapter); …Run Code Online (Sandbox Code Playgroud) android android-softkeyboard android-fullscreen android-statusbar
使用Android从非全屏到全屏工作正常.然而,在从我的全屏活动(全屏幕视频播放器)返回时,活动在弹出向下滑动的状态栏动画下来.似乎恢复活动是从全屏模式激活的,但状态栏不在那里,实际的活动被绘制,好像它已经丢失.
我试过搞清楚我的清单文件指定主题/样式.我已经尝试在设置内容视图和活动生命周期中的其他各个位置之前以编程方式在onCreate()中执行此操作:
getWindow().addFlags(WindowManager.LayoutParams.FLAG_FORCE_NOT_FULLSCREEN);
getWindow().clearFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN);
Run Code Online (Sandbox Code Playgroud)
似乎没有办法让状态栏保持动画状态下来和/或从第一次绘制的内容视图中没有状态栏,然后在重新显示时调低.
有没有人对此有任何想法?我不确定是否有任何方法可以改变这种情况,这只是Android的一种行为.
提前致谢.
我是android编程的新手!我想要像Hill Climb Racing这样的全屏图像(如下所示)

我尝试使用
requestWindowFeature(Window.FEATURE_NO_TITLE);
getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN,WindowManager.LayoutParams.FLAG_FULLSCREEN);
Run Code Online (Sandbox Code Playgroud)
但它只是消失动作栏,我想消失动作栏和Android默认键栏(主页按钮,后面和另一个)
我想为全屏创建一个popupwindow
我使用了以下内容:
LayoutInflater inflater = (LayoutInflater) MainActivity.this.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
layoutt = inflater.inflate(R.layout.loginto,(ViewGroup) findViewById(R.id.window1));
pwindow = new PopupWindow(layoutt,LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT,true);
Run Code Online (Sandbox Code Playgroud)
这涵盖了操作栏,但不是全屏..
Api 11+也支持LayuotParams.WRAP_CONTENT.我需要解决方案从api级别8开始工作.
好的,所以我试图复制开源的Roman Nurik 的Muzei动态壁纸应用程序的外观和感觉.
(在这里查看他的GitHub存储库 - https://github.com/romannurik/muzei/)
当App启动时,会有一个微妙的svg路径跟踪动画以及在后台进行的Ken Burns效果.
您可以注意到活动渗透到状态栏和导航栏中.
我已经能够实现背景动画但是无法弄清楚如何使活动全屏显示如下面的第二个GIF所示
我需要帮助将此活动全屏/放入状态栏和导航栏.
这就是我能够实现的目标
这就是我想要实现的
这是我的代码
MainActivity.Java
package devexchanges.info.kenburnview;
import android.os.Bundle;
import android.support.v7.app.AppCompatActivity;
import android.view.Menu;
import android.view.MenuInflater;
import android.view.MenuItem;
import android.view.Window;
import android.view.WindowManager;
import android.view.animation.AccelerateDecelerateInterpolator;
import android.widget.Toast;
import com.flaviofaria.kenburnsview.KenBurnsView;
import com.flaviofaria.kenburnsview.RandomTransitionGenerator;
import com.flaviofaria.kenburnsview.Transition;
public class MainActivity extends AppCompatActivity {
private KenBurnsView kenBurnsView;
private boolean isPlay = true;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
kenBurnsView = (KenBurnsView) findViewById(R.id.image);
AccelerateDecelerateInterpolator ACCELERATE_DECELERATE = new AccelerateDecelerateInterpolator();
RandomTransitionGenerator generator = new …Run Code Online (Sandbox Code Playgroud) 所以,我知道这已被问过几次了,但是我无法让它工作(而且每个Android版本的答案似乎都有所改变).编辑:我正在测试Marshmallow,但是让它在Android 4.1+上工作会很不错.
我想要的只是显示一个全屏视频,当用户点击屏幕时,显示导航栏和其他媒体控件/计时器.就像像VLC和Youtube这样的应用程序已经在做了.
我从Android Studio中的Fullscreen Activity示例开始,所以我的标志是:
全屏时:
private final Runnable mHidePart2Runnable = new Runnable() {
@SuppressLint("InlinedApi")
@Override
public void run() {
// Delayed removal of status and navigation bar
// 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.
rootView.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);
} …Run Code Online (Sandbox Code Playgroud)