自定义控件
文章平均质量分 79
星空同学
少胡思乱想,多造轮子。
展开
-
android 自定义view 改变大小,重新执行OnMeasure
他妈的,一直忘了记录下:requestLayout();在view 中调用requestLayout();view会重新计算大小,也就是会重新执行onMeasure 方法。在onMeasure中调用 setMeasuredDimension(tempWidth, tempHeight); 就会重新设定view的大小 setMeasuredDimension(tempWidth, tempHeight);...原创 2020-07-28 14:29:55 · 4151 阅读 · 1 评论 -
ExpandableListView异常Couldn't read row 0, col -1 from CursorWindow
记录一个比较好玩的bug。 在使用ExpandableListView时,老是在执行完bindGroupView时,报以上错误,并且错误定位不到业务代码。而groupcursor的有数据的。 debug了一会,发现问题所在。 原因是,我的groupCursor,从数据库中query出来时,使用到了distinct,如以下语句:String sql = "select distinct piny原创 2017-10-11 16:32:40 · 586 阅读 · 0 评论 -
checkbox 扩大点击范围
感慨下。哇,Google + stackoverflow 真的是好用。 要增加点击范围,可以通过TouchDelegate去该控件的父容器去借。所以,以下方法要是想成功,必要条件是改控件的父容器,必须要够大,但是只要大到能装下你要的点击范围就行。贴代码: public void toSetBigClickArea(View view){ Rect delegateArea = ne原创 2017-10-19 16:08:48 · 3489 阅读 · 1 评论 -
三阶贝塞尔曲线公式计算坐标
1.ValueAnimator通过AnimatorSet去play ValueAnimator valueAnimator = getBesselAnimator(tempImageView, rankWidth, rankHeight); AnimatorSet animatorSet = new AnimatorSet(); animatorSet.play(va原创 2017-08-03 17:43:12 · 7131 阅读 · 0 评论 -
类似探探切换卡片,android 堆栈卡片,左滑添加右滑删除
这个功能,网上相近的功能是有demo的,但是都不是我想要的。 所以,自己简单的写了一个。功能还很不完善,仅供参考。效果如下: 这个控件,其实只用到ViewGroup的 child.layout()方法对子view进行排序跟动画。其他就是一些计算。数据设置通过adapter。实现步骤分两步: 1.onLayout()通过缩放view,达到堆栈效果。这里用到 com.nineoldandroid原创 2017-07-18 10:51:05 · 1480 阅读 · 3 评论 -
Android 渐变色计算ArgbEvaluator
ArgbEvaluator argbEvaluator = new ArgbEvaluator();int COLOR_START = (int)(argbEvaluator.evaluate(0.9f,COLOR_START, COLOR_END));evaluate(0.9f,COLOR_START, COLOR_END)),这个方法,三个参数。 第一个,一个float值,0~1.0f;代表原创 2017-07-21 14:41:07 · 3276 阅读 · 0 评论 -
Android Matrix使用总结
主要是看aige博客,Matrix部分老忘,再看了一遍,现在把重点知识点记录下,怕忘了。1.matrix.setXXX方法,是会重置matrix的。怎理解呢?//假如做了以下两个变换,会发现,只有效的是Rotate//原因是,在我们new了一个Matrix对象后,这个Matrix对象中已经就为我们//封装了一组原始数据.而我们的setXXX方法执行的操作是把原本Matrix对象中的数据重置,重新原创 2017-07-21 14:28:59 · 343 阅读 · 0 评论 -
DashPathEffect 画虚线无效
自定义控件是,给paint设置DashPathEffect,然而无效。后面发现是硬件加速的锅。记录下。 解决方法就是,在view层关闭硬件加速,直接在自定义View的构造方法中调用: setLayerType(View.LAYER_TYPE_SOFTWARE, null);即可。原创 2017-04-25 11:56:14 · 3136 阅读 · 5 评论 -
Android 圆形头像
代码很简单,可以直接复制走。import android.content.Context;import android.graphics.Bitmap;import android.graphics.BitmapShader;import android.graphics.Canvas;import android.graphics.Matrix;import android.graphi原创 2017-01-17 10:41:39 · 414 阅读 · 0 评论 -
小距离监听ListView或者ScrollView上下滑动
我们知道,listview的onScrollListener的回调监听只是返回firstVisibleItem,totalItem等,利用这些参数我们是无法做到小距离的滑动判断的,特别是滑动的距离小于一个item高度的时候。 其实解决方式很简直,我们可以继承listView并且复写onTouchEvent()方法,通过event来拿到想要的参数,继而判断上下滑动。注意,不要破坏原有的事件处理体系。原创 2016-11-23 14:18:42 · 938 阅读 · 0 评论 -
自定义TextView,实现查看更多与收起
先上效果图: 只是一个练手的小View,继承View,完全自定义。可能会有bug,不过代码比较简单,请自己填坑与扩展。自定义的属性不多, 简要说下: moreColor:就是“查看更多“的颜色 lines:最多显示行数,超过就以“查看更多“结尾 lineSpace:行距,并不准确。哈。代码就不贴的。你们可以下载源码看下,写的不好,勿喷。欢原创 2016-11-18 21:29:36 · 729 阅读 · 0 评论 -
paint画笔style为Stroke时circle的半径分析
画两个圆:“` mPaint = new Paint(Paint.ANTI_ALIAS_FLAG | Paint.DITHER_FLAG); mPaint.setStyle(Paint.Style.STROKE);@Override protected void onDraw(Canvas canvas) { super.onDraw(canvas)原创 2016-03-28 15:15:54 · 6793 阅读 · 4 评论 -
MotionEvent.getX /Y 与 getRamX/Y 区别。
getX()是表示当前被点击控件相对于自身左上角的x坐标而getRawX()是表示相对于屏幕左上角的x坐标值。getY(),getRawY()同上。原创 2016-01-07 23:03:15 · 704 阅读 · 0 评论 -
自定义控件 继承View 使用OnMeasure定义控件宽高
protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) { setMeasuredDimension(measureWH(widthMeasureSpec, 0), measureWH(heightMeasureSpec, 1)); }setMeasuredDimension(width,he原创 2015-12-21 12:30:54 · 2263 阅读 · 0 评论 -
LayoutParams 参数含义及转换dp
一般高度用LayoutParams.FILL_PARENT就可以了 LayoutParams.WRAP_CONTENTdip与像素转化 DisplayMetrics metrics = new DisplayMetrics(); getWindowManager().getDefaultDisplay().getMetrics(metrics); int scale = metrics.de转载 2016-01-16 17:28:59 · 6038 阅读 · 0 评论