- 博客(85)
- 资源 (72)
- 收藏
- 关注
原创 Flutter - StatefulWidget (有状态的 Widget) 和 生命周期
Flutter是一个由谷歌开发的开源跨平台应用软件开发工具包,用于为Android、iOS等平台 开发应用
2025-02-24 17:47:34
1001
原创 Flutter - 初体验基础小项目(项目结构)
Flutter是一个由谷歌开发的开源跨平台应用软件开发工具包,用于为Android、iOS等平台 开发应用
2025-02-18 17:50:27
358
原创 Flutter - Dart 语法
Flutter 基于 Dart 语言开发 APP,一套代码可同时运行在 Android 和 iOS 以及其他平台。学习 Flutter 前掌握 Dart 语言基础语法可达到事半功倍。
2025-02-12 16:43:23
223
原创 Http ( Hypertext Transfer Protocol 超文本传输协议 )
Http ( Hypertext Transfer Protocol 超文本传输协议)简单来说两个人说话用同样的语言即可沟通,计算机之间说话(传数据)同样需要规定协议如果没有协议计算机之间不知道怎么传输数据,通信双方可以按照协议传输数据HTTP工作方式在浏览器输入链接回车可以看到网页(输入网址回车后,向服务器发送请求,服务器收到请求后给浏览器响应,浏览器得到响应报文渲染页面)整个过程可以理解为通信双方传输报文的过程包括 Android 发送网络请求,返回数据同理URL格式...
2025-02-07 09:28:48
1076
1
原创 Android Banner Indicator 轮播图指示器
轮播图 ( banner ) 是 android app 中常用控件,指示器也随之多样化这次项目大改版,指示器如上图效果,因为开发周期很紧,故首先奉行拿来主义,感觉这种常见的效果网上肯定很多,查找之后大跌眼界;原本项目有 banner ,自带指示器无法满足 UI 要求,查找之后没有发现可直接使用的,最后决定自定义一个简单可直接使用的 BannerIndicatorView使用方法非常简单:// 1 设置指示器个数(一般在设置banner数据时同步设置即可)mIndicator.ini..
2021-12-29 11:24:20
6402
6
原创 Android JetPack Navigation
Navigation:管理Fragment的新架构模式,如果你想,整个App只需要一个Activity即可完成;上图中ABC三个页面是由三个Fragment完成,交由 Navigation管理即可实现;想要使用 Navigation组件需要添加依赖,且 Android Studio 3.2 版本以上;实现非常简单,三步完成:①创建 navigation目录②创建navigation.xml文件③Activity关联navigation...
2021-04-16 13:51:37
439
原创 浅谈加密,数字签名
加密,是以某种特殊的算法改变原有的信息数据,使得未授权的用户即使获得了已加密的信息,但因不知解密的方法,仍然无法了解信息的内容。(源于百度百科)密码学起源于古代战争,为了防止书信被截获泄露信息而产生;古代密码学有:①移式加密将布条围绕在密码棒上即可对书信进行加密;加密算法:布条缠绕后书写密钥:密码棒的尺寸②替换式加密:按照规则使用不同的文字替换原文进行加密;原字符 0123456789 密码字符 4567890123 原数据 66778...
2021-03-02 22:58:16
2054
原创 AndroidStudio Debug 常用调试技巧
Bug ( 蛀虫 ) ,DeBug (调整程序,移去程序中的错误)启动DeBug两者区别很明显,前者运行程序并调试程序,后者使用较多,程序正在运行中直接启动Debug调试,点击后选择弹窗“Choose Process”(选择程序),触发断点即可;基本使用常见的调试方法就不演示了,直接两张图简单易懂:高级调试① 条件断点条件断点非常实用,使用场景:循环中只想看某个条件成立时的逻辑,条件可设定如果 names 数组中有 “ZhangSan” ,断点生效,否...
2020-10-30 16:07:28
333
原创 Android Kotlin 开发需知
变量如果某些成员变量在一开始没办法初始化,并且又不想使用可空类型(也就是带?的类型)。可以使用 lateinit 和 by lazy // 不知道具体值,后面再赋值使用;所以必须var lateinit var name: String // 知道具体值,用到的时候再加载,表示不可变的值,所以必须val // {}中的最后一行代码返回初始化的结果,加载时机为第一次调用常量的时候,且只会加载一次 private val book by lazy { ..
2020-06-29 16:05:01
447
原创 Kotlin Coroutines协程入门
Kotlin协程和协程是两个东东,这里直说Kotlin协程;Kotlin协程是一个线程框架;需要额外引入: implementation "org.jetbrains.kotlinx:kotlinx-coroutines-core:1.3.0"直接上代码,简单实现:// 默认在后台执行,可指定线程GlobalScope.launch { LogUtil.i("zz------${Thread.currentThread().name}")}// zz-...
2020-06-24 15:36:02
472
原创 Android App加载图片内存空间计算
图片内存图片占用内存空间大小都很熟悉:分辨率 * 像素点大小图片占用内存空间大小和 图片分辨率,像素点大小 有关1.图片格式,图片文件大小和占用内存空间大小无关png / jpg 只是这张图片的容器,它们经过相对应的压缩算法将原图每个像素点信息转换用另一种数据格式表示,一次达到压缩目的,减少图片文件大小无论png,jpg还是webp,都需要先转换为bitmap,然后才能显示所以图片小打和图片加载进内存所占大小没关系;2.图片占用内存空间大小和像素点数据格式相关如没有指定,..
2020-06-08 16:11:38
671
原创 Android 自定义View----多点触摸反馈
多点触摸和单点不同,只要了解每隔触摸点的属性即可public class PaintingView extends View { Paint mPaint = new Paint(Paint.ANTI_ALIAS_FLAG); // 轻量级Map SparseArray<Path> pathMap = new SparseArray<>...
2020-04-01 16:24:10
324
原创 Android 自定义View----触摸反馈
布局,绘制,触摸反馈;想要实现和用户手势交互,必须了解触摸反馈,简述下:dispatchTouchEvent:分发事件onInterceptTouchEvent:拦截事件onTouchEvent:消费事件AAA------dispatchTouchEventAAA------onInterceptTouchEventBBB------dispatchTouchEventBB...
2020-01-16 11:07:14
857
原创 Android 自定义View----布局流程(流式布局)
绘制一个商品属性选择的控件,需要如何绘制?这个时候需要了解自定义view中的布局流程;自定义veiw包括布局,绘制,触摸反馈布局就是确定每个view的位置和尺寸,然后才能知道在哪里绘制,绘制完成后用户才能知道点哪里; 布局整体流程: 假设一个ViewGroup里面有n个子view 的布局过程 分测量和布局两个流程 ①测量流程:从最上面的父view往下...
2020-01-07 17:32:40
422
原创 Android 自定义View----文字绘制(文字居中自动换行)
c使用canvas绘制文字非常简单,但文字绘制根据baseLine无法剧中,网上说法很多,有点麻烦,这里用到一个非常简单的办法,先来看下文字的绘制参考线图片直接百度复制的,不是自己画的,有时间自己画一个;文字上下居中其实很简单 // 单行绘制 (先计算出基线和到文字中间的距离,mPaint不是TextPaint) float offset = M...
2020-01-01 23:15:44
1810
1
原创 Android 自定义View----属性动画(如何在自定义view中添加动画)
自定义view难免会接触到动画,不然很多效果做不出来,动画分为几种,今天主要用到的是属性动画;上面这个效果分上下两部分完成,在绘制的时候先绘制下半部分,具体代码如下,里面有详细注释:public class CameraAnimatorView extends View { private Paint mPaint = new Paint(Paint.ANTI_ALIAS_...
2019-12-30 14:35:33
1451
原创 Android 自定义View----离屏缓冲和图像混合模式(圆形头像)
这里主要了解下离屏缓冲和图像混合模式,可能在自定义view的时候会用到,绘制的内容也非常简单,一个简单的圆形头像绘制大概分为5步:1,开启离屏缓冲2,绘制一个圆3,设置图像混合模式 https://www.cnblogs.com/libertycode/p/6290497.html4,绘制bitmap5,绘制完成后使用 restoreToCount 将离屏缓冲的绘制...
2019-12-27 11:36:47
1389
2
原创 Android 自定义View----PathEffect(仪表盘,饼图)
通过这个view大致了解了几个方法,可通过PathEffect给path设置样式;大致分三步:第一步:通过canvas.drawArc()方法先把圆弧画出来第二步:画刻度(这里通过给画笔设置PathEffect的方法实现刻度绘制,并非for循环画线)第三步:画指针(这里需要了解正弦余弦,其实都是API的方法,直接调用即可,但需要自己理解)public class Dash...
2019-12-18 18:36:13
647
原创 Android性能优化:ANR异常处理
ANR(Application Not Responding)应用程序无响应导致ANR异常的原因很多:InputDispatching Timeout:5秒内无法响应屏幕触摸事件或键盘输入事件BroadcastQueue Timeout :在执行前台广播(BroadcastReceiver)的onReceive()函数时10秒没有处理完成,后台为60秒Service Timeo...
2019-08-20 16:23:23
751
原创 Android性能优化:Layout布局优化小建议 DDMS
页面直接和用户交互,如果页面出现卡顿,用户体验会瞬间下降;当然,页面卡顿并非完全是Laout的问题,今天只说Layout优化的一点点建议;1.了解DDMS,使用Hierarchy View 监测页面2.使用Lint tool监测布局3.平时开发应注意事项启动DDMS低版本AndroidStudio可直接打开DDMS,新版本需要寻找SDK文件夹,找到monito...
2019-08-03 09:40:30
465
原创 Android GreenDao数据库使用详解(数据存储)
app数据存储有很多办法,一般情况下根据数据量来选择:数据量较小可使用SharedPreferences保持,比较多使用GreenDao保存,数据量巨大可使用File流保存;最近项目中需要保存几百组数据,正好借此结合了解下GreenDao数据库,为什么选择GreenDao?GreenDao有那些优势就不再叙述了,网上一搜一大堆,简单说下使用步骤,重点了解下查询操作;导入插件配置Gr...
2019-07-12 10:45:26
1645
原创 AndroidStudio 生成jar 和 aar(混淆)
首先看下效果图,左边是封装之前的代码,右边是生成混淆jar包 供"兄弟公司"使用.目前最常见的有*.so,*.jar,*.aar三种(.so一般C或者C++使用,我们说下后两者)做之前感觉有点神秘且高大上,其实很简单,大致分为四步:创建好moudle将需要生成jar的类准备好 >配置buidl.gradle文件 > 配置混淆规则 > 生成ja...
2019-07-11 16:21:53
1231
原创 Android性能优化:Apk 瘦身之路
想要变瘦必须知道“肉”都从哪里来的, Buidl > Analyze Apk > 选择apk包 (查看apk体积结构)(原包25M+,优化后15M-)其实apk瘦身很简单(把问题简单化,先入门),主要从三方面入手:1:资源2:图片优化3:混淆资源首先监测并删除无用资源:Analyze > Run Inspection by Name > 输入 u...
2019-07-04 22:53:51
592
1
原创 Android app前后台切换监听
目前正在开发的app使用WebSocket传输实时数据,为了更好的用户体验,需要app退至后台时主动断开长连接,当用户再次切换进入前台程序时链接长连接;实现起来非常简单,自定义Application,在onCreate中添加监听即可 private fun initAppStatusListener() { ForegroundCallbacks.init(th...
2019-06-30 21:08:53
2594
原创 Android 闪屏启动页全面屏适配
随着全面屏手机普及,目前市面上的手机屏幕尺寸大致分为三种:非全面屏(16:9),全面屏(18:9),全面屏(>18:9)App启动初始化程序会出现短暂的白屏问题,为解决白屏可设置启动页面样式:<style name="SplashTheme" parent="Theme.AppCompat.Light.NoActionBar"> <!...
2019-06-28 16:07:05
5924
1
原创 android:自定义view--区线图
老规矩,先上图,整个自定义view分为标题模块,xy轴标注数据模块和数据模块,其实数据模块是有一个浅灰色的背景,但是动态图里面看不出来,真机上可以看出;和前面几个图表相比增加了贝塞尔区线,虚线,手势点击显示标注线和当前日数据;后面还有左右按钮切换上周下周数据,这个不是主要功能,就不加到博客中了,真实项目使用直接将数据准备好,左右切换的时候切换数据源刷新view即可;老...
2018-04-05 00:10:39
769
原创 android:RecyclerView布局管理显示不同跨度和空布局
布局管理器显示不同跨度:实用RecyclerView必须设置一个布局管理器,这里设置GridLayoutManager,还需要给布局管理器设置一个方法; //设置表格,根据position计算在该position处item的跨度(占几列数据) layoutManager.setSpanSizeLookup(new GridLayoutManager.SpanSizeLo
2018-01-16 11:10:07
1893
原创 android:自定义view--组合控件
项目中用到了很多类似的界面,一行左右两边都是显示文本,数量非常多;如果按照普通的方法画肯定也能非常轻松的画出来,但是因为使用地方较多,为了后期维护,代码的简介,提高开发效率,简单易用等等:可以自定义一个组合控件;自定义组合控件使用起来非常方便,创建也非常的简单,四步走:第一步:创建组合控件的XML布局文件<LinearLayout xmlns:android="h...
2017-12-13 10:56:52
727
1
原创 android:自定义view--横向柱形图
此demo也是从我们真实项目中copy出来的;大致步骤和制作MyTabView差不多,只不过稍微繁琐一些;/** * Created by zheng on 2017/12/4. * 横向的柱形图 * * 1:绘制XY轴 * 2:绘制XY轴刻度和旁边的文本 * 3:绘制圆角矩形(六个月份的柱子) * 4:绘制和背景颜色一样的矩形(遮挡圆角矩形左边的圆角) * */...
2017-12-11 14:07:41
1711
2
原创 android:自定义view--MyTabView
如果标题分割线是竖直的就非常简单了,可以直接使用TabLayout实现;其实上面的圆角不用咱们考虑,因为activity中间部分整体是一个CardView只需将title部分自己画出来即可;整个view由四个图形绘制而成:android自定义view:Paint和Canvas真个view代码比较连贯,虽然整个view粘贴上来有点乱,但是分开粘贴看上去更乱;pub...
2017-12-01 14:41:17
1299
原创 android自定义view--Paint和Canvas
demo主要简单了解下自定义view在onDraw()对视图进行绘制的一些简单操作如果英语很6可以直接看官方文档:Canvas官网地址 Paint官网地址要绘制图形,首先得调整画笔(Paint),按照自己的需求设置画笔的相关属性,常用的一些设置有: 1、setAntiAlias():设置画笔的锯齿效果 2、setDither():设置防抖动 ...
2017-11-30 16:20:27
796
原创 android:viewpager+photoview实现图片查看器
效果需要两个手指禁止缩放,所以没有光标,只能用手机投放电脑上录制动态图片;demo中实用了一个第三方的photoview,非常简单实用;可实现图片双击放大,手势放大缩小,当手指离开屏幕时如果图片小于原图可自动恢复原图大小,可实现点击监听,长按图片监听;整个demo非常简单,整体就是一个activity,页面布局只有一个viewpager和textview<RelativeLayout
2017-11-28 11:11:38
8728
1
原创 android:高仿京东商品属性筛选(流式布局)
筛选和属性选择是目前非常常用的功能模块;几乎所有的APP中都会使用;点击筛选按钮会弹出一个自己封装好的popupWindow,实用方法非常简单;两行代码直接显示;(当然初始化数据除外)这里和以前用到的流式布局有些不一样:流式布局以前使用的是单个分类,而且也没有在项目中大量实用;这个筛选功能除了数据外几乎都是从项目中Copy出来的;整个popupWindow布局就是一个自定义的Lis
2017-11-24 16:45:29
5055
1
原创 android ripple水波纹详解
Ripple是Material Design(材料设计)中的效果;虽然在5.0的机型上,会自带Ripple点击效果,但是有时候需要自己更改点击效果;使用Ripple的关键就是在android:background中设置;使用方法也非常简单,在drawable中创建**.xml文件:<!--在真是项目中都有自己的主题颜色,Ripple效果的颜色默认是灰色;可通过android:co
2017-09-22 14:09:27
2702
原创 Android:TabLayout向上滑动停留页面顶部
相信大家在很多APP中都可以看到这样的效果;下面是一个tablayout,上面可以加入其他的布局文件,当滑动的时候tablayout停留在页面顶部;我们这里使用CoordingatorLayout + TabLayout + ViewPager来实现;如果不了解CoordingatorLayout 和TabLayout的可以看下以前的博客先了解下:CoordingatorLayout详
2017-07-27 14:12:37
15992
10
原创 Android高仿京东淘宝商品列表布局切换效果
商品列表布局切换效果很常见,因为淘宝京东有的界面下面很多公司都会给风模仿当然,我们公司也不例外,最近版本更新添加了这个功能;在项目中直接使用RecyclerView实现切换功能;如果不了解RecyclerView的可以先看下: RecyclerView使用详解使用RecyclerView可以非常简单的实现功能;第一步:在adapter中重写getItemViewType()方
2017-04-27 15:37:25
9071
原创 Android使用MediaPlayer播放音乐文件
这里主要介绍的是SeekBar拖动条和MediaPlayer播放器;最近项目添加一个音乐播放页面,让用户可以试听警报声,所以实现单曲播放,但是只要单曲可以实现,多曲也非常简单;首先看下布局文件,在这只复制SeekBar:(其他的布局文件太简单了,如果想看可以下载demo) <!-- android:max="100" 设
2017-03-23 17:55:25
2956
原创 android圆形头像:相机裁剪+相册选择
这里我们调用的都是系统提供的类,所以使用起来非常简单;每次点击圆形头像都会弹出一个PopupWindow,可以点击“拍照”,“手机相册”和"取消";1,当点击"拍照"时开启系统拍照页面,拍照完成 成功接收图片以后 携带数据 打开 图片裁剪页面,裁剪完成 成功接收图片显示到view上面;2,当点击"手机相册"时 开启系统相册选择页面,选择完成以后获取图片路径,显示到view上面;
2017-03-10 10:12:52
2224
CardView使用详解
2016-09-01
android高仿京东属性选择
2017-11-24
Ripple水波纹
2017-09-22
PopupWindow嵌套ListView
2017-01-07
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人