- 博客(253)
- 收藏
- 关注
原创 Android修行手册 - 自定义验证码输入框
刚学Android的朋友可能又疑惑了,里面涉及了RelativeLayout和自定义View的知识。没错,小空几种验证码的实现方案特意选的这个,这样我们就引出了下一篇文章布局容器的知识:RelativeLayout(相对布局容器)和LinearLayout(线性布局容器)
2024-11-28 07:17:07 747
原创 Android修行手册 - 实现可折叠TextView,仅一个类复制即用
这三个分别是@用户的,#话题的,网址链接的根据正则表达式的匹配和Pattern与Matcher知识,摘取符合条件的文本开始位置和结束位置。所以我们需要一个存放信息的实体类【】,除了这些特殊的文本,有时候我们还需要给普通文本也设置点击事件和特殊处理,所以我们在弄个【经过上方的处理,我们已经有了需要进行特殊处理和普通文本的数据集合然后利用SpannableString来进行处理即可。做完上面这些,还有收缩展开功能,利用的是动态修改测量宽高。
2024-11-28 07:15:06 893
原创 Android修炼系列(十三),分享几个有趣的自定义view小栗子
这个方法的作用是获取扇形终射线与圆弧交叉点的x, y坐标,感兴趣的可以研究下:/**/*颜色的渐变效果实现,就是获取每个刻度所对应的颜色段内等比例的16进制颜色值,代码如下:/**if (p!= 0 && p!= 100) {其余的细节和方法就不贴了,都是比较常规的Paint方法。
2024-11-28 07:11:05 710
原创 Android修炼系列(十一),强大的可拖拽工具类ViewDragHelper
Override@Override这是我们的layout文件,其中DragViewGroup是我们上面定义的ViewGroup,TextView就是待拖拽的child view。是不是非常省事,博客的栗子我都上传到了上,感兴趣的可以下载看下。
2024-11-28 07:07:04 856
原创 Android使用ViewPager实现图片轮播系列之二:自动轮播
*** 此处如果设置 currentItem % imageViewList.size() 能够让其不间断轮播。用Handler实现自动轮播。// 将图片放到集合中。
2024-11-28 07:01:03 785
原创 Android使用RecyclerView实现瀑布流
*//瀑布流 错误写法 因为每次都会onbindviewholder 但不是每次都是create。mAdapter.addData(1,new DataBean(1,“刁”));//设置水平瀑布流的height集合值: 如果有该值 则不重复创建。//三个参数context,水平/竖直排列数据 ,是否反向显示。//下面的方法不行 必须用上面的layoutmanager。//设置RecyclerView的Item分割线。//设置REcyclerVIew布局管理。//数据改变后要执行的操作的封装 b。
2024-11-28 06:59:02 1001
原创 Android ListView功能扩展,实现高性能的瀑布流布局
其中 mColumnCount 表示瀑布流布局一共有几列,这里我们先让它分为两列显示,后面随时可以对它进行修改。当然,如果想扩展性做的好的话,也可以使用自定义属性的方式在 XML 里面指定显示的列数,不过这个功能就不在我们本篇文章的讨论范围之内了。mColumnViews 创建了一个长度为 mColumnCount 的数组,数组中的每个元素都是一个泛型为 View 的 ArrayList,用于缓存对应列的子 View。mPosIndexMap 则是用于记录每一个位置的子 View 应当放置在哪一列当中。
2024-11-27 11:45:04 774
原创 Android ListView列表分组
/ 布局里的控件id。map.put(“itemTitle”, “文章1-” + i);map.put(“itemTitle”, “文章2-” + i);setData();
2024-11-27 11:43:03 672
原创 Android lifecyle 源码解剖
我们先来看一下 getLifecycle() 方法, getLifecycle() 它返回的是一个 Lifecycle 的实例,sdk 中默认的实现类为 LifecycleRegistry。接下来,我们一起来看一下它的 observer 方法。// 判断是否是 DESTROYED,如果是将初始状态置为 DESTROYED,否则为 INITIALIZED// ObserverWithState 包装// 将 observer 作为key,在缓存的 mObserverMap 中查找是否存在。
2024-11-27 11:41:03 857
原创 Android lifecyle 源码解剖(1)
if (!sync();在 addObserver 方法中,它主要干这几件事情首先,先初始化状态, 判断当前 mState 是否是 DESTROYED,如果是将初始状态置为 DESTROYED,否则为 INITIALIZED,接着用 ObserverWithState 包装 observer 和 初始化状态 initialState。
2024-11-27 11:39:02 692
原创 Android LayoutInflater深度解析 给你带来全新的认识
ListView的Item的布局文件:ListView的适配器:@Override@Override@Override@Override} else主Activity:@Override好了,相信大家对这个例子都再熟悉不过了,没啥好说的,我们主要关注getView里面的inflate那行代码:下面我依次把getView里的写成:分别看效果图:图1:图2:图3:嗯,没错没有图3,第三种写法会报错。
2024-11-27 11:37:01 707
原创 Android JS解析引擎 Rhino 使用笔记(不借助webview)
- 对 JavaScript 1.5 的完全支持- 直接在 Java 中使用 JavaScript 的功能- 一个 JavaScript shell 用于运行 JavaScript 脚本- 一个 JavaScript 的编译器,用于将 JavaScript 编译成 Java 二进制文件github 地址:https://github.com/mozilla/rhinoRhino 官网地址 : https://developer.mozilla.org/zh-CN/docs/Mozilla/Projects/
2024-11-27 11:33:00 857
原创 Android JNI初识 HelloWorld
完成上述步骤就已经配置好了NDK,我们来看看比一般的项目多了哪些东西.[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-ELqGtcOA-1572240983910)(http://olg7c0d2n.bkt.clouddn.com/18-9-20/55579079.jpg)]
2024-11-27 11:30:59 948
原创 Android Jetpack:利用Palette进行图片取色_android 提取 图片 颜色
通过一个PaletteAsyncListener来获取Palette实例,这个接口如下:提取颜色有了Palette实例,就可以通过Palette对象的相应函数就可以获取图片中的颜色,而且不只一种颜色,下面一一列举:这些函数都需要提供一个默认颜色,如果这个颜色Swatch无效则使用这个默认颜色。光这么说不直观,我们来测试一下,代码如下:运行后结果如下:这样各个颜色的差别就一目了然。除了上面的函数,还可以使用这个函数,如下:这个函数需要一个Target,提供了6个静态字段,如下:其实就是对应着上面除了
2024-11-27 11:28:59 770
原创 Android Jetpack组件之App Startup
看完上面的话,我们知道,App Startup提供了一个来完成项目需要的一些组件的初始化,避免每个第三方的库(比如友盟统计、埋点等)单独通过进行初始化。我的理解是通过App Startup这个组件,我们可以将所有第三方需要在中初始化的一些库都通过来初始化,有点偏向于将第三方库初始化这个过程进行了封装,大概是这个意思。
2024-11-27 11:26:58 880
原创 Android Jetpack系列之Lifecycle
如果我们的Activity由于各种原因继承的不是AppcompatActivity而是Activity呢我们可以看到这个时候,就不能直接使用getLifecycle,而要自定义一个LifecycleOwner了,我们让Activity继承自LifecycleOwner,使用LifecycleRegistry定义如下:@Override@NonNull@Override这样我们就实现了自定义LifecycleOwner了,不过大多数时候我们还是不需要自定义的。
2024-11-27 11:24:58 678
原创 Android Jetpack系列之 ViewModel
ViewModel类旨在以注重生命周期的方式存储和管理界面相关的数据。ViewModel类让数据可在发生屏幕旋转等配置更改后继续存在。我们再回顾一次需求:在Activity 可见的时候,我们去做一个计数功能,每隔一秒 将计数加1 ,当Activity不可见的时候停止计数,当Activity被销毁的时候 将计数置为0,这里我们在Activity被销毁的时候不再将count置为0,WorkUtil代码如下所示:@Overridetry {count++;}).start();
2024-11-27 11:22:56 765
原创 Android Jetpack 架构组件最佳实践之“网抑云”APP
七、vlayout嵌套横向RecyclerView和Banner 实现主页的展示,自定义Moshi的JsonAdapter。四、使用 TabLayout,ViewPager2 ,RecyclerView实现实现歌单广场页面。二、Navigation实践之实现APP主框架以及Navigation的相关介绍。五、歌单页面MVVM架构改造及其ViewModel和LiveData的使用介绍。十三、Kotlin Flow项目实战-网络、数据库和UI的应用。十、ExoPlayer进行视频播放的实现。
2024-11-27 11:20:55 226
原创 Android Jetpack 之ViewBinding和DataBinding
接下里我们就可以直接使用id对应的控件了@Override});运行结果如图ViewBinding只是为了替代findViewById,优点就是空安全,不过有了kotlin-android-extensions之后,ViewBinding用的应该比较少了吧。
2024-11-27 11:18:54 767
原创 Android jetpack zui佳总结和实践
(1)在MVP架构中,Presenter中持有View层的引用,如果生命周期处理不当,会存在内存泄露的风险。在MVVM架构中View层和VM层通过LiveData通信,避免了内存泄漏。。(2)传统MVP架构由于各层之间的通信是通过接口,所以会导致接口数量惊人,上诉架构通过观察者模式(LiveData)避免了接口问题。如果在上诉架构中加入Databidning。实现View和Model的双向绑定接可以演变成MVVM架构。
2024-11-27 11:16:53 788
原创 消息中间件学习笔记--RabbitMQ(三、模式实例),2024年最新Java社招最全面试题
/创建连接工厂//设置RabbitMQ相关信息//创建一个新的连接//创建一个通道i < 100;i++) {String message = "direct 消息 " +i;//发送消息到队列中System.out.println("发送消息: " + message);//关闭通道和连接。
2024-11-21 16:51:40 794
原创 最通俗易懂的 volatile 关键字详解,看完不懂你打我!,2024年最新java技术面试总结评语大全
并发三特征可见性和有序性和原子性中,volatile通过新值立即同步到主内存和每次使用前从主内存刷新机制保证了可见性。通过禁止指令重排序保证了有序性。无法保证原子性。而我们知道,synchronized关键字通过lock和unlock操作保证了原子性,通过对一个变量unlock前,把变量同步回主内存中保证了可见性,通过一个变量在同一时刻只允许一条线程对其进行lock操作保证了有序性。
2024-11-21 15:38:52 422
原创 数据异构之 Canal 初探(技巧篇),2024年最新java面试常见算法题
在 Linux 环境中安装 canal 比较简单,大家可以安装官方手册一步一步操作即可,在这里我就不重复介绍,本节主要的目的是希望在开发工具中运行 Canal 的 Demo,以便后续在研究源码的过程中遇到难题时可以进行 Debug。接下来我根据官方的一些提示,结合自己的理解,编写出如下测试代码,在 IDEA 开发工具中实现运行 Canal 相关的 Demo。eventSink (Parser和Store链接器,进行数据过滤,加工,分发的工作)
2024-11-21 14:30:17 604
原创 排序算法-基数排序,2024年最新java多线程实战指南pdf
第二轮:按十位取出,十位没数则补0,在取出放入原来数组。第一轮排序:将每个数个位取出,看这个数应该放在哪个桶。按照数组下标,取出数据,放入原来数组。
2024-11-21 13:18:06 77
原创 我在北京已经几年了,2024年最新java面试总结评价
包括后来我提出要离开的时候,老板要我把下班时写的代码,我做的项目,等等,我拒绝了,当我离开的时候绊倒了。在离职的最后一周,我的工作基本上是移交的,只是需要与另一方合作重新移交工作,但在一次大型部门会议上,老板在每个人面前说,我必须将我上一位离职同事移交给我的代码改成一个她的语言(完成了)根本没有必要的工作。到达后,我很开心,新环境,新同事都很可靠,我是同事中的最低学历,他们都是硕士学位,我是学士学位,学校比我好,我们组有两个北大女生,一个大的,一个乌龟,一个北京邮报,我是当时只是一个不知名的渣滓学校。
2024-11-21 12:01:37 878
原创 微信小程序毕业设计作品成品(41)微信小程序宠物医院挂号系统设计与实现_宠物医院线上预约挂号系统的设计与实现探究意义
Vue.js入门与商城开发实战》《微信小程序商城开发》图书作者,CSDN博客专家,在线教育专家,CSDN钻石讲师;专注大学生毕业设计教育和辅导。所有项目都配有从入门到精通的基础知识视频课程,免费项目配有对应开发文档、开题报告、任务书、PPT、论文模版等项目都录了发布和功能操作演示视频;项目的界面和功能都可以定制,包安装运行!!!
2024-11-21 10:45:13 196
原创 带你彻底搞懂MyBatis的底层实现之日志模块(Log),阿里p7面试题和答案
1 LogLog接口中定义了四种日志级别,相比较其他的日志框架的多种日志级别显得非常的精简,但也能够满足大多数常见的使用了LogFactory工厂类负责创建日志组件适配器,在LogFactory类加载时会执行其静态代码块,其逻辑是按序加载并实例化对应日志组件的适配器,然后使用LogFactory.logConstructor这个静态字段,记录当前使用的第三方日志组件的适配器。具体代码如下,每个方法都比较简单就不一一赘述了。3 日志应用。
2024-11-21 09:23:41 1003
原创 基础排序算法总结(代码+图片分析),java高级软件工程师教程pdf
第一次从arr[0]-arr[n-1]中选取最小值,与arr[0]交换,第二次从arr[1]-arr[n-1]中选取最小值,与arr[1]交换,以此类推,第n-1次从arr[n-2]-arr[n-1]中选取最小值,与arr[n-2]交换,总共通过n-1次,得到一个按排序码从小到大排列的有序序列。基本思想是:通过一趟排序将要排序的数据分割成独立的两部分,其中一部分的所有数据都比另外一部分的所有数据都要小,然后再按此方法对这两部分数据分别进行快速排序,整个排序过程可以递归进行,以此达到整个数据变成有序序列。
2024-11-21 05:57:36 885
原创 基于java+mysql+JDBC+tomcat+Servlet+JSP+js的学生管理系统,阿里巴巴Java面试都问些什么
/ User user=new User(“慧宝”,1001,“520”,“1314”,1,0);//u_role为1表示普通用户,为0为管理员,u_isdelete为0表示还在,为1表示已删除。//u_role为1表示普通用户,为0为管理员,u_isdelete为0表示还在,为1表示已删除。//实现登录服务层的业务逻辑层,从服务层service到持久层dao。//访问service层,在由service访问dao层。// //访问数据库。查找SearchServlet。
2024-11-21 02:44:08 846
原创 十款代码表白特效,一个比一个浪漫,rocketmq原理面试题
你与我的朝夕相伴 于我而言即是永恒 你是我一生挚爱。71 return ‘爱你一辈子’;太阳带给我们白昼和希望 月亮带给我们夜幕和宁静。如果可以请牢记当初的爱情承诺 记住最初的美好。133 // 重新初始化位置。139 // 重新初始化位置。160 // 重新初始化位置。101 // 文字位置。日为朝 月为暮 卿为朝朝暮暮。
2024-11-20 23:22:08 107
原创 使用 HTML、CSS 和 JS 创建在线音乐播放器(含免费完整源码),java反射原理面试题
opacity: 0;opacity: 1;您可以看到我们在这里使用了 CSS 变量,因此我们将来可以轻松更改此音乐播放器主题。请注意,这是为移动视图设计的,这就是为什么我使用 chrome 检查器以移动尺寸查看它的原因。现在创建水平滚动播放列表。放在里面。
2024-11-20 19:55:36 539
原创 业界率先支持 MCP-OVER-XDS 协议,Nacos 2,2024年最新清华大学出版社java基础入门课后题
随着 Nacos 2.0.1 及 1.4.2 的发布 Nacos 社区又新增了一位 Committer:haoyann,这位同学在推进多数据源支持、鉴权及安全性、配置模块优化与完善等内容中作出许多贡献,并积极参与社区讨论。该版本优化了 JRaft 模块,与最新的 nacos-k8s 项目配合使用,极大增强集群选主的稳定性。另外,该版本了修复有关“Server is Down”问题的提示及众多 1.4.1 版本中的 Bug。
2024-11-20 16:35:37 718
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人