
Android
文章平均质量分 61
天-涯-路
这个作者很懒,什么都没留下…
展开
-
记一次`RecyclerView`嵌套`FlowLayout`滑动后`FlowLayout`子`View`内容丢失问题的排查解决过程
记一次`RecyclerView`嵌套`FlowLayout`滑动后`FlowLayout`子`View`内容丢失问题的排查解决过程原创 2022-02-23 20:47:53 · 605 阅读 · 0 评论 -
防抖(debounce)和节流(throttle)
一、概念防抖(debounce)和节流(throttle)都是为了防止短期频繁的相同事件触发导致资源消耗过快的问题,而实际上并不需要对所有的事件进行及时响应。二、防抖debounce和节流throttle的区别throttle保证在每个 deltaT 时间内至少执行一次,而debounce没有这样的保证;体现在实现层面上的区别就是每次事件触发时参考的【时间点】对于debounce来说是【上一次触发的时间】,并且在延时没有结束时会重置这个延时,而对于throttle来说是【上一次handler执行的时间原创 2022-01-21 18:13:49 · 1236 阅读 · 0 评论 -
MAC下逆向Adnroid应用
文章目录一、安装工具1.1 安装`apktool`1.1.1 下载1.1.2 配置1.2 安装`dex2jar`1.2.1 下载1.2.2 配置1.3 安装`JD-GUI`1.3.1 下载1.3.2 安装二、实施逆向1.1 获取`xml`反编译文件和`smail`代码1.2 反编译`class.dex`文件1.2.1 分块反编译1.2.2 全量反编译1.3 查看`jar`文件代码三、后记一、安装工具Android逆向需要三个工具apktool、dex2jar和JD-GUI,其作用如下:apktoo原创 2020-08-05 19:52:40 · 859 阅读 · 0 评论 -
Android View的绘制流程之测量、布局、绘制源码(API 26)分析
文章目录一、预备知识1.1 顶层视图`DecorView`以及`ViewRootImpl`对象的创建过程1.2 顶层视图`DecorView`分发的三大绘制流程二、三大绘制流程2.1 `View`的测量过程(`measure`)2.1.1 非`ViewGroup`类型的`View`的测量过程2.1.2 `ViewGroup`类型的`View`的测量过程2.2 `View`的布局过程(`layout`)2.2.1 非`ViewGroup`类型的`View`的布局过程2.2.2 `ViewGroup`类型的`V原创 2020-07-30 11:14:30 · 285 阅读 · 0 评论 -
Android之 inflate() 方法总结
文章目录一、引言二、源码分析2.1 源码跟踪2.2 结论一、引言inflater.inflate(R.layout.layout_inflate_test,null);inflater.inflate(R.layout.layout_inflate_test, root,false);inflater.inflate(R.layout.layout_inflate_test, root,true);做Android这么久,经常会看到上面三个方法,只知道这是通过布局资源id解析xml文件并返回Vi原创 2020-07-24 18:16:45 · 2016 阅读 · 0 评论 -
Android Studio查看源码时出现Sources for ‘Android API 30 Platform’ not found 的 解决方法
Android Studio 默认的 compileSdkVersion 是30,但是 SDK Platforms 中并未提供 API 30 源码下载,所以报如上错误。Android Studio --> Preferences & Behavior --> System Settings --> Android SDK --> SDK Platforms:AndroidStudio-Sources for 'Android API Platform' not foun.原创 2020-07-22 12:06:42 · 10938 阅读 · 4 评论 -
Activity和Fragment生命周期
Activity的生命周期Activity的生命周期中有7个方法,Fragment生命周期中有11个方法Activity和Fragment生命周期对比Activity生命周期中除了以下6个方法外还有一个restart()方法,该方法在该Activity从不可见(仍存在)到重新可见时调用代码package com.example.asus.animport;import andro...转载 2019-09-07 15:43:16 · 1663 阅读 · 1 评论 -
Android分别用TextView和WebView加载HTML
后端可能会用用富文本编辑器编写生成不同样式的HTML文本传给前端显示,Android有两种方式来处理,一种是用TextView,一种是用WebView. 先把两种方式的差异写在前面,请据此来酌情选择.TextView:TextView仅支持HTML的部分标签属性,本人亲测不支持的包括color的rgb表示形式,font-size,font-family等,此时仅仅会显示文本,不过...原创 2019-02-15 18:40:25 · 4053 阅读 · 2 评论 -
Android之自定义的水平方向的直方图
先上效果图: 本文采用了两种方式实现了如上效果。 方案一:完全自定义的View填充。 自定义HorizontalBarChart的思路为:使该控件继承自RelativeLayout,然后根据传入的数据组装并填充item布局;声明一个线性布局,将这些item布局依次添加到线性布局中(还需要额外添加头布局和尾布局);然后声明一个ScrollView,将线性布局添加到S...原创 2018-11-07 18:52:54 · 661 阅读 · 0 评论 -
自定义ViewPager的Tab指示器
先看示例效果图: 自定义View的核心为上半部分的指示器,该需求为的是实现等级列表的展示:每个ViewPager指向一个等级,当滑动到一个ViewPager时其指示的圆点变大,用户所达到的等级用黄色的线画圆点,未达到的等级则用白色来表示。 下面考虑具体实现:指示器布局包含在一个宽度很长的线性布局中,然后就是画所有的线和圆点(注意线长度最好根据屏幕宽度和布局左边的ma...原创 2018-11-02 17:46:45 · 458 阅读 · 0 评论 -
嵌套的RecyclerView实现带标题列表
先上效果图: 本文实现了一个带标题的列表,采用嵌套RecyclerView来实现,外层布局的item为标题+RecyclerView,内层布局就是时间线的列表了。适配器代码如下:public class NestedRcvAdapter extends RecyclerView.Adapter<NestedRcvAdapter.ViewHolder>{ ...原创 2018-11-01 16:06:32 · 6903 阅读 · 0 评论 -
Android之ScrollView滚动到指定位置
一、ScrollView滚动到顶部或者底部:ScrollView scrollView = (ScrollView) findViewById(R.id.scroll_view);scrollView.post(new Runnable(){ @Override public void run(){ //滚动到底部 scrollview.fu...原创 2018-10-23 18:32:17 · 13085 阅读 · 0 评论 -
用RecyclerView实现带标题的GridView替换方案
废话不多说,先上图: 本文实现了一个带标题的GridView替换方案,用RecyclerView实现。适配器关键代码如下: @Override public RecyclerView.ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) { if(isTitle(viewType...原创 2018-10-08 21:15:35 · 2599 阅读 · 0 评论 -
EditText默认不抢占页面焦点
解决方案:一、可以其父容器或者写一个不会察觉的view来抢占它的焦点,加入如下代码就可以获取焦点:android:focusable="true" android:focusableInTouchMode="true"二、当方法1不起作用时可以尝试在AndroidManifest.xml中的Activity标签中添加如下属性:android:windowSoftInputM...原创 2018-09-15 10:24:47 · 587 阅读 · 0 评论 -
Android 动态添加view或item并获取数据
按照国际惯例,先上图:核心代码在于以下两点: /** * 添加item */ private void addViewItem(){ View viewItem = LayoutInflater.from(this).inflate(R.layout.item_add_vip_num, llVipNumContainer,false); ...原创 2018-09-12 21:27:59 · 4048 阅读 · 4 评论 -
字符串处理之查找并加粗两个*之间的文字
Android有这么一个需求:后台返回一个字符串,其中有若干个‘*’,要求加粗两个‘*’之间的文字(连续‘*’算做一个),并且去掉相应的‘*’。 public static SpannableString getSpannableString(String text) { SpannableString msp; if(TextUtils.isEmpty...原创 2018-09-11 12:06:32 · 1582 阅读 · 0 评论 -
Android中ListView结合HorizontalScrollView实现水平和竖直方向上的滚动效果
一言不合先上图: 本文实现上图效果采用了两种方案: 方案一:采用头布局+左右两个ListView实现,头布局的右半部分以及右边的ListView完全包含在自定义HorizontalScrollView中。 首先自定义一个CusHorizontalScrollView,在其中声明另一个HorizontalScrollView mView,添加set方法,复写...原创 2018-07-19 13:18:17 · 2415 阅读 · 2 评论 -
Android反编译三件套
本文介绍Android逆向工程之反编译三件套:apptool、dex2jar、jd-gui。三件套的作用分别如下: apktool: 可以获取资源文件,提取出图片文件和布局文件。 dex2jar: 将APK反编译成java源码(classes.dex转化为jar文件)。 jd-gui: 查看APK中classes.dex转化出的jar文件,即源码文件。操作步骤: a. 将要...原创 2018-03-02 10:55:41 · 1900 阅读 · 0 评论 -
Android Studio下三种包名的修改方法
Android下有三个地方涉及到包名:工程包名、AndroidMainfest文件中包名以及gradle文件中的applicationId所指的包名。需要注意的是工程包名可以和另外两种包名不同。 Eclipse时代AndroidManifest文件中的包名兼具了App的唯一标识符和App资源(R文件)引用包名的双重功能;Android Studio时代做到了这两个功能的分离:即And...原创 2018-02-28 13:54:30 · 54411 阅读 · 3 评论 -
对ZXing进行封装,整合成一个调用简单的Scanner接口
最近有用到扫描二维码和条形码的需求,看到当前主要有两个比较有名的开源库ZBar和ZXing,怀着对Google的仰慕之心,并且凭着对二维码扫码的优势,最终决定使用ZXing来进行开发。 网上已有很多大神对ZXing的使用进行了详解,但是并不是一个独立的模块,本文的思路是将ZXing再次封装,整合成一个调用简单的Scanner,仅仅对外暴露出几个回调的接口,使其作为一个独立的插件来原创 2017-11-10 15:15:30 · 670 阅读 · 0 评论