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度

更多相关文章

  1. 一款常用的 Squid 日志分析工具
  2. GitHub 标星 8K+!一款开源替代 ls 的工具你值得拥有!
  3. RHEL 6 下 DHCP+TFTP+FTP+PXE+Kickstart 实现无人值守安装
  4. Linux 环境下实战 Rsync 备份工具及配置 rsync+inotify 实时同步
  5. android adb 向模拟器上传文件
  6. Android代码调试报错
  7. Android(安卓)Studio ——在不root手机的情况下读取Data目录下的
  8. Android之intent传值的三种方法
  9. Android(安卓)4.0 的镜像文件

随机推荐

  1. 谈Android等开放平台的应用软件生态
  2. 来,接招!!! (八个Android项目源码)
  3. Android(安卓)HAL是如何被调用的
  4. Android截图代码实现(DDMS使用部分)
  5. Android图形图画学习(1)
  6. 学习android的好博客
  7. Android新建项目后src下没有自动生成文件
  8. 跟Google学习Android开发-起始篇-保存数
  9. 【Android游戏开发二十二】(图文详解)游戏
  10. 《今日求职》之拉勾网Android客户端产品