Android基础之隐藏标题栏/设置为全屏/横竖屏切换

目录
  • 隐藏标题栏
  • 设置为全屏
  • 横竖屏切换
    • 屏幕旋转方式
    • 动态设置屏幕方向
    • 设置横竖屏切换
  • 总结

隐藏标题栏

基于xml

<application
    android:theme="@style/Theme.AppCompat.Light.NoActionBar">

动态隐藏

//继承自Activity时使用
requestWindowFeature(Window.FEATURE_NO_TITLE);

//继承自AppCompatActivity时使用
getSupportActionBar().hide();

设置为全屏

xml

android:theme="@android:style/Theme.NoTitleBar.Fullscreen"
或者
android:theme="@android:style/Theme.Black.NoTitleBar.Fullscreen"

动态设置

requestWindowFeature(Window.FEATURE_NO_TITLE);

getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN,
                WindowManager.LayoutParams.FLAG_FULLSCREEN);

横竖屏切换

屏幕旋转方式

AndroidManifest.xml

android:screenOrientation=""

当参数为sensor时,无论是否关闭“屏幕旋转”设置,App内的特定Activity都会根据重力传感器改变横竖屏。

动态设置

setRequestedOrientation(@ActivityInfo.ScreenOrientationint requestedOrientation);

动态设置屏幕方向

/**
* The preferred screen orientation this activity would like to run in.
* From the {@link android.R.attr#screenOrientation} attribute, one of
* {@link #SCREEN_ORIENTATION_UNSPECIFIED},
* {@link #SCREEN_ORIENTATION_LANDSCAPE},
* {@link #SCREEN_ORIENTATION_PORTRAIT},
* {@link #SCREEN_ORIENTATION_USER},
* {@link #SCREEN_ORIENTATION_BEHIND},
* {@link #SCREEN_ORIENTATION_SENSOR},
* {@link #SCREEN_ORIENTATION_NOSENSOR},
* {@link #SCREEN_ORIENTATION_SENSOR_LANDSCAPE},
* {@link #SCREEN_ORIENTATION_SENSOR_PORTRAIT},
* {@link #SCREEN_ORIENTATION_REVERSE_LANDSCAPE},
* {@link #SCREEN_ORIENTATION_REVERSE_PORTRAIT},
* {@link #SCREEN_ORIENTATION_FULL_SENSOR},
* {@link #SCREEN_ORIENTATION_USER_LANDSCAPE},
* {@link #SCREEN_ORIENTATION_USER_PORTRAIT},
* {@link #SCREEN_ORIENTATION_FULL_USER},
* {@link #SCREEN_ORIENTATION_LOCKED},
*/

设置横竖屏切换

不想Activity被销毁重建需要静态设置

android:configChanges="orientation|keyboardHidden|screenSize"

Andorid 3.2以前的SDK可以使用如下配置

android:configChanges="orientation|keyboardHidden"

Adnroid 3.2以后的SDK必须添加一个screenSize属性,具体如下

android:configChanges="keyboardHidden|orientation|screenSize"

或者

android:configChanges="orientation|screenSize"

重写onConfigurationChanged方法

@Override
public void onConfigurationChanged(Configuration newConfig) {
  	super.onConfigurationChanged(newConfig);
  	if (this.getResources().getConfiguration().orientation == Configuration.ORIENTATION_LANDSCAPE) {
    		// land do nothing is ok
    		Toast.makeText(MainActivity.this,"现在是横屏", Toast.LENGTH_SHORT).show();
  	} else if (this.getResources().getConfiguration().orientation == Configuration.ORIENTATION_PORTRAIT) {
    		// port do nothing is ok
    		Toast.makeText(MainActivity.this,"现在是竖屏",Toast.LENGTH_SHORT).show();;
  	}
}

重写该方法,横竖屏切换不会重走生命周期,你可以在里面编写一些代码用来适配切换后的屏幕,你也可以直接在该方法中调用setContentView()来适配新的view

如若不在manifest里面配置,activity会走onSaveInstanceState,用来保存数据,而后重走生命周期,重新加载布局文件,因此这里可以编写多个资源文件用来适配不同屏幕尺寸

多屏幕适配

在页面布局横竖屏差异较大的情况下,可以通过重走生命周期,销毁前进行数据保存,屏幕适配来达到要求

创建不同的values文件夹,根据横竖屏切换监听调用

values(默认调用该布局)

values-sw405dp(通过分辨率来进行调用)

values-land(横屏时调用)

values-v19/style.xml————对应api19+手机型号在此调用。 

values-v21/style.xml————对应api21+手机型号在此调用。 

values/style.xml————对应values-v19和values-v21的style.xml中没有对应主题时默认在此调用。

总结

若是比较小的改动,可以尝试在onConfigureChange方法里面进行局部的改变,不需要重走生命周期

如果是较大改动,建议通过多资源文件来进行适配,在onSaveInstanceState将重要数据进行保存

到此这篇关于Android基础之隐藏标题栏/设置为全屏/横竖屏切换的文章就介绍到这了,更多相关Android隐藏标题栏内容请搜索我们以前的文章或继续浏览下面的相关文章希望大家以后多多支持我们!

(0)

相关推荐

  • Android 实现全屏和无标题栏的显示

    在Android实现没有标题栏的方法有两种: 在代码中添加 requestWindowFeature(Window.FEATURE_NO_TITLE): 在清单文件AndroidManifest.xml中添加 android:theme="@android:style/Theme.NoTitleBar" 具体的代码如下: 第一种: MainActivity.java package com.lingdududu.test; import android.app.Activity; im

  • Android实现无标题栏全屏的方法

    Android中实现全屏.无标题栏的两种办法,另附Android系统自带样式的解释 实现全屏无标题栏: 1.在xml文件中进行配置 AndroidManifest.xml中,找到需要全屏或设置成无标题栏的Activity,在该Activity进行如下配置即可. 实现全屏效果: android:theme="@android:style/Theme.NoTitleBar.Fullscreen"   实现无标题栏(但有系统自带的任务栏): android:theme="@andr

  • Android中3种全屏方法及3种去掉标题栏的方法

    一.去掉标题栏的方法 第一种:入门的时候经常使用的一种方法 复制代码 代码如下: requestWindowFeature(Window.FEATURE_NO_TITLE);  //去掉标题栏注意这句一定要写在setContentView()方法的前面,不然会报错的 第二种:在AndroidManifest.xml文件中定义 复制代码 代码如下: <application android:icon="@drawable/icon" android:label="@str

  • Android 全屏无标题栏的三种实现方法

    一.通过Java代码 在setContentView之前执行: requestWindowFeature(Window.FEATURE_NO_TITLE);//隐藏标题栏 getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN,WindowManager.LayoutParams.FLAG_FULLSCREEN);//隐藏状态栏 二.调用Android自带的Theme 直接在AndroidManifest.xml中需要全屏显

  • Android4.2中全屏或者取消标题栏的方法总结

    先介绍去掉标题栏的方法: 第一种:也一般入门的时候经常使用的一种方法 requestWindowFeature(Window.FEATURE_NO_TITLE);//去掉标题栏注意这句一定要写在setContentView()方法的前面,不然会报错的 第二种:在AndroidManifest.xml文件中定义 复制代码 代码如下: <application android:icon="@drawable/icon" android:label="@string/app_

  • Android基础之隐藏标题栏/设置为全屏/横竖屏切换

    目录 隐藏标题栏 设置为全屏 横竖屏切换 屏幕旋转方式 动态设置屏幕方向 设置横竖屏切换 总结 隐藏标题栏 基于xml <application android:theme="@style/Theme.AppCompat.Light.NoActionBar"> 动态隐藏 //继承自Activity时使用 requestWindowFeature(Window.FEATURE_NO_TITLE); //继承自AppCompatActivity时使用 getSupportAct

  • Android开发使用Activity嵌套多个Fragment实现横竖屏切换功能的方法

    本文实例讲述了Android开发使用Activity嵌套多个Fragment实现横竖屏切换功能的方法.分享给大家供大家参考,具体如下: 一.上图 二.需求 近期项目遇到个横竖屏切换的问题,较为复杂,在此记之. 1.Activity中竖屏嵌套3个Fragment,本文简称竖屏FP1,FP2,FP3. 2.其中竖屏FP1与FP2可以切换为横屏的FL1,FL2,即竖屏FP1切换到对应的横屏FL1,竖屏FP2对应切换到横屏FL2. 3.FP3不允许横竖屏切换. 4.竖屏FP1,FP2,FP3用ViewP

  • Android 中实现ListView滑动隐藏标题栏的代码

    布局中listview要覆盖标题栏 int mTouchSlop = ViewConfiguration.get(this).getScaledTouchSlop(); //滑动监听 showHideTitleBar(true); ListView standby_lv = (ListView) findViewById(R.id.standby_lv); standby_lv.setOnTouchListener(new View.OnTouchListener() { @Override p

  • Android编程判断横屏、竖屏及设置横竖屏的方法

    本文实例讲述了Android编程判断横屏.竖屏及设置横竖屏的方法.分享给大家供大家参考,具体如下: 还是这个手机项目,有一个需求是整个工程中只有刚进去的界面允许横屏显示,并且要将该界面的标题隐藏,当切换回竖屏显示的时候,标题变为可见,一开始我百度了一下有一个监听activity是否横屏竖屏的监听函数,如下: // 橫屏不重新加載activity,調用該方法 @Override public void onConfigurationChanged(Configuration newConfig)

  • Android中Activity常用功能设置小结(包括全屏、横竖屏等)

    本文实例讲述了Android中Activity常用功能设置小结(包括全屏.横竖屏等).分享给大家供大家参考,具体如下: Activity全屏设置 方式1:AndroidManifest.xml 复制代码 代码如下: <activity android:name="myAcitivty"  android:theme="@android:style/Theme.NoTitleBar.Fullscreen" /> 方式2:代码实现 复制代码 代码如下: re

  • Android隐藏标题栏及解决启动闪过标题的实例详解

    Android隐藏标题栏及解决启动闪过标题的实例详解 方法一: 在代码中设置 this.requestWindowFeature(Window.FEATURE_NO_TITLE);//去掉标题栏 方法二: 在AndroidManifest.xml 里面设置 <application android:icon="@drawable/icon" android:label="@string/app_name" Android:theme="@androi

  • Android五种隐藏状态栏和标题栏的方法

    Android五种隐藏状态栏和标题栏的方法 方法一: public class MainActivity extends Activity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); // 隐藏标题栏 requestWindowFeature(Window.FEATURE_NO_TITLE); // 隐藏状态栏 getWindow().se

  • Android中隐藏标题栏和状态栏的方法

    一.隐藏标题栏 复制代码 代码如下: //隐藏标题栏        this.requestWindowFeature(Window.FEATURE_NO_TITLE); 二.隐藏状态栏 复制代码 代码如下: //隐藏状态栏        this.getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN, WindowManager.LayoutParams.FLAG_FULLSCREEN); 三.去掉所有Activity界

  • Android 开发隐藏标题栏的方法总结

    android 开发隐藏标题栏的方法总结 1. 推荐!(因为现在工程都默认的为AppTheme) 在value/styles.xml里面添加自定义属性 <resources xmlns:android="http://schemas.android.com/apk/res/android"> <!-- Application theme. --> <style name="AppTheme" parent="AppBaseTh

  • Android 设置应用全屏的两种解决方法

    在开发中我们经常需要把我们的应用设置为全屏,有两种方法,一中是在代码中设置,另一种方法是在配置文件里改! 一.在代码中设置: 复制代码 代码如下: package com.android.tutor;  import android.app.Activity;  import android.os.Bundle;  import android.view.Window;  import android.view.WindowManager;  public class OpenGl_Lesson

随机推荐