小編給大家分享一下Android中如何使用重力傳感器實現(xiàn)橫豎屏放向切換功能,相信大部分人都還不怎么了解,因此分享這篇文章給大家參考一下,希望大家閱讀完這篇文章后大有收獲,下面讓我們一起去了解一下吧!

站在用戶的角度思考問題,與客戶深入溝通,找到懷寧網(wǎng)站設(shè)計與懷寧網(wǎng)站推廣的解決方案,憑借多年的經(jīng)驗,讓設(shè)計與互聯(lián)網(wǎng)技術(shù)結(jié)合,創(chuàng)造個性化、用戶體驗好的作品,建站類型包括:成都網(wǎng)站設(shè)計、做網(wǎng)站、成都外貿(mào)網(wǎng)站建設(shè)公司、企業(yè)官網(wǎng)、英文網(wǎng)站、手機(jī)端網(wǎng)站、網(wǎng)站推廣、主機(jī)域名、網(wǎng)頁空間、企業(yè)郵箱。業(yè)務(wù)覆蓋懷寧地區(qū)。
具體如下:
最近項目中用到了vr視頻播放,因為自己實現(xiàn),同時要實現(xiàn)橫豎屏自動切換屏幕,核心代碼如下:
package com.d1ev.touch.App.helper;
import android.app.Activity;
import android.content.pm.ActivityInfo;
import android.util.Log;
import android.view.OrientationEventListener;
import java.lang.ref.WeakReference;
/**
* Created by Administrator on 2016/12/3 0003.
* 監(jiān)聽重力系統(tǒng)傳感器的變化,為Vr視頻播放器而定制
*/
public class MySensorHelper {
private static final String TAG = MySensorHelper.class.getSimpleName();
private OrientationEventListener mLandOrientationListener;
private OrientationEventListener mPortOrientationListener;
private WeakReference<Activity> mActivityWeakRef;
private boolean isPortLock = false;
private boolean isLandLock=false;
public MySensorHelper(final Activity activity) {
this.mActivityWeakRef = new WeakReference(activity);
this.mLandOrientationListener = new OrientationEventListener(activity, 3) {
public void onOrientationChanged(int orientation) {
Log.d(MySensorHelper.TAG, "mLandOrientationListener");
if(orientation < 100 && orientation > 80 || orientation < 280 && orientation > 260) {
Log.e(MySensorHelper.TAG, "轉(zhuǎn)到了橫屏");
if(!MySensorHelper.this.isLandLock) {
Activity mActivity = (Activity)MySensorHelper.this.mActivityWeakRef.get();
if(mActivity != null) {
Log.e(MySensorHelper.TAG, "轉(zhuǎn)到了橫屏##################");
mActivity.setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE);
isLandLock=true;
isPortLock=false;
}
}
}
}
};
this.mPortOrientationListener = new OrientationEventListener(activity, 3) {
public void onOrientationChanged(int orientation) {
Log.w(MySensorHelper.TAG, "mPortOrientationListener");
if(orientation < 10 || orientation > 350 || orientation < 190 && orientation > 170) {
Log.e(MySensorHelper.TAG, "轉(zhuǎn)到了豎屏");
if(!MySensorHelper.this.isPortLock) {
Activity mActivity = (Activity)MySensorHelper.this.mActivityWeakRef.get();
if(mActivity != null) {
Log.e(MySensorHelper.TAG, "轉(zhuǎn)到了豎屏!!!!!!!!!!!!!!!!!!!!!!");
mActivity.setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT);
isPortLock=true;
isLandLock=false;
}
}
}
}
};
//this.disable();
}
//禁用切換屏幕的開關(guān)
public void disable() {
Log.e(TAG, "disable");
this.mPortOrientationListener.disable();
this.mLandOrientationListener.disable();
}
//開啟橫豎屏切換的開關(guān)
public void enable(){
this.mPortOrientationListener.enable();
this.mLandOrientationListener.enable();
}
//設(shè)置豎屏是否上鎖,true鎖定屏幕,fanle解鎖
public void setPortLock(boolean lockFlag) {
this.isPortLock = lockFlag;
}
//設(shè)置橫屏是否鎖定,true鎖定,false解鎖
public void setLandLock(boolean isLandLock){
this.isLandLock=isLandLock;
}
}使用時將當(dāng)前activity對象傳過來即可,但要在activity的ondestory()方法里面或者back鍵的監(jiān)聽里面禁用屏幕監(jiān)聽,否則會造成activity不能被回收而導(dǎo)致內(nèi)存泄漏
helper.disable();
以上是“Android中如何使用重力傳感器實現(xiàn)橫豎屏放向切換功能”這篇文章的所有內(nèi)容,感謝各位的閱讀!相信大家都有了一定的了解,希望分享的內(nèi)容對大家有所幫助,如果還想學(xué)習(xí)更多知識,歡迎關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道!
網(wǎng)站題目:Android中如何使用重力傳感器實現(xiàn)橫豎屏放向切換功能
文章URL:http://chinadenli.net/article12/ihpcdc.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供虛擬主機(jī)、軟件開發(fā)、建站公司、品牌網(wǎng)站制作、網(wǎng)站制作、服務(wù)器托管
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)