Android自定义View
文章平均质量分 57
Android自定义View:实现各种自定义view,运用多种数学几何知识,分享绘图机制与实现原理
匆忙拥挤repeat
倦鸟就此散 余花怎不乱 物是人已非 落寞
红尘难看破 美梦成真否 镜花水月尔 迷惘
展开
-
Android ProcessLifecycleOwner 观察进程生命周期
Android ProcessLifecycleOwner 依赖 App进程生命周期原创 2023-02-15 18:03:08 · 1510 阅读 · 0 评论 -
Android View 通过平移、旋转、缩放后,顶点映射
View 通过平移、旋转、缩放后,其本身的 left、top、right、bottom、width、height是没有变化的。平移:setTranslationX(), setTranslationY() ;旋转:setRotationX(), setRotationY() ;缩放:setScaleX(), setScaleY() 。在三种操作后,获取新的 ltrb、w、h 就需要重新计算了// view 平移、旋转、缩放 变换后,计算新的 ltrb; ltrb ==> dst[0,1原创 2021-11-23 20:31:02 · 2628 阅读 · 0 评论 -
Android 环形布局: FloatingActionButton + ConstraintLayout + 两个属性动画的同步使用
文章目录效果图布局与说明源码地址效果图布局与说明<?xml version="1.0" encoding="utf-8"?><androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:app="http://schemas.android.com/apk/res-auto" xmlns:tool原创 2020-07-28 10:59:30 · 6802 阅读 · 0 评论 -
Android 自定义View:时间轴效果实现
这些年,也没有遇到具体需求,需要我来写这个效果的。这次巧了,它(需求)来了。当时写第一版就有效果了,只是达不到UI的要求。恩,这不重要,重要的是思路。思路很简单:一个自定义view;一个枚举类来表示其不同的状态,并刷新重绘;将该view组合到 RecyclerView.Adapter的itemView中。不完整示例代码(kotlin 版):class TimeLineView : View { enum class ViewType { TOP_CIRCLE, BOTTO原创 2020-07-13 11:02:31 · 284 阅读 · 0 评论 -
Android 自定义View:绘制轮盘扇形区并加入扇形区点击事件
还记得是五六年前写的demo,用的 `canvas.drawArc()` 及 旋转画布等实现了,绘制轮盘,当初不会path,不知道怎么搞 扇形区的点击事件... 强行搁置了... 后来学了Path后,也没去改它。这两天用 kotlin 重写了下,path玩了起来,然而写点击的扇形区域匹配时,且在有旋转角度后,先入为主的就走入了误区...原创 2020-04-07 00:36:04 · 1303 阅读 · 1 评论 -
Android 自定义属性重复:../attrs.xml: Error: Found item Attr/rightTextColor more than one time
自定义属性时,对于不同的 属性域,采用了相同的属性名,会引发错误:../attrs.xml: Error: Found item Attr/rightTextColor more than one time<declare-styleable name="s1"> <attr name="rightTextColor" format="color"/></d...原创 2019-10-29 11:51:45 · 1671 阅读 · 0 评论 -
Android 自定义卫星式弧形菜单
import android.content.Context;import android.content.res.TypedArray;import android.util.AttributeSet;import android.util.TypedValue;import android.view.View;import android.view.ViewGroup;import原创 2015-12-13 16:12:42 · 5197 阅读 · 0 评论 -
Android 自定义水波,touch和move状态下触发 (玩具)
/** * author : stone * email : [email protected] * time : 15/3/2 14 15 */public class WaterWaveViewWithMove extends View { private Wave wave; private List wavesList; private boolean isRunni原创 2015-11-27 15:30:12 · 1886 阅读 · 0 评论 -
Android 自定义ViewGroup 实现流式布局
像上图,宽度不足自动换行。FlowLayout/** * author : stone * email : [email protected] * time : 15/8/4 15 08 */public class FlowLayout extends ViewGroup { public FlowLayout(Context context) {原创 2015-08-05 14:42:26 · 1001 阅读 · 0 评论 -
Android 自定义View 使用Kotlin编写雷达扫描效果
效果图 使用SweepGradient作为paint的shader,用于绘制 paint的color也会影响shader 利用handler不断发送消息,不断改变canva.drawArc()中的起始角度 在声明Handler成员属性时,不要声明成handler,因为View中有个方法为public Handler getHander(); 所以kotlin会认为你重写定原创 2017-07-22 14:05:20 · 1064 阅读 · 0 评论 -
Android 自定义 按当前view的宽高进行矩形移动内容图
import android.content.Context;import android.graphics.Bitmap;import android.graphics.BitmapFactory;import android.graphics.Canvas;import android.graphics.Matrix;import android.graphics.Rect;imp原创 2016-04-18 10:56:52 · 1576 阅读 · 0 评论 -
Android 自定义view时,顶层view为ScrollView 注意
int specMode=MeasureSpec.getMode(heightMeasureSpec);int specSize=MeasureSpec.getSize(heightMeasureSpec);顶层view为ScrollView时, 高度的mode都是 MeasureSpec.UNSPECIFIED它只能有一个直接子view,不论高度是否为一个 定值原创 2015-05-28 23:15:27 · 1051 阅读 · 0 评论 -
Android 自定义view(二) 如何实现自定义组件
Android 自定义组件(一) 基本实现方式和自定义属性:http://blog.csdn.net/jjwwmlp456/article/details/38728519原创 2014-11-13 11:57:53 · 3539 阅读 · 0 评论 -
Android 自定义view(一) 基本实现方式和自定义属性
实现方式:1. 继承自View ,自定义一个View.2.继承自ViewGroup(容器),自定义设置子view的位置、尺寸等,用于组合一些组件,产生一个复合组件3.继承自已有的组件(View型 或 ViewGroup型),用于扩展现有组件的功能自定义类的构造函数: public CustomView2(Context context) {//直接在代码...原创 2014-08-21 16:42:29 · 7585 阅读 · 0 评论 -
Android 自定义View 新年烟花、横幅动画
新年了,项目中要作个动画,如下效果图:整体要求实现:彩带乱飞,烟花冲天而起,烟花缩放,小鸡换图,小鸡飘移,横幅裁剪、展开等动画效果,全局大量使用了属性动画来实现我在实现过程中,横幅的裁剪计算,捣腾了比较久的时间,初版采用属性动画计算float的一个比率值,来配合每一帧的裁剪绘制,如下代码: private static class RollView extends原创 2017-01-22 18:19:03 · 5337 阅读 · 6 评论 -
Android 自定义View 仿蚂蚁信用分析(正多边形)
从我的 "慕课-手记" 中搬过来作者: stone86链接:http://www.imooc.com/article/14918来源:慕课网上一篇,我实现了正多边形的绘制,不过是用比较取巧的方式,仅能绘制出多边形,而不知道任意顶点坐标,没法再在顶点外绘制图片、文字...支付宝芝麻信用分-分析中,有个正五边形,各顶点外还有图片与文字,想绘制这么一个东西就需要知道各端点的坐标...原创 2016-12-13 11:09:46 · 1925 阅读 · 0 评论 -
Android 自定义View 绘制正N边形
从我的 "慕课-手记" 中搬过来 作者: stone86 链接:http://www.imooc.com/article/14599来源:慕课网支付宝芝麻信用分-分析中,有个正五边形,刚刚有空试着做了下效果图:分析图:实现原理、步骤:已知半径为R,圆心点O(a,b),点A(a, c=b-R), OA=OB=R,圆心角O的度数原创 2016-12-13 10:53:02 · 1994 阅读 · 0 评论 -
Android 自定义View 使用ShapeDrawable加BitmapShader实现图片局部放大效果
一些说明:> BitmapShader中放置的Bitmap是原图的缩放后的> ShapeDrawable的setBounds() 仅仅是设置一块shape的外矩形区,如用英语表示:size-region>ShapeDrawable中图片默认draw的原点为:相对于图片自身的坐标(0,0)> ShapeDrawable如果要对图片进行矩阵变化...原创 2016-12-11 02:35:48 · 2507 阅读 · 0 评论 -
Android 自定义View 实现刮刮卡效果
主要思想:将一个view设计成多层:背景层,含中奖信息等;遮盖层,用于刮奖,使用关联一个Bitmap的Canvas在该Bitmap上,使用它的canvas.drawPath的api来处理 手势滑动(类似刮奖的动作)使用paint.setXfermode 来进行消除手势滑动区域/** * author : stone * email : aa8679原创 2015-07-28 16:32:43 · 1762 阅读 · 2 评论 -
Android 自定义圆环进度条 自适应显示百分比
package com.stone.circleprogressbar.view;import android.content.Context;import android.content.res.TypedArray;import android.graphics.Bitmap;import android.graphics.Canvas;import android.graphic原创 2015-09-14 14:06:35 · 2538 阅读 · 0 评论 -
Android 自定义 斜线进度框 ,雨点式背景
import android.content.Context;import android.graphics.Canvas;import android.graphics.Color;import android.graphics.Paint;import android.util.AttributeSet;import android.view.View;import java.u原创 2015-10-22 15:29:22 · 4123 阅读 · 0 评论 -
Android 自定义九宫格锁
代码不多,注释详尽,也就不多说了,上图和代码package com.stone.ninegridlock.view;import android.content.Context;import android.graphics.Canvas;import android.graphics.Color;import android.graphics.Paint;im原创 2015-12-26 11:23:44 · 1678 阅读 · 0 评论 -
Android 仿美女撕衣服效果
因为我写demo的时候不是用一整屏幕来放置当前图片View的,且资源图也不小,所以用到了bitmap缩放代码注释比较详尽,直接上了package com.stone.guaguaka.view;import android.content.Context;import android.graphics.Bitmap;import android.graphics.Bitma原创 2016-01-28 15:17:15 · 2716 阅读 · 0 评论 -
Android 可拖拽的GridView效果实现, 长按可拖拽和item实时交换
本文的原理想法,出自xiaanming的博客(http://blog.csdn.net/xiaanming/article/details/17718579)具体的原理描述,可以去看夏神的这个博文原创 2016-04-28 12:22:23 · 3585 阅读 · 2 评论 -
Android RecyclerView 实现瀑布流交错效果,并使最后一行子View高度占满RecyclerView
http://www.imooc.com/qadetail/91200 我在这个地址搜索到了,如何监听RecyclerView滑动到底的状态而在实现完瀑布流后,觉得滑动到底部时,最后一行的高度,没有占满外部View,感觉不太好。(真正的瀑布流应该是条目数近乎无穷,可以一直加载更多)既然是瀑布流,那么就选用StaggeredGridLayoutManager。 mRecyclerView.setLa原创 2016-06-15 17:29:09 · 5146 阅读 · 0 评论 -
Android 绘制太极图
1. 分别绘制左黑右白两个半圆, 半径为r2. 再绘制上黑下白两个小圆, 半径为1/4 r3. 最后绘制上白下黑两个小圆, 半径为 1/16 r @Override protected void onDraw(Canvas canvas) { super.onDraw(canvas); int w = Math.min(getWi原创 2016-07-08 13:32:59 · 1006 阅读 · 0 评论 -
Android 自定义View 图片按Path运动和旋转
View:/** * author : stone * email : [email protected] * time : 16/5/29 15 29 */public class EarthPathView extends View { private Path mPath; private Paint mPaint; private Bitmap m原创 2016-07-27 16:31:47 · 8730 阅读 · 0 评论 -
Android 自定义view 折线翻页原理笔记
看了Aige的 Android翻页效果原理实现之引入折线原创 2016-09-20 17:49:33 · 4437 阅读 · 0 评论 -
Android 自定义View 横向翻页
原理见:Android翻页效果原理实现之翻页的尝试package com.stone.turnpage.view;import android.content.Context;import android.content.res.Configuration;import android.graphics.Bitmap;import android.graphics原创 2016-11-03 12:29:39 · 1992 阅读 · 0 评论 -
Android 自定义View 实现表盘效果
看一哥们做了这个效果,我也来凑下热闹我的实现:package com.stone.clock.view;import android.content.Context;import android.graphics.Canvas;import android.graphics.Color;import android.graphics.Paint;im原创 2016-11-07 20:36:37 · 2719 阅读 · 0 评论 -
Android 自定义拼接图片,点击小图位置时,绘制在上层
这里将五张矩形图拼在同一图层,并使用paint.setXfermode,显示点击区域上的图层备注:如果使用圆形图片素材(即圆形外是透明背景),那么需要用圆形的碰撞检测。package com.stone.guaguaka.view;import android.content.Context;import android.graphics.Bitmap;im原创 2016-05-04 21:26:31 · 2054 阅读 · 1 评论