如題所問,我最近遇到一個bug,就是設置了搖感,然后有用戶反饋說設置了手機下拉的系統(tǒng)設置-屏幕旋轉(zhuǎn)-關閉。然后屏幕還是會旋轉(zhuǎn)的問題。
首先,我們先從如何設置橫豎屏了解下好了
設置橫屏和豎屏的方法:
方法一:在AndroidManifest.xml中配置
如果不想讓軟件在橫豎屏之間切換,最簡單的辦法就是在項目的AndroidManifest.xml中找到你所指定的activity中加上android:screenOrientation屬性,他有以下幾個參數(shù):
"unspecified":默認值 由系統(tǒng)來判斷顯示方向.判定的策略是和設備相關的,所以不同的設備會有不同的顯示方向.
"landscape":橫屏顯示(寬比高要長)
"portrait":豎屏顯示(高比寬要長)
"user":用戶當前首選的方向
"behind":和該Activity下面的那個Activity的方向一致(在Activity堆棧中的)
"sensor":有物理的感應器來決定。如果用戶旋轉(zhuǎn)設備這屏幕會橫豎屏切換。
"nosensor":忽略物理感應器,這樣就不會隨著用戶旋轉(zhuǎn)設備而更改了("unspecified"設置除外)。
方法二:在java代碼中設置
設置橫屏代碼:setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE);//橫屏
設置豎屏代碼:setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT);//豎屏?
因為橫屏有兩個方向的橫法,而這個設置橫屏的語句,如果不是默認的橫屏方向,會把已經(jīng)橫屏的屏幕旋轉(zhuǎn)180°。
所以可以先判斷是否已經(jīng)為橫屏了,如果不是再旋轉(zhuǎn),不會讓用戶覺得轉(zhuǎn)的莫名其妙啦!代碼如下:
if(this.getResources().getConfiguration().orientation==Configuration.ORIENTATION_PORTRAIT){
? ?setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE);
}
是吧,設置的無非就這兩種方法。但是搜索的方法千篇一律都是差不多的。然后我設置的是"sensor"。然后也不懂問題出在了哪里,沒辦法只能繼續(xù)去找資料看看。或許有更多的可能性沒考慮到,結果在一篇文章中找到了。
原來就是方向傳感器決定的,它沒辦法隨系統(tǒng)設置的旋轉(zhuǎn)。優(yōu)先級比較高吧。吐了呀!然后我就直接把清單文件的?android:screenOrientation 屬性刪了。用默認的屬性或者改成?android:screenOrientation="unspecified" 。問題就解決了。
當然了還有標題出現(xiàn)的這個問題,就是設置豎屏仍然跟隨屏幕旋轉(zhuǎn),可能需要你細心的找找你設置的方法一或者方法二哪一步設置錯了。或者代碼設置錯了。畢竟慢工出細活,要細心才不容易出錯。
嗯嗯,還有就是遇到了個問題:如何判斷是否開啟自動旋轉(zhuǎn)。下面就來分享一下方法:系統(tǒng)是否允許自動旋轉(zhuǎn)屏幕的方法
/**
* 系統(tǒng)是否允許自動旋轉(zhuǎn)屏幕
*/
public static boolean isAutoRotateOn(Context context) {
//獲取系統(tǒng)是否允許自動旋轉(zhuǎn)屏幕
return (android.provider.Settings.System.getInt(context.getContentResolver(), Settings.System.ACCELEROMETER_ROTATION, 0) == 1);
}
之前有查閱的如下:
Activity手動設置橫豎屏展示之后繼續(xù)保持橫豎屏自動切換 - 簡書
安卓 屏幕旋轉(zhuǎn) - 自由資訊文章來源:http://www.zghlxwxcb.cn/news/detail-648642.html
android設置橫屏和豎屏的方法-騰訊云開發(fā)者社區(qū)-騰訊云文章來源地址http://www.zghlxwxcb.cn/news/detail-648642.html
到了這里,關于android設置豎屏仍然跟隨屏幕旋轉(zhuǎn)怎么辦的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關文章,希望大家以后多多支持TOY模板網(wǎng)!