Android 4.1-4.2 默认窗体旋转180 度代码

    xiaoxiao2021-03-25  106

    Android 4.1-4.2 默认窗体旋转180 度代码

    1.设置属性值

    在system/build.prop文件中加入 ro.sf.hwrotation= 80

    2.设置窗体默认显示方向

    在frameworks/native/services/surfaceflinger/SurfaceFlinger.cpp文件中找到方法

    setDisplayHardware

    在switch中加入

    case 180: displayOrientation = ISurfaceComposer::eOrientation180; break;

    3.设置窗体动画旋转方向

    a > 在frameworks/base/core/java/android/view/Surface.java 加入方法

    /** * @hide */ public static int getDefaultRotation(){ return android.os.SystemProperties.getInt("ro.sf.hwrotation", 0);//180 } /** * @hide */ public static int getDefaultRotationIndex(){ int rotation = getDefaultRotation(); switch(rotation){ case 0: return ROTATION_0; case 90: return ROTATION_90; case 180: return ROTATION_180; case 270: return ROTATION_270; } return ROTATION_0; }

    b > 在  frameworks/base/services/java/com/android/server/vm/ScreenRotationAnimation.java 文件中找到(android4.1) 方法setRotation  或(android4.2)方法setRotationInTransaction

    修改 deltaRotation(rotation,Surface.ROTATION_0);  为deltaRotation(rotation,Surface. getDefaultRotationIndex());

    3 .修改最近程序视图方向

    在frameworks/base/packages/systemui/src/com/android/systemui/RecentsPanelView.java 文件中修改如下

    private int mThumbnailHeight;//add

    在方法中添加

    public void updateVoluesFromResources(){ mThumbnailHeight = Math.round(res.getDimension(R.dimen.status_bar_recents_thumbnail_height));//add }

    在方法中添加

    private void updateThumbnail(…) { else { Matrix scaleMatrix = new Matrix(); float scale = mThumbnailWidth / (float) thumbnail.getWidth(); scaleMatrix.postScale(scale, scale);//setScale h.thumbnailViewImage.setScaleType(ScaleType.MATRIX); h.thumbnailViewImage.setImageMatrix(scaleMatrix); //add if(Surface.getDefaultRotation() > 0){ Matrix rotateMatrix = new Matrix(); rotateMatrix.setRotate(Surface.getDefaultRotation(),mThumbnailWidth/2,mThumbnailHeight/2); h.thumbnailViewImage.setImageMatrix(rotateMatrix); } //add end }

    4.修改截屏图片方向

    在frameworks/base/pacikages/systemui/src/com/android/systemui/GlobalScreenshot.java 文件中找到takeScreenshot方法

    修改 float degrees = getDegreesForRotation(mDisplay.getRotation());

    为  “`  int rotation = mDisplay.getRotation();  if(Surface.getDefaultRotation() > 0){  rotation = (rotation + Surface.getDefaultRotationIndex())%4;  }  float degrees = getDegreesForRotation(rotation);

    OK 这样就完成屏幕旋转180度

    转载请注明原文地址: https://ju.6miu.com/read-9167.html

    最新回复(0)