关于Android的截头模式的工作原理似乎很有趣.如果我查看OpenGL红皮书,生成的矩阵如下所示:
http:
//www.glprogramming.com/red/images/Image23.gif Songho.ca似乎同意这一点:http:
//www.songho.ca /opengl/files/gl_projectionmatrix_eq16.png
但是,一个组件乘以Android的frustumM乘以2,而不是在其他示例矩阵中.这是它似乎正在做的事情:
除了第一行,第三列外,一切似乎都在功能上匹配.为什么要乘以2?这是android.opengl.Matrix的frustumM方法的代码行,它生成第三列的前三个元素:
final float A = 2.0f * ((right + left) * r_width);
final float B = (top + bottom) * r_height;
final float C = (far + near) * r_depth;
Run Code Online (Sandbox Code Playgroud)
使用r_width,r_height,r_depth定义为:
final float r_width = 1.0f / (right - left);
final float r_height = 1.0f / (top - bottom);
final float r_depth = 1.0f / (near - far);
Run Code Online (Sandbox Code Playgroud)
以"final float A"开头的行似乎错误地乘以2.
这是Android代码中的错误,还是我错过了什么?我知道如果平截头体是对称的,那么该术语就会取消.当运行具有不对称平截头体的代码时,生成的矩阵实际上是不同的,当相同的向量与那些不同的矩阵相乘时,所得到的向量也是不同的.
使用WindowManager.addView
和WindowManager.LayoutParams
,可以将视图添加到屏幕TYPE_SYSTEM_OVERLAY
,然后将其绘制在所有其他应用程序之上.这可以用于各种效果,例如着色屏幕或绘制始终可见的视图.但是,我还没有找到一种方法让这个叠加层绘制在软键后面绘制的背景.
随着新的选项,以在由奇巧支持该地区借鉴,我想我可以尝试FLAG_TRANSLUCENT_NAVIGATION
和FLAG_TRANSLUCENT_STATUS
,但后台仍是禁区.FLAG_LAYOUT_IN_SCREEN
和FLAG_FULLSCREEN
似乎并没有帮助.似乎影响软键背景的唯一方法是使用FLAG_DIM_BEHIND
和设置.dimAmount,但这只能用于调暗软键背景.是否有可能实际在那里绘制一些东西,它来自活动内部的方式?如果是这样,怎么办呢?
android android-layout android-windowmanager android-4.4-kitkat
在Gingerbread中,我没有使用smoothScrollToPosition()一次滚动数十个项目的问题.在我的Nexus S升级为Ice Cream Sandwich之后,我注意到无论我在smoothScrollToPosition()中放置什么,它都只会在任一方向上滚动大约几百个像素,然后停止.
这是ICS的已知问题吗?我也注意到Galaxy Nexus.我已经看了几个其他的问题并尝试了一些不同的技巧,比如关闭对notifyDataSetChanged()的调用,并将smoothScrollToPosition()作为延迟的runnable发布,但不幸的是,它不想滚动多于一个停止前一百个像素左右.:(
如何实现具有多列的布局,其中每列的行不对齐?我想的是:
----------
| | | |
| | | |
|--| | |
| |--| |
|--| |--|
| |--| |
...
Run Code Online (Sandbox Code Playgroud)
等等.像这样的网站就像Pinterest这样的网站.
我正在寻找经验丰富的Android开发者的最佳实践.使用多个ListView并以某种方式使它们保持同步是否有意义?有没有更好的办法?
谢谢!
在 Android 上发送包含多个附件的电子邮件而不在选择器中包含非电子邮件应用程序的最佳方式是什么?
发送电子邮件时,我曾经这样做:
final Intent sendEmailIntent = new Intent(Intent.ACTION_SEND);
sendEmailIntent.setType("message/rfc822");
sendEmailIntent.putExtra(Intent.EXTRA_EMAIL, new String[] { "test@test.com" });
...
Run Code Online (Sandbox Code Playgroud)
不幸的是,“message/rfc822”不再能够很好地从选择器中过滤掉不需要的应用程序,例如 Evernote、Drive 和各种其他应用程序。
我最近发现这个解决方法适用于单个附件:
sendEmailIntent = new Intent(Intent.ACTION_SENDTO);
Uri data = Uri.parse("mailto:?to=test@test.com&subject...");
sendEmailIntent.setData(data);
...
Run Code Online (Sandbox Code Playgroud)
不幸的是,这不适用于多个附件。我试过了,Gmail 崩溃了。:S