我试图从本质上复制Android市场上最新的YouTube应用程序的function。 观看video时,有两种独立的布局,一种是纵向显示附加信息,另一种是横向显示video。 YouTupe应用程序在肖像模式 横向模式下的YouTube应用 (抱歉的照片的随机性,但他们是我能find的实际布局的第一个图片) 这很容易做到 – 只需在layout-land中指定一个可选的布局,一切都会很好。 YouTube应用程序确实做得很好(以及我想要复制的内容)是在方向更改上,video继续播放,不必从头开始重新缓冲。 我已经知道覆盖onConfigurationChange()并设置新的LayoutParameters将允许我调整video的大小而不强制重新制止 – 但是当多次旋转屏幕时video会随机缩放到不同的宽度/高度。 我试过在VideoView上做各种各样的invalidate()调用,试着在父亲的RelativeLayout容器上调用RequestLayout(),尽可能地尝试尽可能多的东西,但是我似乎无法使它正常工作。 任何build议将不胜感激! 这是我的代码: @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)); } } 编辑:我已经发现了logcat一些有趣的输出,当我的video旋转似乎是罪魁祸首 – […]
我需要对一系列EditText进行表单inputvalidation。 我使用OnFocusChangeListeners来触发validation后,用户键入到每一个,但这不符合最后一个EditText所需的行为。 如果在input最终EditText的同时单击“完成”button,则InputMethod将断开连接,但从技术angular度而言,EditText始终不会丢失焦点(因此从不会出现validation)。 什么是最好的解决scheme? 我应该监视什么时候InputMethod从每个EditText取消绑定,而不是焦点更改? 如果是这样,怎么样?
我已经使用提供的FileBackupHelper实现了一个BackupAgentHelper来备份和恢复我拥有的本地数据库。 这是您通常与ContentProviders一起使用的数据库,位于/data/data/yourpackage/databases/ 。 有人会认为这是常见的情况。 但是文档不清楚该怎么做: http : //developer.android.com/guide/topics/data/backup.html 。 这些典型的数据库没有专门的BackupHelper 。 因此,我使用了FileBackupHelper ,将其指向“ /databases/ ”中的.db文件,在我的ContentProviders引入了任何数据库操作(如db.insert )的锁,甚至尝试在onRestore()之前创build“ /databases/ ”目录onRestore()因为安装后它不存在。 过去,我在其他应用程序中成功实施了类似的SharedPreferences解决scheme。 但是,当我在emulator-2.2中testing新的实现时,我看到从日志执行到LocalTransport的备份,以及正在执行的恢复(并onRestore() )。 然而,数据库文件本身从来没有创build。 请注意,这完全是在安装之后,在应用程序第一次启动之前,在执行还原之后。 除此之外,我的testing策略是基于http://developer.android.com/guide/topics/data/backup.html#Testing 。 另外请注意,我不是在谈论一些我自己pipe理的sqlite数据库,也不是关于备份到SD卡,自己的服务器或其他地方。 我在文档中看到了一些关于build议使用自定义的BackupAgent数据库,但似乎并不相关: 但是,如果需要,可能需要直接扩展BackupAgent:*备份数据库中的数据。 如果您在用户重新安装应用程序时想要还原SQLite数据库,则需要构build自定义的BackupAgent,以在备份操作期间读取相应的数据,然后创build表并在还原操作期间插入数据。 请澄清一下。 如果我真的需要自己做到SQL级别,那么我担心以下主题: 打开数据库和事务。 我不知道如何从我的应用程序的工作stream程之外的单一类中closures它们。 如何通知用户正在进行备份和数据库被locking。 这可能需要很长时间,所以我可能需要显示进度条。 如何做同样的恢复。 据我所知,恢复可能发生在用户已经开始使用应用程序(并input数据到数据库)。 所以你不能假定只是恢复备份的数据(删除空的或旧的数据)。 你将不得不以某种方式join它,因为任何非平凡的数据库是不可能的,由于ID的。 如何在还原完成后刷新应用程序,而不会让用户卡在某些 – 现在无法访问的点上。 我可以确定数据库已经在备份或恢复中升级了吗? 否则预期的模式可能不匹配。
我有android的5个EditTexts供用户input。 我想知道如果我可以有一个方法来检查所有5 EditTexts如果它们为空。 有没有办法做到这一点?
在Android中限制EditText文本长度的最佳方法是什么? 有没有办法通过XML来做到这一点?
我正在使用毕加索在我的android应用程序中显示图像: /** * load image.This is within a activity so this context is activity */ public void loadImage (){ Picasso picasso = Picasso.with(this); picasso.setDebugging(true); picasso.load(quiz.getImageUrl()).into(quizImage); } 我已经启用debugging,它总是显示红色和绿色,但从不显示黄色 现在,如果我下次加载相同的图像和互联网不可用的图像不加载。 问题: 它没有本地磁盘caching吗? 我如何启用磁盘caching,因为我将多次使用相同的图像。 我需要添加一些磁盘权限到Android清单文件?
有谁知道我该如何检查系统版本(例如1.0,2.2等)编程?
Google似乎最终closures了获取当前前台应用程序包的所有大门。 在Lollipop更新之后,杀死了getRunningTasks(int maxNum)并感谢这个答案 ,我使用这个代码来获取自Lollipop以来的前台应用程序包: final int PROCESS_STATE_TOP = 2; RunningAppProcessInfo currentInfo = null; Field field = null; try { field = RunningAppProcessInfo.class.getDeclaredField("processState"); } catch (Exception ignored) { } ActivityManager am = (ActivityManager) this.getSystemService(Context.ACTIVITY_SERVICE); List<RunningAppProcessInfo> appList = am.getRunningAppProcesses(); for (RunningAppProcessInfo app : appList) { if (app.importance == RunningAppProcessInfo.IMPORTANCE_FOREGROUND && app.importanceReasonCode == 0 ) { Integer state […]
在UI线程中运行代码的观点,有没有区别: MainActivity.this.runOnUiThread(new Runnable() { public void run() { Log.d("UI thread", "I am the UI thread"); } }); 要么 MainActivity.this.myView.post(new Runnable() { public void run() { Log.d("UI thread", "I am the UI thread"); } }); 和 private class BackgroundTask extends AsyncTask<String, Void, Bitmap> { protected void onPostExecute(Bitmap result) { Log.d("UI thread", "I am the UI thread"); […]
任何人都可以通过terminal发布工作解决scheme来设置ANDROID_HOME吗? 我的Android SDK的path是/Applications/ADT/sdk 。