4.0后configChanges失效的解决

本文介绍如何在Android 4.0及以上版本中正确配置Activity以适应屏幕方向和键盘显示状态的变化。需要在AndroidManifest.xml文件中为Activity添加特定属性。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

在之前的版本中都是在Manifest文件中设置Activity的 Android:configChanges="orientation|keyboardHidden",但是在android4.0中无效,最后发现是需要加其他一个属性:"screenSize"

改成这样就可以了 : android:configChanges="orientation|keyboardHidden|screenSize"

<?xml version="1.0" encoding="utf-8" standalone="no"?> <manifest xmlns:android="http://schemas.android.com/apk/res/android" android:installLocation="preferExternal" compileSdkVersion="36" compileSdkVersionCodename="16" package="com.AAA.Fish" platformBuildVersionCode="36" platformBuildVersionName="16"> <supports-screens android:anyDensity="true" android:largeScreens="true" android:normalScreens="true" android:smallScreens="true" android:xlargeScreens="true"/> <application android:banner="@drawable/app_banner" android:debuggable="true" android:icon="@drawable/app_icon" android:isGame="true" android:label="@string/app_name" android:theme="@style/UnityThemeSelector"> <activity android:configChanges="locale|fontScale|keyboard|keyboardHidden|mcc|mnc|navigation|orientation|screenLayout|screenSize|smallestScreenSize|touchscreen|uiMode" android:label="@string/app_name" android:launchMode="singleTask" android:name="com.unity3d.player.UnityPlayerActivity" android:screenOrientation="fullSensor"> <intent-filter> <action android:name="android.intent.action.MAIN"/> <category android:name="android.intent.category.LAUNCHER"/> </intent-filter> <meta-data android:name="unityplayer.UnityActivity" android:value="true"/> <meta-data android:name="URL_VALUE" android:value="http://192.168.2.169"/> <meta-data android:name="CHANNEL" android:value="AgentID-0"/> <meta-data android:name="FW_VALUE" android:value="FW-30855784"/> <meta-data android:name="AppID" android:value="wx401c37330dd3e92e"/> </activity> </application> <uses-feature android:glEsVersion="0x20000"/> <uses-permission android:name="android.permission.INTERNET"/> <uses-permission android:name="android.permission.READ_PHONE_STATE"/> <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/> <uses-permission android:maxSdkVersion="18" android:name="android.permission.WRITE_EXTERNAL_STORAGE"/> <uses-feature android:name="android.hardware.touchscreen" android:required="false"/> <uses-feature android:name="android.hardware.touchscreen.multitouch" android:required="false"/> <uses-feature android:name="android.hardware.touchscreen.multitouch.distinct" android:required="false"/> </manifest> 帮我修复
最新发布
07-09
Android开发中,横竖屏切换后手势返回失效的问题可能由多种原因引起。以下是一些常见的原因及解决方法: 1. **生命周期问题**: - 横竖屏切换会导致Activity重新创建,这可能会导致手势返回的功能失效。确保在`onCreate`方法中重新初始化手势识别器。 2. **保存状态**: - 使用`onSaveInstanceState`和`onRestoreInstanceState`方法保存和恢复手势识别的状态。 3. **配置变化**: - 在`AndroidManifest.xml`文件中,为对应的Activity添加`android:configChanges`属性,避免Activity重新创建。 ```xml <activity android:name=".YourActivity" android:configChanges="orientation|screenSize"> </activity> ``` 4. **手势识别器的初始化**: - 确保在`onCreate`方法中正确初始化手势识别器。 ```java @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); initGestureDetector(); } private void initGestureDetector() { GestureDetector gestureDetector = new GestureDetector(this, new GestureDetector.SimpleOnGestureListener() { @Override public boolean onFling(MotionEvent e1, MotionEvent e2, float velocityX, float velocityY) { // 手势返回逻辑 return super.onFling(e1, e2, velocityX, velocityY); } }); // 设置触摸监听 findViewById(R.id.your_view).setOnTouchListener(new View.OnTouchListener() { @Override public boolean onTouch(View v, MotionEvent event) { return gestureDetector.onTouchEvent(event); } }); } ``` 5. **调试日志**: - 使用`Logcat`查看日志,排查是否有异常或错误信息。 通过以上方法,可以有效解决横竖屏切换后手势返回失效的问题。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值