android无法自动旋屏,Android 手动设置屏幕方向后不能自动转屏问题
如題,Android在手動(dòng)設(shè)置屏幕方向后不能使用自動(dòng)轉(zhuǎn)屏了,這是因?yàn)槭謩?dòng)設(shè)置屏幕方向
如:
setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE);
相當(dāng)于在Manifest文件中Activity節(jié)點(diǎn)下配置了:
android:screenOrientation="landscape"
這會(huì)導(dǎo)致該Activity方向鎖定,不能自動(dòng)轉(zhuǎn)屏。But,手動(dòng)轉(zhuǎn)屏是可以的,所以我們只需要加上方向改變監(jiān)聽(tīng),然后手動(dòng)轉(zhuǎn)屏,也就達(dá)到了自動(dòng)轉(zhuǎn)屏的目的:
class OrientationEventListenerImpl extends OrientationEventListener {
public OrientationEventListenerImpl(Context context) {
super(context);
}
@Override
public void onOrientationChanged(int rotation) {
Log.i("旋轉(zhuǎn)角度:","rotation = "+rotation);
//以下代碼可以根據(jù)具體需求去配置
// 設(shè)置為豎屏
if (((rotation >= 0) && (rotation <= 45)) || (rotation >= 315)) {
setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT);
}
// 設(shè)置為橫屏
if(((rotation >= 225) && (rotation <= 315))) {
setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE);
}
//設(shè)置為橫屏(逆向)
if(((rotation >= 45) && (rotation <= 135))) {
setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_REVERSE_LANDSCAPE);
}
}
}
然后再注冊(cè)該監(jiān)聽(tīng)器,比如在Activity的onCreate()方法中注冊(cè):
OrientationEventListenerImpl orientationEventListenerImpl = new OrientationEventListenerImpl(this);
orientationEventListenerImpl.enable();
這樣就可以實(shí)現(xiàn)自動(dòng)轉(zhuǎn)屏了。上面代碼只實(shí)現(xiàn)了在3個(gè)方向上轉(zhuǎn)屏,沒(méi)有寫(xiě)逆向的豎直方向(一般都不會(huì)用到這個(gè)方向吧),如有需要可以自己加上,角度請(qǐng)自己計(jì)算,其方向常量為:
ActivityInfo.SCREEN_ORIENTATION_REVERSE_PORTRAIT
通過(guò)以上的代碼,還可以再配合
@Override
public void onConfigurationChanged(Configuration newConfig) {
super.onConfigurationChanged(newConfig);
}
就可達(dá)到自由控制屏幕顯示方向的目的。
總結(jié)
以上是生活随笔為你收集整理的android无法自动旋屏,Android 手动设置屏幕方向后不能自动转屏问题的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: linux切换到字符界面stemctl,
- 下一篇: android 知识点大全,Androi