美文网首页
自定义控件Demo流

自定义控件Demo流

作者: LeoFranz | 来源:发表于2019-09-29 12:02 被阅读0次

自定义控件

1、画一个圆角矩形怎么画

@Override
    protected void onDraw(Canvas canvas) {
        Path path = new Path();
        int w = getWidth();
        int h = getHeight();
        //这里对path添加一个圆角区域,这里一般需要将dp转换为pixel
        path.addRoundRect(new RectF(0,0,w,h), DensityUtil.dip2px(cornerSize),DensityUtil.dip2px(cornerSize), Path.Direction.CW);
        canvas.clipPath(path);//将Canvas按照上面的圆角区域截取
        super.onDraw(canvas);
    }
//使用
<xxx.xxx.RoundCornerImageView
            android:layout_width="wrap_content"
            android:layout_height="wrap_content" 
            app:corner_size="10"/>
//或者:
canvas.drawRoundRect(strokeRect, getHeight()/2, getHeight()/2, mPaint);

2、如何实现按住一个控件然后滑动
重写motionEvent,通过计算前后两次event的X,Y或者RawX,RawY差异获取移动偏移量,再设置LayoutParameter或者调用offsetLeftAndRight(offsetX);或者重新设置layoutParameter的margin;或者将当前四个点坐标加上偏移量然后重写layout方法.
offsetTopAndBottom(offsetY);两个方法即可。

当view移出父控件范围时候,将clipChildren设置为false可以防止子view被裁剪

3、画一个百分比饼图
遍历数据,将数据转化成角度偏移量,并给每个数据设置颜色
将canvas坐标通过translate方法设置到屏幕中央(美观)
遍历数据,从起始角度,通过drawArc画弧,通过不停变换起始点角度完成整个圆饼的绘制。
https://github.com/LeeFranz/CustomView/tree/master/CustomView_Cookie

4、画一个球场怎么画
使用path,使用addpath方法组合不同的path,不同的path添加不同的形状,然后使用canvas.drawpath绘制
https://github.com/LeeFranz/CustomView/tree/master/qiuchang

5、画一嵌套的图案怎么画
循环使用canva.scale方法,每次缩放后在调用相同的draw方法。
https://github.com/LeeFranz/CustomView/tree/master/WanHuaTong

6、画一个蛛网图案怎么画
https://github.com/LeeFranz/CustomView/tree/master/RadarView

7.贝塞尔曲线简单运用
二阶
https://github.com/LeeFranz/CustomView/tree/master/Bezier
三阶
https://github.com/LeeFranz/CustomView/tree/master/CubicBezierView

8、特殊控件处理方案——遥控器view
View默认都是矩形的,绘制出来的图案可以各种花样,但是view的触控响应区域都是矩形,可能导致响应区域重叠。
这时候需要将遥控器view利用设置成region括起来,利用regin.addpath将region囊括,在绘制方法中利用drawPath方法将相应的region区域绘制出来。在点击事件中获取点击事件的绝对坐标然后通过region.contains方法判断触控点在哪个region里面,然后就调用listener对不同region的响应方法,比如重绘对应region。
这里注意一点就是坐标轴重心rotate移动后触控点和最后的绘制点会产生偏移,这时候就需要用Matrix矩阵变换坐标轴。

9、缩放手势Demo
https://github.com/LeeFranz/CustomView/tree/master/ScaleGestureDemo

https://www.jianshu.com/p/cdbf200122ae
https://www.ktanx.com/blog/p/4801
https://www.jianshu.com/p/4d69caebf718
https://blog.csdn.net/u012124438/article/details/75949057

相关文章

  • 自定义控件Demo流

    自定义控件 1、画一个圆角矩形怎么画 2、如何实现按住一个控件然后滑动重写motionEvent,通过计算前后两次...

  • iOS瀑布流

    瀑布流Demo 使用UICollectionView实现瀑布流 自定义UICollectionViewLayout...

  • iOS-继承UIControl 实现自定义下拉刷新控件的封装

    demo地址本文目的是了解下拉刷新控件的实现原理, 效果图如下: 自定义下拉刷新控件分析使用什么自定义?UICon...

  • React Native封装iOS自定义原生组件

    简单描述下RN如何封装iOS自定义原生组件,做了一个简单的demo,封装一个DatePicker控件,控件中有取消...

  • iOS之瀑布流demo练习

    DEMO示例展示 对于瀑布流的实现是对于自定义UICollectionViewLayout进行item的自定义排布...

  • Swift-自定义switch控件

    比起系统的switch控件,这个自定义控件是不是可爱多了? 好,依然是老套路,将我Demo中的LLSwitch文件...

  • 自定义加载动画(仿58同城)

    1.demo简介 本demo实现的是加载中间过渡动画,主要涉及自定义控件以及属性动画的使用,本代码没有引用任何资源...

  • 自定义控件demo集合

    各种写着玩的自定义控件demo 有时网上看到一些比较有意思的开源项目,有时间的话就会自己也撸一个出来,但是一般只关...

  • 组合控件2——海贼王选项菜单

    之前的自定义控件——初识自定义控件,我们了解到了自定义控件分为三种,自制控件,组合控件,拓展控件。而我们在自制控件...

  • 通讯录A-Z指示器Demo

    :) 本文主要是介绍了一个自定义控件的实现 首先来看demo效果 这里有几个问题需要注意 控件的 高度 怎么确定 ...

网友评论

      本文标题:自定义控件Demo流

      本文链接:https://www.haomeiwen.com/subject/qphbyctx.html