Articles of android

最小化Android GLSurfaceView滞后

关于Stack Overflow的一些其他问题,我已经从这里阅读了Android Surfaces,SurfaceViews等内部指南: https://source.android.com/devices/graphics/architecture.html 该指南让我对Android上所有不同部分的组合方式有了更好的理解。 它介绍了eglSwapBuffers如何将渲染帧推送到队列中,该队列在准备下一帧进行显示时将由SurfaceFlinger使用。 如果队列已满,那么它将等到缓冲区在返回之前可用于下一帧。 上面的文档将其描述为“填充队列”并依赖交换缓冲区的“反压”来限制渲染到显示的vsync。 这是使用GLSurfaceView的默认连续渲染模式发生的情况。 如果渲染很简单并且在比帧周期少得多的情况下完成,那么这是由BufferQueue引起的额外延迟,因为SwapBuffers上的等待直到队列满了才会发生,因此我们’重新渲染始终位于队列的后面,因此不会立即显示在下一个vsync上,因为队列中可能存在缓冲区。 相比之下,按需渲染通常比显示更新速率发生的频率低得多,因此这些视图的BufferQueues通常为空,因此推送到这些队列的任何更新都将被SurfaceFlinger在下一个vsync上抓取。 所以问题在于:如何设置连续渲染器,但延迟最小? 目标是每个vsync开始时缓冲区队列为空,我在16ms内渲染我的内容,将其推送到队列(缓冲区计数= 1),然后SurfaceFlinger将其用于下一个vsync(缓冲区计数) = 0),重复一遍。 队列中的缓冲区数量可以在systrace中看到,因此目标是使此替换在0和1之间。 我上面提到的文档介绍了Choreographer作为在每个vsync上获得回调的方法。 但是我不相信这足以让我能够实现我追求的最小滞后行为。 我已经测试了在vsync回调上使用非常小的onDrawFrame()执行requestRender(),它确实展示了0/1缓冲区计数行为。 但是,如果SurfaceFlinger无法在一个帧周期内完成所有工作(可能是通知popup或其他),该怎么办? 在这种情况下,我希望我的渲染器很乐意为每个vsync生成1帧,但该BufferQueue的消费者端已经丢弃了一帧。 结果:我们现在在队列中交替使用1到2个缓冲区,并且我们在渲染和查看帧之间获得了一段滞后。 该文档似乎建议查看报告的vsync时间与回调运行时间之间的时间偏差。 我可以看到,如果你的回调是由于你的主线程由于布局传递或其他东西而延迟传递的话会有什么帮助。 但是我认为这不会允许检测到SurfaceFlinger跳过节拍而不能消耗帧。 应用程序是否有任何方法可以解决SurfaceFlinger丢帧的问题? 似乎无法告诉队列的长度打破了使用vsync时间进行游戏状态更新的想法,因为在实际显示渲染的帧之前,队列中存在未知数量的帧。 减少队列的最大长度并依赖背压将是实现这一目标的一种方法,但我不认为有一个API来设置GLSurfaceView BufferQueue中的最大缓冲区数量?

在微调器中更改所选项目的文本颜色

如何在微调器中更改所选项的字体颜色? 我可以更改所选项目的背景颜色,下拉项目的颜色等,但不能更改所选项目的文本颜色……我该怎么做? 我的代码是:这是我正在使用的微调器 – : 这是mybg.xml <!– –> <!– –> 使用这些我无法改变selecetd项目的文字颜色…

如何在Android中为按钮文字加下划线?

我是android编程的新手。我正在开发一个简单的应用程序。 我有一个透明的按钮,有一个图标和文字。 我想强调按钮的文字,但我无法做到这一点。 下面是我的xml代码: 并且字符串文件具有: parking areas </resources 此方法适用于textview但不适用于按钮。 – 有什么建议吗?

Android:以编程方式检测设备是否已连接硬件触摸屏

我需要编写一个脚本来检测物理触摸屏是否在启动时连接到我的Android设备。 我试图通过adb列出文件夹/dev/input的内容,并获得以下输出: root@q88:/dev/input # ls event0 event1 event2 event3 event4 mice 如果我没有弄错的话, event0识别触摸屏,但在触摸屏连接与否的情况下都可以看到。 有没有办法检测触摸屏是否连接到设备? 提前致谢。

删除Android中的操作栏标签填充

我对操作栏标签有问题,我想在标签中左侧或右侧删除填充。 我试过这种风格,但它不起作用: @drawable/tab_indicator_ab_example 0dp 0dp 你有什么主意吗?

Android:如何更改RadioButton的大小

我在应用程序中有很多RadioButtons。 RadioButtons对我来说太大了。 有没有办法让它变小?

Androidanimation减少口吃/波动/滞后

所以我一直有animation问题,特别是当两个animation一次发生时或者当一个活动加载时。 我知道这可能是一个资源问题,主线程中发生了很多事情,导致animation断断续续。 我发现了一些有趣的建议: 1.线程(ThreadPoolExecutor) 这里: 如何使我的animation更流畅Android 2. setDrawingCacheEnabled(true) 这里: Android的setDrawingCacheEnabled()如何工作? 3. ViewGroup:animationCache = true 这里 : http : //www.curious-creature.org/2010/12/02/android-graphics-animations-and-tips-tricks/ 但是,我无法find任何实例来实现这些东西。 有任何想法吗?

将youtube集成到片段中

我的活动扩展了另一个活动,包括导航抽屉,每个项目打开一个新的片段。我想将Youtube集成到其中一个片段。以前我使用YouTubePlayerView将Youtube集成到活动中,但这里需要片段。我搜索了net并发现YouTubePlayerFragment将youtube整合到片段中。 但是当我在教程中搜索时,我发现即使使用YouTubePlayerFragment,我们也会扩展YouTubeBaseActivity。这些都是示例.. http://android-coding.blogspot.in/2013/04/example-to-use-youtubeplayerfragment-of。 html http://android-er.blogspot.in/2013/06/example-to-use-youtubeplayerfragment-of.html 我无法理解如何使用YouTubePlayerFragment,以便我的课程扩展Fragment而不是我的项目中所需的YouTubeBaseActivity。正如你可以在下面看到我的课程扩展了另一个活动,包括导航抽屉,其中第五个选项打开YouTube Fragment.I想要在这个片段中播放Youtubevideo。我正在简要介绍我的课程如何 – public class LandingActivity extends BaseGActivity { . . . . public void selectDrawerItem(int position) { Bundle args = new Bundle(); switch (position) { case 0: currentFragment = new HomeFragment_(); args.putString(G.General.MEDIA_TYPE_KEY, G.General.MEDIA_TYPE_ALL); GApplication.getInstance().stopGPlayer(); break; case 1: currentFragment = new HomeFragment_(); args.putString(G.General.MEDIA_TYPE_KEY, G.General.MEDIA_TYPE_PHOTO); GApplication.getInstance().stopGPlayer(); break; // case 2: currentFragment […]

全屏DialogFragment

我正在尝试创建一个宽度为MATCH_PARENT的DialogFragment,因此对话框几乎全屏(在浮动外观的边缘留下填充)。 我在Android中看到过这个解决方案Full Screen DialogFragment,但我试图避免将宽度设置为1000dp的黑客攻击。 使用我当前的布局,无论是使用FILL_PARENT还是MATCH_PARENT,它似乎都将宽度和高度设置为WRAP_CONTENT。 我已经将此解决方案用于Dialog(而不是DialogFragment),它按预期工作: getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN, WindowManager.LayoutParams.FLAG_FULLSCREEN);

android:singleline = true不适用于edittext

我想将edittext条目限制为单行,但当我添加行android:singleline = “true” ,提示消失,输入26个字符后光标将关闭。 这是我的XML代码: