您的位置:首页 > 移动开发 > Android开发

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

2015-06-22 23:56 471 查看
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度
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  android 旋转 倒立 倒置