MTK android 9.0半屏显示 单手模式
公司想做一个半屏功能,就是下拉屏幕显示一半;刚开始在网上找了很久,都没有相关的经验可以借鉴;最后只能靠自己去源码里面寻找方法了;
不多说,直接上代码:
1)先上触发调用的方法
try {
SystemProperties.set(“com.bsd.zoom.mode”,“1”);
DisplayManager dm = (DisplayManager) mContext.getSystemService(Context.DISPLAY_SERVICE);
Class<?> cDisplay = Class.forName(“android.hardware.display.DisplayManager”);
Method singleHandMet = cDisplay.getMethod(“singleHandModeChange”, boolean.class, boolean.class);
singleHandMet.invoke(dm, true,true);
}catch (Exception e){
e.printStackTrace();
}
(注:SystemProperties.set(“com.bsd.zoom.mode”,“1”);是判断半屏还是全屏,下面的放射方法是调用frameworks刷新界面)
2)frameworks\base\core\java\android\hardware\display\DisplayManager.java;
添加以下方法
public void singleHandModeChange(boolean change, boolean left){
mGlobal.singleHandModeChange(change,left);
}
3)frameworks\base\core\java\android\hardware\display\DisplayManagerGlobal.java;
添加以下方法
public void singleHandModeChange(boolean change,boolean left){
try{
mDm.singleHandModeChange(change,left);
}catch(RemoteException ex){
Log.w(“SingleHandMode”,“SingleHandMode Failed to singleHandChange error:”+ex.toString());
}
}
4)frameworks\base\core\java\android\hardware\display\IDisplayManager.aidl;
添加以下方法:
void singleHandModeChange(boolean change,boolean left);
5)frameworks\base\services\core\java\com\android\server\display\DisplayManagerService.java;
在BinderService内部类下添加:
private final SurfaceControl.Transaction mDisplayTransaction = new SurfaceControl.Transaction();
@Override // Binder call
public void singleHandModeChange(boolean change, boolean left) {
// mSingleHandModeState = change;
//mSingleHandModeLeft = left;
scheduleTraversalLocked(false);
performTraversalInternal(mDisplayTransaction);
}
6)frameworks\base\services\core\java\com\android\server\wm\WindowStateAnimator.java;
import android.os.SystemProperties;
在void setSurfaceBoundariesLocked(final boolean recoveringMemory)方法下
if (!w.mSeamlesslyRotated)判断语句内添加
if(SystemProperties.get(“com.bsd.zoom.mode”).equals(“1”)){
mTmpSize.top = 540;
}
//mSurfaceController.setPositionInTransaction(xOffset, yOffset, recoveringMemory);
mSurfaceController.setPositionInTransaction(mTmpSize.left, mTmpSize.top, recoveringMemory);
7)frameworks\base\services\core\java\com\android\server\display\LogicalDisplay.java;
在configureDisplayLocked方法里添加
String zoomState = SystemProperties.get(“com.bsd.zoom.mode”);
if(!zoomState.equals("") && zoomState != null){
if(zoomState.equals(“1”)){//降一半
mTempLayerStackRect.set(0, -displayInfo.logicalHeight/2, displayInfo.logicalWidth, displayInfo.logicalHeight/2);
}else{//复原
mTempLayerStackRect.set(0, 0, displayInfo.logicalWidth, displayInfo.logicalHeight);
}
}else{
mTempLayerStackRect.set(0, 0, displayInfo.logicalWidth, displayInfo.logicalHeight);
}
还有
int displayRectTop = (physHeight - displayRectHeight) / 2;
int displayRectLeft = (physWidth - displayRectWidth) / 2;
if(!zoomState.equals("") && zoomState != null){if(zoomState.equals("1")){//降一半-触摸displayRectTop = displayRectHeight/2;displayRectLeft = 0;}}
MTK android 9.0半屏显示 单手模式相关推荐
- Android 4.0 全屏显示,在我的原道n90 ICS 4.0.3版本实验通过
getWindow().getDecorView().setSystemUiVisibility(View.SYSTEM_UI_FLAG_LOW_PROFILE); ("低调"模式 ...
- android 如何构建半屏显示的界面_如何实现android设备进入recovery界面后自动重启...
问题背景: 因项目开发及测试需要,设备升级频率比较高,升级出现失败的情况肯定是有的,原因用多方面,如:故意使用非法的升级包,升级版本不匹配等等. 出现升级失败问题后,对于手机用户来说可以选择重启手机即 ...
- android解锁界面分析,Android 7.0 锁屏解锁之向上滑动显示解锁界面分析
Android 7.0 锁屏解锁之向上滑动显示解锁界面分析 by jing.chen 锁屏的解锁操作是在锁屏界面向上滑动实现的,通过向上滑动调出解锁界面(如图案.PIN.密码解锁界面),在解锁界面输入 ...
- 模仿UC浏览半屏显示push消息过来的网页
背景 不少浏览器在显示push消息时,采用半屏显示,顶部会露出一截,同时页面支持上下滑动,下滑还可以关闭页面. 下面是UC浏览器的效果: 我实现的效果 实现方案 方案一:继承FrameLayout,覆 ...
- 华为笔记本开发android,EMUI 11曝光!华为魔改 Android 11:息屏显示、智慧分屏焕然一新...
EMUI 11曝光!华为魔改 Android 11:息屏显示.智慧分屏焕然一新 2020-08-29 10:25:30 1点赞 0收藏 0评论 8月28日消息,据国内知名数码博主透露,华为对即将发布的 ...
- android11息屏显示,EMUI 11曝光!华为魔改 Android 11:息屏显示、智慧分屏焕然一新...
8月28日消息,据国内知名数码博主透露,华为对即将发布的全新 EMUI 11 操作系统进行大量魔改,其中包括息屏显示 AOD 设计.应用智慧分屏.系统全面翻译等功能服务,都有非常大的变化,在实用性上也 ...
- Android 4.0 截屏(Screenshot)代码流程小结
Android 4.0 截屏 在Android 4.0 之前,Android手机上如果要使用截屏功能,只能通过Root手机,且使用第3方截图软件来实现截屏功能. Android4.0中,系统自带了截屏 ...
- android Q HIDL(小屏显示)
android Q HIDL(小屏显示) 手机设备上添加了一个小的lcd屏,需求是可以显示文字与图片.且可以在每个应用里面使用,过CTS,那么可供选择的实现方式也就没几种了. (a)过cts的话最好是 ...
- Android 4.0 截屏(Screenshot)
Android 4.0 截屏(Screenshot)代码流程小结 参考文档:Android 4.0 截屏(Screenshot)代码流程小结:http://blog.csdn.net/hk_256/a ...
最新文章
- 跟随我在oracle学习php(14)
- 电脑屏保海底世界_世界上最后一个深海实验室,隐藏了人类未来的秘密
- java bean 转json 串,终于找到了一篇能看懂的如何把javabean转换成json字符串的文章,嘿嘿,分享一下!...
- stm32 SPI架构
- im4java 文档_im4java学习---阅读documentation文档
- VideoLan 0.8.6b test 1
- sql如何粘贴一列不同的数值_原来Excel的复制粘贴有这么多不为人知的用法
- 高职对计算机课程要求,高职计算机课程对学生编程能力培养.doc
- 【机器学习】基于GBDT的数据回归及python实现
- rtmp之谷歌浏览器默认启用flash
- 摄像头如何被他人控制
- PHP自动化代码审计工具
- css控制广告位置,CSS固定定位实现右下角可关闭广告
- Godot Label 节点
- 直播新架构升级:全量支撑淘宝双11直播
- android 照片特效,Android使用Gallery实现照片拖动的特效
- 计算机图形学 绘制正四面体
- 全球主要高光谱遥感卫星介绍
- 2018腾讯游戏客户端岗位暑期实习生面试
- 上海消费者购房意愿增强 楼市调控满意度提高
热门文章
- 南方测绘CASS10.1.5属性面板名称对照表(ArcGIS数据文件SHP转入到CASS绘图环境)
- LeetCode 287---Find the Duplicate Number
- hadoop一些常用命令
- webStorm自动格式化
- mysql上年年末_查询年初,年末,去年年初,明年年初与年末sql语句
- 192.168.0.0/24是啥意思?
- 算法提高 质数的后代
- 时代中国三年“老去” 岑钊雄500强空梦一场
- 支付宝沙箱环境+SpringBoot+内网穿透整合开发
- Oracle存储过程中的for循环