android横竖屏管理

1.Android横竖屏系统默认情况

Android横竖屏界面显示默认会沿用上一个界面的横竖屏,即上个界面是横(竖)屏就是横(竖)屏。当正在运行软件时,USB接口突然连接或者突然弹出界面,有几率性的改变当前横竖屏情况,从而造成生命周期的变换及Ui适配等问题。

2.Android强制横竖屏的实现

1.在AndroidManifest.xml 的activity节点添加android:screenOrientation属性(landscape是横向,portrait是纵向)
android:screenOrientation="landscape"
2.在activity开始的几个生命周期如OnCreate中根据各自的业务需求添加强制设置横竖屏,可以在自己封装的BaseActivity基类里统一处理横竖屏问题,也可以在BaseActivity里实现一个接口供上层界面回调。如:

package com.syt.basebiz.base;

import android.app.ActionBar;
import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.Intent;
import android.content.IntentFilter;
import android.content.pm.ActivityInfo;
import android.graphics.drawable.Drawable;
import android.os.Bundle;
import android.text.TextUtils;
import android.view.KeyEvent;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.AdapterView;
import android.widget.ImageView;
import android.widget.LinearLayout;
import android.widget.ListView;
import android.widget.RelativeLayout;
import android.widget.TextView;

import com.sf.bulktransit.baseutils.DeviceUtil;
import com.syt.basebiz.R;
import com.syt.basebiz.adadpter.PopMoreInfoAdapter;
import com.syt.basebiz.constant.Constants;
import com.syt.commui.manager.ActivityManager;
import com.syt.commui.utils.ToastUtil;
import com.syt.commui.view.CommTopPopup;
import com.syt.commui.view.LoadingDialog;
import com.syt.mvp.MvpActivity;
import com.syt.mvp.MvpIPresenter;
import com.syt.mvp.MvpIView;

import java.util.regex.Pattern;

import butterknife.ButterKnife;
import butterknife.Unbinder;


public abstract class BaseActivity<V extends MvpIView, P extends MvpIPresenter<V>> extends MvpActivity<V, P> {
    protected LayoutInflater inflater;
    protected RelativeLayout titleLayout;
    protected RelativeLayout contentLayout;
    protected TextView titleTV;
    protected ImageView backIcon;
    protected TextView tvRight;
    protected ImageView ivRight;
    protected LinearLayout rightIconLayout;
    protected LinearLayout leftIconLayout;
    private LoadingDialog loadingDialog;
    protected View contentView;
    protected Context mContext;
    private Unbinder unbind;
    private ScannerReceiver scannerReceiver;
    private BarcodeBroadcastReceiver barcodeScannerReceiver;
    private CommTopPopup mPopupWindow;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        ActivityManager.getInstance().addActivity(this);
        super.onCreate(savedInstanceState);
        setScreenLandscape();
        setContentView(R.layout.base_activity_layout);
        hideActionBar();
        inflater = LayoutInflater.from(this);
        initView();
        unbind = ButterKnife.bind(this);
        mContext = this;
        onPrepareView();
        onRequestData();
    }

    /**
     * 设置为横屏
     */
    private void setScreenLandscape() {
        if (!DeviceUtil.isModelHHT5() && getRequestedOrientation() != ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE) {
            setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE);
        }
    }

3.Android关于横竖屏属性说明

1.在AndroidManifast中设置横竖屏有一下几种属性。
android:screenOrientation=["unspecified" | "user" | "behind" |
          "landscape" | "portrait" | 
          "sensor" | "nonsensor"]
screenOrientation 用来指定Activity的在设备上显示的方向,每个值代表如下含义:
"unspecified"	默认值 由系统来判断显示方向.判定的策略是和设备相关的,所以不同的设备会有不同的显示方向.
"landscape"	    横屏显示(宽比高要长)
"portrait"	    竖屏显示(高比宽要长)
"user"	        用户当前首选的方向
"behind"	    和该Activity下面的那个Activity的方向一致(在Activity堆栈中的)
"sensor"	    有物理的感应器来决定。如果用户旋转设备这屏幕会横竖屏切换。
"nosensor"	    忽略物理感应器,这样就不会随着用户旋转设备而更改了 ( "unspecified"设置除外 )。

转载请说明出处:http://blog.csdn.net/u012438830/article/details/78466485
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值