zoukankan      html  css  js  c++  java
  • ipad屏幕适配

    ipad屏幕适配
    1.android:screenOrientation="unspecified|portrait|landscape"
    
    2.adb shell getprop ro.sf.lcd_density //dpi=400
    sw-xxxx-dp中的xxxx的计算公式是  sw *160/dpi
    屏幕分辨率1920X1080
    xxxx=1080*160/400=432
    
    2、android:name=".ui.main.MainActivity"
                android:configChanges="keyboard|keyboardHidden|navigation|orientation|screenSize|smallestScreenSize|layoutDirection|screenLayout"
                android:hardwareAccelerated="true"
                android:label="@string/app_name"
                android:launchMode="singleTask"
                android:screenOrientation="unspecified"
                android:taskAffinity="com.huawei.vassistant"
                android:windowSoftInputMode="adjustUnspecified|stateAlwaysHidden">
    3、android:name=".ui.translation.TranslationActivity"
                android:configChanges="keyboardHidden|orientation|screenSize|smallestScreenSize|layoutDirection|screenLayout"
                android:hardwareAccelerated="true"
                android:label="@string/content_description_trans_activity"
                android:launchMode="singleTask"
                android:screenOrientation="unspecified"
                android:windowSoftInputMode="adjustPan">
                
    一般在AndroidManifest.xml文件中都没有使用到android:configChanges="keyboardHidden|orientation"配置,当然还是很有用的。
    就是如果配置了这个属性,当我们横竖屏切换的时候会直接调用onCreate方法中的onConfigurationChanged方法,而不会重新执行onCreate方法,那当然如果不配置这个属性的话就会重新调用onCreate方法了。http://www.cnblogs.com/carlo/p/4311010.html            
       
    5、private void startOrientationListener() {//设置屏幕旋转监听
            mOrientationEventListener = new OrientationEventListener(this) {
                @Override
                public void onOrientationChanged(int i) {
                    if (i < 0) return;
                    if (!isRotationOn()) {
                        if (isTablet()) {
                            int currentSystemLockedOrientation = getSystemLockedScreenOrientation();
                            if (currentSystemLockedOrientation % 2 == 0) {
                                setOrientationChanged(ORIENTATION_PORTRAIT);
                            } else {
                                setOrientationChanged(ORIENTATION_LANDSCAPE);
                            }
                        }
                        return;
                    }
    
                    int orientation;
                    if ((70 <= i && i <= 110) || (250 <= i && i <= 290)) {
                        orientation = ORIENTATION_LANDSCAPE;
                    } else {
                        orientation = ORIENTATION_PORTRAIT;
                    }
                    VALog.i(TAG, "angle = " + i + " currentorientation = " +mCurrentOrientation+ " noworientation = " + orientation);
                    if (mHandler.hasMessages(HANDLER_MSG_SET_REQUESTED_ORIENTATION)) {
                        mHandler.removeMessages(HANDLER_MSG_SET_REQUESTED_ORIENTATION);
                    }
                    Message msg = mHandler.obtainMessage(HANDLER_MSG_SET_REQUESTED_ORIENTATION, orientation);
                    mHandler.sendMessageDelayed(msg, 200);
                }
            };
            mOrientationEventListener.enable();
        }
        
        public boolean isRotationOn() {//判断是否旋转
            int status = 0;
            try {
                status = android.provider.Settings.System.getInt(
                        getContentResolver(),
                        android.provider.Settings.System.ACCELEROMETER_ROTATION);
            } catch (Settings.SettingNotFoundException e) {
                e.printStackTrace();
            }
    
            if (status == 0) {
                return false;
            } else {
                return true;
            }
    
        }
        
         public boolean isTablet() {//判断是不是平板
            return (getResources().getConfiguration().screenLayout
                    & Configuration.SCREENLAYOUT_SIZE_MASK)
                    >= Configuration.SCREENLAYOUT_SIZE_LARGE;
        }
        
        public int getSystemLockedScreenOrientation(){//判断锁屏方向
            int status = 0;
            try {
                status = android.provider.Settings.System.getInt(
                        getContentResolver(),
                        android.provider.Settings.System.USER_ROTATION);
            } catch (Settings.SettingNotFoundException e) {
                VALog.e(TAG, "getSystemLockedScreenOrientation" + e.getMessage());
            }
            return status;
        }
        
    6、代码设置控件Margin
    if (!isTablet()) {
                VAUtils.setMarginRightPercentOfScreen(VAssistantConfig.getAppContext(), mBtnTranslation, 0.16);
                VAUtils.setMarginRightPercentOfScreen(VAssistantConfig.getAppContext(), mBtnHelp, 0.16);
            } else {
                VAUtils.setMarginRightPercentOfScreen(VAssistantConfig.getAppContext(), mBtnTranslation, 0.05);
                VAUtils.setMarginRightPercentOfScreen(VAssistantConfig.getAppContext(), mBtnHelp, 0.05);
            }
        }
    
    7、public class VAOrientationControlSetting {//控制界面方向工具类
    
        private static int mOritentation;
    
        public static void setOritentation(int mOritentation) {
            VAOrientationControlSetting.mOritentation = mOritentation;
        }
    
        public static void setOritention(Activity mActivity) {
            if (VAUtils.isTablet()) {
                if (mOritentation == Configuration.ORIENTATION_LANDSCAPE) {
                    mActivity.setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_USER_LANDSCAPE);//设置界面为横屏mOritentation==activity.getResources().getConfiguration().orientation;
                } else {
                    mActivity.setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_USER_PORTRAIT);//设置界面为竖屏
                }
            } else {
                mActivity.setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_USER_PORTRAIT);
            }
        }
    }
  • 相关阅读:
    SlideShare
    准备SCJP考试
    Sun的过去
    shardingjdbc基础教程
    上万页大数据量的分页查询方案
    shardingjdbc教程 看这一篇就够了
    微服务化的认识
    JDK9对String底层存储的优化
    水平分表
    深入理解Java中的字段与属性的区别
  • 原文地址:https://www.cnblogs.com/sanbianxia/p/7683606.html
Copyright © 2011-2022 走看看