VideoView屏幕适配

方法setLayoutParams全屏拉伸VideoView由一个RelativeLayout包裹1234567RelativeLayout.LayoutParams layoutParams=new RelativeLayout.LayoutParams(RelativeLayout.LayoutParams.FILL_PARENT, RelativeLayout.LayoutParams.FILL_PARENT);layoutParams.addRule(RelativeLayout.ALIGN_PARENT_BOTTOM);layoutParams.addRule(RelativeLayout.ALIGN_PARENT_TOP);layoutParams.addRule(RelativeLayout.ALIGN_PARENT_LEFT);layoutParams.addRule(RelativeLayout.ALIGN_PARENT_RIGHT);mVideoView.setLayoutParams(layoutParams); 智能全屏什么是智能全屏?     继续阅读
MXlwq's avatar
MXlwq 9月 13, 2016
 | 

关于AndroidOrientation的一些误解

误解ActivityInfo.SCREEN_ORIENTATION_SENSOR_LANDSCAPE自己的理解:默认是Landscape,且能够识别重力传感器的屏幕方向,可以变成Portrait。事实:锁定为Landscape,且能够识别重力传感器的屏幕方向,左右LandScape切换。 相关屏幕方向参数:123456789101112ActivityInfo.SCREEN_ORIENTATION_UNSPECIFIED,//未指定,此为默认值。由Android系统自己选择合适的方向。ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE,//横屏ActivityInfo.SCREEN_ORIENTATION_PORTRAIT,//竖屏ActivityInfo.SCREEN_ORIENTATION_USER,//用户当前的首选方向ActivityInfo.SCREEN_ORIENTATION_BEHIND,//继承Activity堆栈中当前Activity下面的那个Activity的方向ActivityInfo.SCREEN_ORIENTATION_SENSOR,//由物理感应器决定显示方向ActivityInfo.SCREEN_ORIENTATION_NOSENSOR,//忽略物理感应器——即显示方向与物理感应器无关ActivityInfo.SCREEN_ORIENTATION_SENSOR_LANDSCAPE,ActivityInfo.SCREEN_ORIENTATION_SENSOR_PORTRAIT,ActivityInfo.SCREEN_ORIENTATION_REVERSE_LANDSCAPE,ActivityInfo.SCREEN_ORIENTATION_REVERSE_PORTRAIT,ActivityInfo.SCREEN_ORIENTATION_FULL_SENSOR,     继续阅读
MXlwq's avatar
MXlwq 9月 08, 2016
 | 

onCreate中获取控件大小

问题现象在onCreate里面,无法直接通过View.getHeight()或者View.getWith()获得控件的长宽值的,始终为0。 原因在onCreate中,控件并没有画好,换句话说,等onCreate方法执行完了,控件才会被度量(onMeasure) 解决方案手动测量1234567int w = View.MeasureSpec.makeMeasureSpec(0, View.MeasureSpec.UNSPECIFIED);int h = View.MeasureSpec.makeMeasureSpec(0, View.MeasureSpec.UNSPECIFIED);view.measure(w, h);int height = view.getMeasuredHeight();int width = view.getMeasuredWidth(); 注册一个ViewTreeObserver的监听回调在每次监听前remove前一次的监听,避免重复监听。123456789ViewTreeObserver vto = imageView.getViewTreeObserver();vto.addOnPreDrawListener(new ViewTreeObserver.OnPreDrawListener() { public boolean onPreDraw() { vto.removeOnPreDrawListener(this); int height = imageView.getMeasuredHeight(); int width = imageView.getMeasuredWidth(); return true; }});     继续阅读
MXlwq's avatar
MXlwq 9月 07, 2016
 | 

Android两次点击返回键退出

需求之前又需求要双击点击返回键退出应用,现在总结一下实现方法:onKeyDown方法监听中做exitBy2Click()方法;exitBy2Click()方法中用Timer做定时操作,每两秒后将退出状态恢复为false,只有在两秒内再次点击(此时状态为true,则finish改Activity) 代码     继续阅读
MXlwq's avatar
MXlwq 9月 06, 2016
 | 

Mac Hexo配置

为什么要总结因为之前一直在Windows上配Hexo,也习惯了Windows,最近一个月开始用mac os,开始感觉很不习惯,后来觉得还是很爽的。然后想在mac上也接着写博客,但是按照网上的一些操作一直没成功,昨天终于成功了,其实原因不是网上的教程问题,而是公司的网络把github屏蔽了,导致clone一些数据不成功,最终导致安装失败。 正题其实这篇文章在Mac下通过HEXO在Github上搭建博客描述的已经很详细了,但是在一些地方会产生歧义,再加上一些自己需要的部分,比如说测试github连通性[网络&权限]。 前期准备安装XcodeHexo的编译依赖Xcode。这个直接从App Store上下载安装。 安装node.jsHexo是基于node.js的,所以要去官网上下载安装,最新版最好。     继续阅读
MXlwq's avatar
MXlwq 9月 06, 2016
 | 

北京两月小记

两个月从大三暑假刚开始离开学校到北京已经整整两个月了,经历了艰难的找房子,入住蛋壳,入职,认识部门成员,熟悉环境和代码规范&管理,负责项目的小模块,发布应用更新,新项目界面模块,功能深入,新的挑战,中间穿插了21天Le star项目,实则有五周时间,到昨天退了房子,入住公寓,想家,平静,看书,现在的记录。两个月时间这样过去了,学校已经开学,新生们入学报到,大二学弟学妹开始军训,自己也已经大四了,大学时光到了最后一段,学生时代也即将结束,面对社会的各种问题,自己很多方面上仍需要成长。 感想学到了很多在这的两个月,做了一些自己力所能及的事情,许多在自己开始会觉得很困难的事情,如今也慢慢接受了,开始逐渐熟悉起来,面试也不会像最初那样紧张的语无伦次。专业知识上,对Android开发的很多细节更加深入,学无止境。 感触很多不仅是专业上,其实进入社会,入职工作,还有很多事情是需要交流和合作,同事之间的关照和帮助,这点也很重要,自己的自控能力,等等,入职之后对工作的负责和专注和工作时间的协调,这些都是需要考虑的事情。 何去何从     继续阅读
MXlwq's avatar
MXlwq 9月 04, 2016
 | 

Android应用启动流程

前言|背景为什么要总结这个 前一段时间面试被年哥问到了和这个问题相关的一个问题(Android中有没有类似于Java中main方法?)当时当然没有答案,就回答不知道。 在看《Android开发艺术探索》的第一章节中从源码分析Android中Activity的生命周期。 《Android开发艺术探索》第一章里怎么讲Activity的启动过程的源码相当复杂,涉及Instrumentation、ActivityThread和ActivityManagerService(AMS)。这里不详细分析这一过程,简单理解,启动Activity的请求会由Instrumentation来处理,然后通过Binder向AMS发请求,AMS内部维护者一个ActivityStack并负责栈内的Activity的状态同步,AMS通过ActivityThread去同步Activity的状态从而完成生命周期方法的调用。 以下内容摘自老罗的Android之旅中的一篇博文 老生常谈 Activity启动在Android系统中,有两种操作会引发Activity的启动,一种用户点击应用程序图标时,Launcher会为我们启动应用程序的主Activity;应用程序的默认Activity启动起来后,它又可以在内部通过调用startActvity接口启动新的Activity,依此类推,每一个Activity都可以在内部启动新的Activity。通过这种连锁反应,按需启动Activity,从而完成应用程序的功能。Activity的启动方式有两种,一种是显式的,一种是隐式的,隐式启动可以使得Activity之间的藕合性更加松散。     继续阅读
MXlwq's avatar
MXlwq 8月 25, 2016
 | 

AndroidStudio六种依赖

Compile,Provided,APK,Test compile,Debug comp...     继续阅读
MXlwq's avatar
MXlwq 8月 20, 2016
 | 

Lombok

下载安装lombok plugin插件 build.gradle文件添加依赖12compile 'org.glassfish:javax.annotation:10.0-b28'compile 'org.projectlombok:lombok:1.16.8' model类使用@Data如图,get、set、equals、hashCode方法以及全部自动生成 使用@Getter @Setter     继续阅读
MXlwq's avatar
MXlwq 8月 20, 2016
 | 

Android多线程安全访问数据库

原地址 假设你已编写了自己的SQLiteOpenHelper1public class DatabaseHelper extends SQLiteOpenHelper { ... } 若想在独立的线程中写数据例如:12345678910111213// Thread 1 Context context = getApplicationContext(); DatabaseHelper helper = new DatabaseHelper(context); SQLiteDatabase database = helper.getWritableDatabase(); database.insert(…); database.close(); // Thread 2 Context context = getApplicationContext(); DatabaseHelper helper = new DatabaseHelper(context); SQLiteDatabase database = helper.getWritableDatabase(); database.insert(…); database.close(); 在logcat中会报如下错误1android.database.sqlite.SQLiteDatabaseLockedException: database is locked (code 5)     继续阅读
MXlwq's avatar
MXlwq 8月 12, 2016
 |