Android
henono
这个作者很懒,什么都没留下…
展开
-
Android11 相机拍照权限,以及解决resolveActivity返回null
Android11 拍照权限 并解决resolveActivity返回null原创 2023-07-24 15:46:20 · 3490 阅读 · 0 评论 -
Android 百度定位过滤经纬度为4.9E-324的数据
百度定位过滤经纬度为4.9E-324的数据原创 2023-04-20 10:21:56 · 256 阅读 · 0 评论 -
Android 深拷贝 (clone方法实现)
Android 深拷贝 (clone方法实现)原创 2023-03-23 12:30:45 · 936 阅读 · 0 评论 -
Android 短信sms倒计时
将sms倒计时封装在一个类中:public class SmsTimer { private Timer timer; private int totalTime=60; //总共时长 private int currentTime; //当前倒计时 private Handler handler=new Handler(Looper.getMainLooper()); public SmsTimer(TimerInterface timerInter原创 2021-06-16 10:05:19 · 217 阅读 · 0 评论 -
Flutter 十六进制与字符串的相互转换
一、十六进制转换为字符串 String startId="#Start#"; String start=""; for (int i = 0; i < startId.length; i++) start=start+startId.codeUnitAt(i).toRadixString(16);原创 2021-06-08 11:07:07 · 5111 阅读 · 0 评论 -
Flutter 圆形Image
new Container( width: 60,height: 60, decoration: BoxDecoration( shape: BoxShape.circle, //可以设置角度,BoxShape.circle直接圆形 .原创 2021-06-07 16:47:23 · 258 阅读 · 1 评论 -
Flutter 检查权限与添加权限
一、引入依赖库:permission_handler原创 2021-06-07 16:04:02 · 2404 阅读 · 1 评论 -
解决Android project already contains module with this name
第一步:选择File -> Project Structure -> Modules,选中要删除的module并点击减号第二步:选择File -> Project Structure -> Dependencies,选中app,将需要删除的mudule取消关联第三步:检查setting.gradle文件,include这一行是否还存在已删除的module,如果存在就手动删除第四步:检查项目文件夹下面是否仍存在已经删除的module的文件夹,如果存在就手动删除原创 2020-09-09 11:18:59 · 4153 阅读 · 1 评论 -
Android 自定义LinearLayout实现滑动下拉抽屉的功能(解决滑动冲突)
本篇我们来解决上一篇的遗留问题:自定义LinearLayout与RecyclerView的滑动冲突。没看过上一篇文章的,可以先去看一下:https://blog.csdn.net/zz51233273/article/details/108320445先看效果图:一、解决思路当手指一开始滑动时,触摸事件会被传递给RecyclerView去处理。并且在滑动列表数据的时候,我们确实是想让RecyclerView去处理触摸事件。经过长时间尝试,我发现用onInterceptTouchEvent原创 2020-09-02 10:11:15 · 1100 阅读 · 0 评论 -
Android 自定义LinearLayout实现滑动下拉抽屉的功能
先看效果图:先来说说思路:我们把该页面分为两部分,分别是头部的抽屉布局(海洋色背景)和主内容布局(白色背景),这两部分的布局是呈线性关系,即抽屉在上,主页面在下,并且它们的父布局应该是一个可滑动的LinearLayout线性布局所以,我们的目标就是自定义一个可滑动的LinearLayout,并且设置它的子布局都向上移动一个自定义LinearLayout的高度一、自定义控件的测量和布局自定义LinearLayout,假设为MyPullDownLayout:public class M原创 2020-08-31 15:17:10 · 2988 阅读 · 0 评论 -
Android 自定义View一个酷炫又无厘头的动画
先看效果图:这是我在做上一篇自定义View加载动画时,无意间写出来的东西,个人觉得十分酷炫,而且只需要简简单单40行代码。关于该View的实现我不细说了,直接上代码:public class MyFiveCircleView extends View { private Paint circlePaint; private RadialGradient radialGradient; private int circleNum=5; //圆的数量原创 2020-08-27 11:33:27 · 335 阅读 · 0 评论 -
Android 自定义View利用Path实现变速圆周运动的环绕加载动画
先看效果图:我先来说下思路:首先我们需要将小圆球添加到Path中(Path.addCircle()),然后我们利用canvas.rotate旋转整个图层,从而实现小球绕图层中心做圆周运动。又因为每个圆球运动轨迹不同,所以我们需要五个Path对象来分别存放上图中的五个圆球。最后利用加速度公式来模拟小球加速和减速运动一、圆球的绘制和匀速圆周运动下面我们来做图分析:由上图可知,以我们控件的宽度为准,假设控件的宽度为w,可以设计最大圆的半径为w/8,接下来从大到小其余四个圆的半径分别为w/.原创 2020-08-27 11:03:33 · 1252 阅读 · 0 评论 -
自定义View实现圆环环绕的加载动画
先看效果图:这是我在某软件上看到的加载动画,感觉挺不错,就自己研究了一下。下面给大家分享一下该动画的实现过程一、三个圆环的绘制和运动分析来看下面这张解析图:假设每个圆环的初始位置如上图,那么我们可以设定每一个球的位置以及每一个球离控件边界的距离(w/6)为了方便,我们定义控件宽度getWidth()为w,那么左上,右上,正下方圆环的圆心坐标依次为:(w/4, w/4),(w*3/4, w/4),(w/2, w*3/4)我们再来看下面这个动画:发现了吧,实际上每个圆原创 2020-08-24 15:38:58 · 437 阅读 · 0 评论 -
自定义View实现注销图案的加载动画
先看效果图:有那味了。。。(懂得都懂^ ^ √)我们先来分析一下怎么画,然后再研究怎么让他动起来这个View是由内部的注销图案和外面一圈圆环构成。而内部的注销图案又是由一个基本满角度的圆弧和一根竖线组成一、绘制内部注销图案首先初始化画笔和圆弧的外切矩形:private Paint logOffPaint; //注销图案的画笔private Paint circlePaint; //外圆的画笔private RectF logOffRect; //注销图案中圆弧的外切原创 2020-08-21 18:14:17 · 201 阅读 · 0 评论 -
Android 自定义ViewGroup实现图片滑动显示
先看效果图:本篇我们分为三部分来讲:图片的滑动实现 动态改变缩放值和透明度 实现右下角滚轮滑动 补充一、图片的滑动实现在上图中,一个屏幕里同时可以存在三张图片,这意味着每次滑动实际只滑动了1/3的屏幕宽度。当然,我们也可以只让屏幕显示一张图片,或是同时显示5张等等。我们应该设立一个变量onPagerNum来表示当前屏幕显示的图片数量在本文中我们令onPagerNum=3,即一个屏幕出现三张图片。下面我们要计算每个图片应分配的最大宽度,先来看下图:从图中就能很明显的得出结论原创 2020-08-10 16:32:02 · 1616 阅读 · 2 评论 -
Android 自定义View贝塞尔曲线实现波浪动画
先看效果图:下面我们来研究研究他是如何实现的。为了方便我们观察,再来看下面这张动图:有感受到些什么吗?其实,我们需要做的是同时创建多条贝塞尔曲线,然后移动每条曲线上的起点和终点就能实现波浪效果了。例如在上面图中,黑色的点是贝塞尔曲线上的起点与终点,蓝色的点是贝塞尔曲线的控制点。控制点x的坐标其实是由起点和终点决定的。控制点x坐标计算公式是:x=(起点的x+终点的x)/2,控制点y的坐标我们可以任意取值,从而来达到最好的效果。所以,移动贝塞尔曲线的起点和终点后,它的控制点也会跟着移动。原创 2020-08-07 17:54:01 · 755 阅读 · 0 评论 -
Android 自定义View贝塞尔曲线实现书籍翻页的效果(包含原理解释)
先看效果图:我先来解释一下该翻页的实现原理,大家来看下面这张图:我们可以把翻页时的图案分为三部分,分别是第一页的图案,第一页的背面图案,以及第二页的图案。我们将图形进一步数学化:其中,c、d、b是以e为控制点的贝塞尔曲线上的点。同样,j、i、k是以h为控制点的贝塞尔曲线上的点。a为翻角的顶点,线段eh为线段af的中垂线。根据上图,我们可以对线段af左侧做出假设(另一边也同理):ce=ef/2p是线段cb的中点d是线段pe的中点b是ae和cj的交点由原创 2020-08-05 14:52:47 · 2106 阅读 · 3 评论 -
Android 自定义View实现动画效果切换主题颜色
先看效果图:想要实现这种效果,首先要了解下Xfermode图像混合模式中的PorterDuff.Mode.CLEAR,它可以用来清除原图像的部分绘制内容,可以理解为它是一块橡皮,可以擦去图像上的任意一块地方。其次,canvas中的也有着图层的概念。图层是什么,简单来说就是一层一层的图片叠加在同一个地方,比如有一幢摩天大楼,它有一层,两层,三层......十八层等等,我们如果从大楼正上方俯瞰大楼,因为它的下面几层都被最上层压住了,所以我们只能看到它的最上层。图层的概念也一样,我们正常情况只能看到最原创 2020-07-31 15:55:03 · 775 阅读 · 0 评论 -
Android 自定义View实现打钩(签到)的动画
先看效果图:这里,我没有添加打钩的图片,而是单纯的用canvas来实现动画效果中间的钩,我用了路径Path来进行描绘并实现它的动画效果。首先,这个钩由两条线段,三个顶点组成的,其实将这三个顶点作为参数传入Path对象中的lineTo()方法,再调用一下canvas.drawPath(),我们就可以得到图中这个钩的样式了然后说说动画效果的实现,postInvalidateDelay()这个方法就很重要了,它能让onDraw()方法每隔一段时间被调用一次所以,外部的圆环我们可以用drawAr原创 2020-07-29 17:46:49 · 938 阅读 · 0 评论 -
Android 自定义View实现炮弹射击小游戏
先看效果图:这是一个比较简易的射击小游戏,后期可以将圆球,炮筒用其它图片来替换,应该可以变得好看一些。我实现这个效果,主要是为了学习和巩固自定义View的一些知识点。下面我来讲述一下本游戏的设计思路从图上我们可以看到,我们需要一个炮筒,炮筒里可以发出许多的子弹,然后天上有很多的敌人,我们需要用子弹去碰撞到敌人,从而达到消灭敌人的效果。所有我们首先就需要有炮筒,子弹,敌人这三个类大炮类:public class Artillery { private Matrix matrix;原创 2020-07-28 17:18:38 · 1414 阅读 · 4 评论 -
Android 自定义View实现可拖动边框缩放的矩形
先看效果图我的思路是,首先我给确定下来我点击的是哪一条边,这个可以用onTouchEvent来监听实现。然后,由于用户很难精确的点击到边上,所有点击时需要存在一定的误差范围。最后,我需要判断每条边的边界情况,例如右边框不能移动到左边框的左边,上边框不能移动到下边框的下面等。下面是自定义View的源码:public class MyRectView extends View { private Paint paint; private Rect rect; priva原创 2020-07-28 09:52:36 · 2305 阅读 · 6 评论 -
Android 自定义View实现圆形头像(适用于任意布局)
先看效果图:先来说下我的思路:首先我需要在自定义View中动态获取头像id,那么就需要在attrs文件中,写一个关于该View类的自定义属性。这里仿照ImageView,取名为src,类型为reference引用类型<?xml version="1.0" encoding="utf-8"?><resources> <declare-styleable name="CircleImageView"> <attr name="原创 2020-07-24 11:51:44 · 1041 阅读 · 1 评论 -
Android 自定义View实现动画形式加载环形图
先看效果图(图片是gif,比较卡顿):通过调用postInvalidateDelayed()延时绘制的方法,可以实现以上图片中的延时效果,下面来看具体代码:1、自定义View类:public class MyProgressView extends View { private Paint circlePaint; //圆环的画笔 private Paint bgPaint; //环背景的画笔 private RectF circleRectF; //原创 2020-07-16 10:41:50 · 438 阅读 · 0 评论 -
Android Zxing二维码自定义界面(继承Capture类)
先来看效果图首先我们引入Zing开源框架,来搭建二维码扫描环境:dependencies { implementation 'cn.yipianfengye.android:zxing-library:2.2'}跳转到二维码扫描界面://跳转到扫描二维码public void forwardZXing(){ Intent intent = new Intent(this, CaptureActivity.class); startActivityForRe原创 2020-07-13 15:31:04 · 2921 阅读 · 2 评论 -
Android自定义View模拟并实现3D柱状图
先看效果图呈上代码:自定义View类public class MyBarView extends View { private Paint barPaint; //柱状图画笔 private Paint shadowPaint; //阴影画笔 private int xOffset=1,yOffset=1; //x和y方向的偏原创 2020-07-09 18:39:51 · 998 阅读 · 0 评论 -
自定义View简单实现图片的手指移动和两指缩放
先看效果图:直接上源码:自定义View类public class MyView extends View { private Matrix matrix; private Bitmap bitmap; private Paint paint; private float currentX,currentY; //当前手指所在屏幕的位置坐标 private double pointerDistance=-1; //两指间的距离 pri原创 2020-07-08 14:01:24 · 1346 阅读 · 0 评论 -
初学Flutter--Assets资源文件
使用AndroidStudio进行Flutter编程时,无需创建assets文件夹来存放文件,这里以图片为例,可以按以下三步走来加载图片1、在项目根目录创建Directory文件夹,我这里取名为’images‘,将图片放入该文件夹中2、在pubspec.yaml文件中配置Assets资源文件路径,只有配置了路径,代码里才能调用文件(注意缩进,'-'右边有一个空格)3、在代码里调用,例如下面的方法...原创 2020-06-15 15:09:42 · 8672 阅读 · 0 评论 -
Android 解决Dialog导致软键盘无法隐藏的问题
解决办法:hideSoftInputFromWindow(view.getWindowToken(), 0);这个方法中的第一个参数传dialog的view例如:Dialog dialog = new Dialog(getContext(), R.style.ActionSheetDialogStyle);InputMethodManager imm=(InputMethodManager)getContext().getSystemService(Context.INPUT_METHO原创 2020-05-12 11:14:27 · 1385 阅读 · 0 评论 -
Android解决网络加载大图片OOM的问题
首先我们要获取网络上的图片,这里我们使用AndroidAPI中的HttpUrlConnection,具体代码如下:private HttpURLConnection getHttpURLConnection(String imgUrl)throws Exception{ URL url=new URL(imgUrl); HttpURLConnection httpURLCon...原创 2020-04-14 13:21:35 · 832 阅读 · 0 评论