一周一demo
文章平均质量分 80
飞鸟青崖
这个作者很懒,什么都没留下…
展开
-
涂鸦组件
功能 可以在组件上面进行写字、绘画等,并且开始画的并不会消失。来源 apidemo->Graphics->FingerPaint原理 利用双缓存机制完成:用一个bitmap存储先前绘制的图形,等再次要绘制时就将该bitmap先绘制到canvas上,然后再绘制新的图形。 为了使图形在拐点处更显圆滑,可以使用贝塞尔曲线。原创 2015-02-03 17:58:40 · 570 阅读 · 0 评论 -
圆背景组件以及数字红点
效果 如图: 这种形状实现起来无难度,但恶心。用drawable画一个圆做为背景,然后调整圆的宽高,文字的大小,使其刚好合适即可。但文字大小、背景的颜色只要一换,就得重新写drawable。因此可以重写textview在onDraw()方法中先绘制一下圆形即可。代码 public static final int STYLE_FILL = 2;原创 2016-09-08 13:41:39 · 411 阅读 · 0 评论 -
阴阳字进度条
描述 进度条上有文字提示,已达到的部分显示一种颜色,未达到的部分显示另一种颜色。如果一个字处于交界处,那么该字左边显示一种颜色,右边显示一种颜色(阴阳字)。具体效果如下:思路 绘制两个bitmap,截取两个bitmap中对应的部分,然后再绘制在onDraw()的canvas中。如上图:绘制一个蓝底白字的bitmap,再绘制一个白底蓝字的bit原创 2015-03-30 20:15:16 · 567 阅读 · 0 评论 -
Behavior的demo——粗仿天猫详情页效果
效果 整个内容区域分为上下两部分,当将上部分内容拉到底部时,再拉动会将下面一部分内容拉出来,并且在松手时根据拉动的距离判断是回弹还是拉出来。在下部分时同样,拉动到顶部后继续下拉会将上部分拉出来。思路思路一 可以将上部分写成带有上拉功能的控件,根据拉动的距离将下部分在垂直方向上进行移动,从而达到模拟上拉的效果。 同样,将下部分写成具有下原创 2016-02-01 20:40:04 · 1843 阅读 · 0 评论 -
五角形图片
原理 类似于圆形图片,都是将图片事在指定的模子中。 首先计算出五角形外围五个点的坐标,通过直线连接,这样便可将五角形的区域给定住。再通过设置了BitmapShader的Paint将该路径画出即可。微信中发图片时图片会显示出一个尖角,也可以通过该种思路完成。代码public class DemoView extends View { privat原创 2015-11-19 14:05:42 · 1929 阅读 · 0 评论 -
ScrollView上拉
说明 带有上拉阻尼的ScrollView。思路 ScrollView下只能有一个子View,因此只需要将ScrollView下嵌套一个LinearLayout,将ScrollView原本的子View移植到线性布局中,并在线性布局中添加一个空白的view。在上拉的过程中,根据移动的位置,修改最后一个view的高度,这样就相对于当原内容给拉上去了。原创 2015-09-09 17:33:44 · 696 阅读 · 0 评论 -
圆形展开
效果 在加载数据时,界面上需要一个进度条提示用户等待。当数据加载完成后,需要隐藏进度条。在隐藏时,可以使用一些效果,比如一个空心圆从中间开始,一点点的扩大,显露出下面的内容。如:原理 在展示时,其实是画一个空心圆,内圆的半径不断地增大,这样就类似于一个扩散效果。 在画空心圆时,需要不断地调整笔画的宽度,这样就能保证外面一层始终是被遮原创 2015-07-04 14:00:44 · 929 阅读 · 0 评论 -
插件式开发
效果 在本应用中打开某个未安装的apk文件中的某个界面。一个apk中,最多只能有65535个方法,因此在大型项目中,将一些次要功能做成插件形式的,是很有必要的。 做成插件有两种方式:一种是将插件通过静默安装的方式装到手机中,然后在本应用中启动插件中的某个activity,但静默安装需要root权限;另一种就是通过类加载器,加载dex文件中的某个fragment,原创 2015-07-05 19:59:23 · 701 阅读 · 0 评论 -
随手指拖动而变色的ScrollView
参考 关于view的概述效果描述 在一个可以上下滚动的scrollview,当某一个新View出现时,随着它出现高度的增加而不断改变背影色。如下:最下面一个view会随着手指的移动由红色逐渐变成蓝色。原理 在ScrollView滑动的过程中,会不断地调用onScrollChanged(),从而可以原创 2015-06-27 21:26:27 · 619 阅读 · 0 评论 -
边界相交的布局
概念 有时候会发现某些组件中各个子view的范围会有交叉,这种情况下没办法通过线性、相对等布局实现。因为view本身所占的区域必须是矩形区域。具体如下:方法 可以使用FrameLayout进行叠加。 如果图形都一样的话,比如上图。可以使用canvas配合matrix进行旋转,然后绘制。示例如下:示例public class原创 2015-03-06 17:27:34 · 787 阅读 · 0 评论 -
流式布局
概念 根据要添加的子view的宽判断是否要换行。常用来显示热门标签等。参考 http://www.imooc.com/video/5145(慕课网视频)思路 需要自定义LayoutParams,在使用时可以定义标签的margin,故可使用系统的MarginLayoutParams。通过比较当前行已经有宽度与新添加的view的宽度的和原创 2015-03-03 17:31:03 · 467 阅读 · 0 评论 -
动画层
概念 在Tween动画中,实际移动的只是组件的显示位置,因此组件响应点击事件的位置还是原来的地方,而不是经过移动后的地方。为了解决这个问题,可以使用属性动画,也可以新建一个动画层。 动画层指的是:在原视图上新加盖一层ViewGroup,并在ViewGroup上新建要进行动画的视图,然后将新建的视图进行移动。当动画结束时,移除ViewGroup上所有的视图,同时更原创 2015-03-02 13:28:08 · 822 阅读 · 0 评论 -
刮刮乐效果
功能 模仿刮刮乐。用手指在上面划动可以显示下面的内容。原理 类似于涂鸦组件,只不过绘制path时将path设置成透明的,这样就显示出底层的图片了。为了使path成透明的了,需要为Paint设置xformode。示例 private Paint mPaint; public SampleView(Context context) { su原创 2015-02-09 16:48:08 · 899 阅读 · 0 评论 -
上下扫描以及扩散扫描
效果图思路 显示图片,所以继承ImageView。 图片有两种状态:一种是正常状态,一种是有较暗状态。较暗状态是将按一定的透明度比例绘制正常的图片即可。代码public class DakaImageView extends ImageView { /** * 从上往下刷新 */ private sta原创 2016-10-08 10:57:24 · 765 阅读 · 0 评论