Talk is cheap, show me the fucking code.
Activity添加进入和退出动画的两种方式,解决黑色区域问题
Android获取Bitmap网络图片类型
在集成微信分享的过程中,如果`缩略图`是url形式,或者`大图分享`的图片是个url,就需要我们先把图片下载下来,然后依据微信的要求对图片做一些压缩操作,最后将图片的数据设置给要分享的对象即可。
Android实现面包屑效果,支持Fragment联动
实际开发中,UI小姐姐都会提供通用的`无数据页面`、`错误提示页面`。 针对常见的`支持下拉刷新和上拉加载更多的列表页面`,将他们的通用逻辑抽取出来,这样我们在开发过程中就只需要关注具体的业务逻辑了,无需每次通过cv来完善`无数据页面`、`错误提示页面`的逻辑了。
java中整型数据(byte、short、int、long)溢出的现象及原理
Android实现连线题效果
WeChatOpenSdkSample项目无法打开,报Gradle错误
ViewPager是一个很常见的组件,不仅支持收拾滑动切换页面,我们还可以通过`viewPager.setCurrentItem(index)`来切换到指定的页面,那么他们如何区分呢? 我们知道ViewPager可以添加`ViewPager.OnPageChangeListener`监听器,可以监听切换的状态。通过观察`ViewPager.OnPageChangeListener#onPageScrollStateChanged(int state)`方法中state的输出,发现了手势切换和自动切换的规律。
使用greendao存储数据过程中,我们会遇到bean嵌套的情况,这种情况怎么处理呢?我们需要用到greendao提供的`PropertyConverter`来处理。
熟悉rxjava的同学肯定对操作符不会陌生,比如我们使用map操作符处理数据,使用zip操作符合并多个请求,这里演示下zip操作符的对error情况的处理。 比如说我们同时请求了两个接口,在两个接口都响应的情况下才会展示数据,这里我们使用zip操作符来实现。
开发中经常会遇到让TextView字体大小自适应的需求,ios端可以自适应大小,Android不行,我们需要单独处理。 当然了,针对的肯定是单行的TextView,如果是多行的,还需要加入行数这个变量。
获取textview行数
版本号对比的工具类
Android Studio无法执行Java main方法的问题
Android Studio 3.6.1设置gradle的离线模式(Offline Mode)
glide的error和placeholder支持.9patch
正则表达式获取img的src内容
正则表达式匹配html标签,获取标签内容
Android自定义属性爆红的问题
bug系列—1像素引发的血案
开发中经常会遇到字体加粗的需求,在使用系统字体的情况下,我们一般是通过在布局文件中给TextView设置`android:textStyle="bold"`属性。 如果你们的设计师小姐姐不想使用Android的这种加粗效果,只是想要接近于`PingFang SC Medium`的效果,那么TextView的`bold`就有点没脸看了。
ConstraintLayout实战小技巧—实现布局跟随效果
TextView文本尾部添加标签,支持自动换行
做过屏幕适配的同学都知道Android的NavigationBar适配是个问题,尤其是那些NavigationBar还可以动态隐藏显示的,那就更蛋疼了。
开发过程中我们经常会遇到各式各样的bug,比如说测试小姐姐告诉我们,由于无操作,某个按钮她`快速点击了两次`(或者由于卡顿之类的延迟),`打开了两个详情页`,希望把这个`禁止掉`,只让打开一个详情页。
Android加载drawable中图片后自动缩放的原理
RecyclerView常用方法总结
RecyclerView实现吸底效果—ItemDecoration
Android中的Intent分为两种类型: * `显式 Intent`:按名称(完全限定类名)指定要启动的组件。 通常,您会在自己的应用中使用显式 Intent 来启动组件,这是因为您知道要启动的 Activity 或服务的类名。例如,启动新 Activity 以响应用户操作,或者启动服务以在后台下载文件。 * `隐式 Intent` :不会指定特定的组件,而是声明要执行的常规操作,从而允许其他应用中的组件来处理它。 例如,如需在地图上向用户显示位置,则可以使用隐式 Intent,请求另一具有此功能的应用在地图上显示指定的位置。
Android使用本地svg及不显示问题解决
最近的开发过程中,发现存在ScrollView和HorizontalScrollView无法设置点击事件的现象。 我们知道,通常在设置点击事件时,位于View树上方的子View的OnClickListener,会优先于父View的OnClickListener执行。 开发过程中我们会经常使用类似的方式来给布局设置点击事件,比如给ListView的Item背景设置OnClickListener,用于点击item空白区域的跳转操作;然后再给item内部的子元素分别设置OnClickListener用于各自不同的点击操作。
在使用Android Studio开发时,经常会遇到logcat的日志无法显示的问题。比如说app运行时发生了崩溃,logcat中的日志就一闪而过,当Activity重启过后,logcat的日志就是新的日志了,无法显示刚才奔溃时的日志,这就很蛋疼。 那么有没有什么好办法让我们看到刚才的日志呢?办法当然是有的,在终端中输入`adb logcat`,就可以看到跟logcat中一毛一样的日志了。
开发中我们经常会遇到绘制虚线的需求,一般我们使用一个drawable文件即可实现,下面我会先列举常规drawable文件的实现方式。
最近在学习kotlin,学习到协程库这一块了,针对Android的话就是coroutines-android库。本来学习就不容易了,再加上kotlin现在还处于快速变化期,那个酸爽简直了,废话不多说,进入正题。
kotlin中书写点击事件的几种方式
gradle中统一配置版本的小技巧。
构建时报下面这个错误: ```javascript * What went wrong: A problem occurred configuring project ':app'. The SDK directory '/Users/xxx/Documents/develop/sdk' does not exist. ```
对于android开发同学来说,数据库相关操作是我们日常操作之一,相应的数据库的升级操作就必不可少了。这里我总结下数据库升级时需要注意的事项。 Android中数据库操作的核心类是SqliteOpenHelper,这个类有两个方法,onCreate和onUpgrade。onCreate方法只会调用一次,onUpgrade方法会在版本号增加之后触发。 数据库升级的操作过程中,我们需要处理的情况有两种,第一种是数据库从低版本升级上来的,第二种是新安装app的用户。
Sqlite数据库升级时,我们经常会遇到给已有表中增加字段的操作。一般来说,**给已有表中增加字段**是数据库操作中的基操,没必要再专门写篇blog记录的,但是sqlite对SQL语句支持的不够彻底,比方说这次我们用到的"ALTER TABLE"命令。
maven安装与zsh环境变量配置
算法和数据结构是程序员逃不过的一个坎,所以趁着闲余时间,开始学习基础的算法和数据结构。这里记录下自己实现简单的单项链表的过程,如有错误,敬请指正。
有一个单向链表,链表当中有可能出现环,就像下图这样。我们如何判断一个单向链表是否有环呢?
Java实现两个有序的链表合并
问题描述: 给你一个单向链表,删除链表倒数第n个结点,然后返回head结点。这里的数字n是有效数字。
#### 概念 先进者先出,这就是典型的“队列”。(First In, First Out,FIFO)。 我们知道,栈只支持两个基本操作:入栈push()和出栈pop()。队列跟栈非常相似,支持的操作也很有限,最基本的操作也是两个:入队和出队。入队 `enqueue()`,让一个数据到队列尾部;出队 `dequeue()`,从队列头部取一个元素。
Java数组实现循环队列
栈(stack)又名堆栈,它是一种运算受限的线性表。其限制是仅允许在表的一端进行插入或者删除运算。后进先出(Last In First Out)。 栈中的数据操作主要有push(压入)和pop(弹出)操作。 实际上,栈就可以用数组来实现,也可以用链表来实现。用数组实现的叫做顺序栈,用链表实现的叫做链式栈。 为了简单起见,我们的栈不支持泛型。
Flutter环境搭建、运行gallary项目
最近项目中用到了react,需要在父组件中调用子组件的某个方法,那么如何获取到子组件的实例呢? 这里使用了回调,简单实用,兼容低版本。