我有一个全屏幕SurfaceView(肖像)游戏和在表面上连续渲染的线程.
SurfaceView已初始化onCreate,其大小由屏幕的宽度和高度(以像素为单位)决定.
创建后,将其设置为游戏活动的内容视图(无XML定义):
Bitmap frameBuffer = Bitmap.createBitmap(screenWidth, screenHeight, Config.ARGB_8888);
MySurfaceView renderView = new MySurfaceView(this, frameBuffer);
this.setContentView(renderView);
Run Code Online (Sandbox Code Playgroud)
问题是,屏幕的高度不包括显示切口(对于具有它们的设备)并且比允许的绘图屏幕高,因为renderView位于切口区域下方并且不用于渲染.
我试图找到真实的,screen height - display cutout height以便我可以使帧缓冲区具有该高度.
你知道是否有办法获得显示切口区域的高度onCreate,就像我们能够获得导航/状态栏高度一样.以下是返回导航栏高度的代码段:
Resources resources = getResources();
int resourceId = resources.getIdentifier("navigation_bar_height", "dimen", "android");
if (resourceId > 0) {
int navigationBarHeight = resources.getDimensionPixelSize(resourceId);
}
Run Code Online (Sandbox Code Playgroud)
谢谢您的帮助!
---更新---
我会尝试更多地澄清这个问题:
1)onCreate使用屏幕宽度和高度(无XML)创建全屏肖像SurfaceView
2)API级别> 19(KitKat)启用沉浸模式
3)屏幕宽度和高度采用Display.getSize()或Display.getRealSize()取决于API级别
4)在具有顶部显示切口的设备上,视图自动放置在切口下方,底部内容被剪切掉,这就是问题所在
5)我想获得Display Cutout的高度onCreate,以便我可以创建SurfaceView高度screenHeight - displayCutoutHeight.
6)问题归结为找到显示切口的高度.
android surfaceview android-layout android-9.0-pie display-cutouts
我刚开始使用PHP PDO和MySQL存储过程,我有如何从过程调用中获取OUT参数的问题.我查看了许多类似的stackoverflow主题,但遗憾的是我无法找到解决问题的方法:|
以下是详细信息:
该过程采用1个输入参数,并有2个强制输出参数,并返回结果状态.
这就是我所说的:
$input = 5;
$mydb = new PDO("mysql:host=localhost;dbname=mydb", "user", "pass");
$proc = $mydb->prepare("CALL proc_name($input, @o_code, @o_message)");
$proc->execute();
Run Code Online (Sandbox Code Playgroud)
该过程在@o_code参数中返回INT,在@o_message参数中返回STRING.如果从CLI调用它,并且在调用之后我在CLI中编写
select @o_code, @o_message;
Run Code Online (Sandbox Code Playgroud)
一切都很好,就是我能够看到这些OUT参数中返回的值.但是我不能用PHP代码做到这一点 - 出于某种原因我总是得到FALSE结果.该程序正确地完成了它的工作,但我无法得到它的结果.
在我进行上述调用之后,我尝试了以下方法来获取值:
$output = $proc->fetch(PDO::FETCH_ASSOC); // also with PDO:FETCH_OBJ
$output = $mydb->query("select @o_code, @o_message");
$output = $mydb->query("select @o_code, @o_message")->fetch();
$output = $mydb->query("select @o_code, @o_message")->fetchColumn();
$output = $mydb->query("select @o_code, @o_message")->fetchAll();
Run Code Online (Sandbox Code Playgroud)
但是这些都不会返回任何与NULL或FALSE不同的结果.我也试过bindParam,但仍然无法使其工作.
感谢您在这个问题上的任何帮助和美好的一天!
-----编辑-----
这是我尝试使用bindParam的代码,它仍然不起作用:
$input = 5;
$proc = $mydb->prepare("CALL proc_name(?, ?, ?)");
$proc->bindParam(1, $input, PDO::PARAM_INT);
$proc->bindParam(2, $code, PDO::PARAM_INT);
$proc->bindParam(3, $message, PDO::PARAM_STR);
$proc->execute();
var_dump($code, …Run Code Online (Sandbox Code Playgroud) 我在集成新的Facebook SDK 3.0 for Android的Feed对话框时遇到问题.文档非常清楚如何做到这一点,但省略了一个非常重要的案例,只是提到它几乎从未发生过.
当用户想要发布内容时就是这种情况,但他尚未登录并且没有会话和访问令牌.
SDK提供了一种在旧的Facebook对象中设置访问令牌(和整个会话)的方法,但是在用户登录并通过"订阅源"对话框发布其订阅源后,我找不到获取会话或访问令牌的方法.
所以流程是:
facebook.dialog() 启动并显示登录对话框我的问题是,如何在步骤5中获取访问令牌(在某处确保创建)并在我的程序中使用它来创建有效的SDK 3.0 Session对象,以便用户在使用后可以使用Access Token进行有效的Session facebook对话框?
---编辑---
我只是想澄清一下,当手机上没有安装原生Facebook应用程序时 - 因此我想使用webview对话框.