小编Mar*_* G.的帖子

使用缓冲视频更改Android VideoView方向

我正在尝试复制Android市场中最新YouTube应用的功能.观看视频时,有两个独立的布局,一个是纵向提供额外的信息,一个是横向,提供视频的全屏视图.

YouTube应用程序纵向布局
YouTupe应用程序处于纵向模式

YouTube应用横向布局
横向模式的YouTube应用

(抱歉照片的随机性,但它们是我能找到的第一个实际布局照片)

这通常很容易做到 - 只需在layout-land中指定一个替代布局,一切都会很好.YouTube应用程序的功能非常好(以及我想要复制的内容)是在方向更改时,视频会继续播放,而不必从头开始重新缓冲.

我已经发现,覆盖onConfigurationChange()并设置新的LayoutParameters将允许我在不强制拒绝的情况下调整视频大小 - 但是当多次旋转屏幕时,视频会随机缩放到不同的宽度/高度.我已尝试在VideoView上进行各种invalidate()调用,尝试在父RelativeLayout容器上调用RequestLayout()并尝试尽可能多的不同内容,但我似乎无法让它正常工作.任何建议将不胜感激!

这是我的代码:

@Override
public void onConfigurationChanged(Configuration newConfig) {
    super.onConfigurationChanged(newConfig);
    if (newConfig.orientation == Configuration.ORIENTATION_LANDSCAPE) {
        questionText.setVisibility(View.GONE);
        respond.setVisibility(View.GONE);
        questionVideo.setLayoutParams(new RelativeLayout.LayoutParams(LayoutParams.FILL_PARENT, LayoutParams.FILL_PARENT));
    } else {
        questionText.setVisibility(View.VISIBLE);
        respond.setVisibility(View.VISIBLE);
        Resources r = getResources();
        int height = (int) TypedValue.applyDimension(TypedValue.COMPLEX_UNIT_DIP, 150.0f, r.getDisplayMetrics());
        questionVideo.setLayoutParams(new RelativeLayout.LayoutParams(LayoutParams.FILL_PARENT, height));
    }
}
Run Code Online (Sandbox Code Playgroud)

编辑:我在logcat中发现了一些有趣的输出,当我的视频旋转时出现这似乎是罪魁祸首 - 虽然我不知道如何解决它:

正确调整大小时的Logcat输出(占用整个窗口)

注意h = 726

12-13 15:37:35.468  1262  1270 I ActivityManager: Config changed: { scale=1.0 imsi=310/4 loc=en_US touch=3 keys=1/1/2 nav=1/1 orien=2 layout=34 uiMode=17 seq=210}
12-13 15:37:35.561  1262  1268 I …
Run Code Online (Sandbox Code Playgroud)

android android-orientation android-videoview

50
推荐指数
5
解决办法
6万
查看次数

Android draw9patch抛出NoClassDefFoundError

我今天升级到Android SDK Tools r8,我似乎无法运行draw9patch工具.我收到以下错误:

Exception in thread "AWT-EventQueue-0" java.lang.NoClassDefFoundError: org/jdesktop/swingworker/SwingWorker
at com.android.draw9patch.Application$1.run(Application.java:48)
at java.awt.event.InvocationEvent.dispatch(InvocationEvent.java:209)
at java.awt.EventQueue.dispatchEvent(EventQueue.java:633)
at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:296)
at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:211)
at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:201)
at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:196)
at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:188)
at java.awt.EventDispatchThread.run(EventDispatchThread.java:122)
Caused by: java.lang.ClassNotFoundException: org.jdesktop.swingworker.SwingWorker
at java.net.URLClassLoader$1.run(URLClassLoader.java:202)
at java.security.AccessController.doPrivileged(Native Method)
at java.net.URLClassLoader.findClass(URLClassLoader.java:190)
at sun.misc.Launcher$ExtClassLoader.findClass(Launcher.java:229)
at java.lang.ClassLoader.loadClass(ClassLoader.java:307)
at java.lang.ClassLoader.loadClass(ClassLoader.java:248)
... 9 more
Run Code Online (Sandbox Code Playgroud)

我正在运行雪豹并且有jre(或jdk?)1.6.

任何想法如何让这个工作?谢谢!

android

38
推荐指数
1
解决办法
8941
查看次数

Rails本地资产:预编译 - 是否有自动检查更改的方法?

我在部署期间遇到了资产预编译的问题,因此我选择进行本地预编译并将生成的文件签入到源代码树中.我对这种方法没有任何问题,除非有时我忘记运行预编译任务并在不预编译资产的情况下发布!:(

我想知道是否有人通过某种方式检查是否发生了任何资产变更?理想情况下,我想在我的CI服务器上运行某种检查,如果没有提交资产更改,则无法进行构建.

我有几个想法:

  1. RAILS_ENV=production bundle exec rake assets:precompile在CI服务器上运行,看看是否有任何输出.(如果资产是最新的,该命令似乎不输出任何内容.)但是,似乎命令的输出以某种方式与其运行的环境相关联,因为在本地运行命令后,提交结果,然后在CI服务器上运行命令,命令仍然有输出!我想知道为什么这与环境有关,但我甚至找不到rake assets:precompilerails github repo中的源代码.有谁知道它的来源在哪里?

  2. 以某种方式编写一个命令,可以查看git历史记录,并确定assets/自上次预编译以来我的文件夹中是否有任何资产发生了变化.不确定这将如何工作......

这让我有点不止一次,有时候当同事进行资产变更时,我并没有抓住它 - 而且看起来这似乎是计算机应该能够为人类捕获的东西.我想一个有点合理的第三种选择是让CI服务器只运行命令,并自动将生成的文件提交到源树,但我不喜欢我的CI服务器提交提交的想法.

有什么想法吗?谢谢.

git continuous-integration ruby-on-rails sprockets

13
推荐指数
1
解决办法
2627
查看次数

如何让一个原生的Android应用程序与Web后端进行身份验证?

我正在开发一个本机Android应用程序,以便从我公司的网站上为用户检索数据.

因为数据是特定于用户的,所以我需要使用我们的Web服务器进行身份验证,但我不确定最好的方法.我一直在阅读REST/SOAP/HTML表单身份验证,但我无法在任何地方找到任何明确的"这就是它的完成方式".我知道移动应用程序总是这样做 - 只要看看facebook/skype /任何电子邮件应用程序 - 你必须先登录才能做任何事情.

我的问题是 - 我应该如何构建服务器端代码(php)以便轻松地允许我从我的Android设备验证用户?

我对"网络服务"领域还不熟悉 - 这属于那个类别吗?有没有你们建议看的教程?

谢谢!

php authentication mobile android

6
推荐指数
1
解决办法
5035
查看次数