Android自定义控件三部曲文章索引

    继续阅读
MXlwq's avatar
MXlwq 12月 20, 2016
 | 

水平ListView

想要实现水平的ListViewAndroid的ListView是纵向的 方法 HorizontalListView     继续阅读
MXlwq's avatar
MXlwq 12月 15, 2016
 | 

DialogFragment

    继续阅读
MXlwq's avatar
MXlwq 11月 11, 2016
 | 

自定义spinner

方法描述 两个layout view两个layout view分别负责显示spinner和点击后显示的item列表布局 重写adapter方法,一般是继承baseadapter重写 getView()和getdropdownview这两个方法。getview修改spinner中显示的样式(layout布局),getdropdownview决定了item中显示的样式。     继续阅读
MXlwq's avatar
MXlwq 9月 13, 2016
 | 

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
 | 

自定义View

三种方式继承View来派生自定义组件继承ViewGroup或者其子类来实现组装三个构造函数     继续阅读
MXlwq's avatar
MXlwq 8月 07, 2016
 | 

RecyclerView

20160722更新上次更新将近是两周前,这次主要是总结一下这两周在使用RV时的一些问题和技巧,更新放在了第一部分 部分内容来源转 更新最新的RecyclerView已经到了24,在Gradle中可以修改一下,确实解决了一下问题。 遇到的问题在子view放大时会被比其绘制更晚的子View遮挡解决方案封装RecyclerView,重写getChildDrawingOrder方法,修改子View的绘制顺序Show Me The Code123456789101112131415161718@Override protected int getChildDrawingOrder(int childCount, int i) { View view = getLayoutManager().getFocusedChild(); if (null != view) { int position = indexOfChild(view); if (i == childCount - 1) { return position; } if (i == position) { return childCount - 1; } } return super.getChildDrawingOrder(childCount, i); } @Override public int indexOfChild(View child) { return super.indexOfChild(child); } 其中的indexOfChild是获取当前绘制界面的子View的index 代码规范性和健壮性问题 注意传入的数据要判断是否为null     继续阅读
MXlwq's avatar
MXlwq 7月 18, 2016
 | 

requestWindowFeature方法

Android开发中经常会在setContentView(R.layout.XXX); 之前设置requestWindowFeature(XXXX)。可以实现软件全屏显示、自定义标题(使用按钮等控件)和其他的需求首先介绍一个重要方法那就是requestWindowFeature(featrueId),它的功能是启用窗体的扩展特性。参数是Window类中定义的常量。 枚举常量1.DEFAULT_FEATURES:系统默认状态,一般不需要指定 2.FEATURE_CONTEXT_MENU:启用ContextMenu,默认该项已启用,一般无需指定 3.FEATURE_CUSTOM_TITLE:自定义标题。当需要自定义标题时必须指定。如:标题是一个按钮时 4.FEATURE_INDETERMINATE_PROGRESS:不确定的进度 5.FEATURE_LEFT_ICON:标题栏左侧的图标 6.FEATURE_NO_TITLE:没有标题 7.FEATURE_OPTIONS_PANEL:启用“选项面板”功能,默认已启用。 8.FEATURE_PROGRESS:进度指示器功能 9.FEATURE_RIGHT_ICON:标题栏右侧的图标     继续阅读
MXlwq's avatar
MXlwq 6月 09, 2016
 |