Yomii Blog

Time is short!

Mac 下的 Android 开发环境配置

从 windows 转到 Mac Os 进行 Android 开发,对系统不熟,软件配置上遇到很多麻烦事,只能一步一步摸索,开一贴记录历程。 操作环境 MacBook Pro (15-inch, 2016) macOs version: 10.12.4 环境变量配置 mac 下配置环境变量使用 .bash_profile 配置文件,当然还有别的途径不过为了简单只说这一种。 以配置 a...

Android GridLayout 动态添加子控件 + 平均分配空间

有时候会遇到这样的需求: 要求子控件网格布局,平均分布 内容根据接口动态加载 父控件充满界面剩余空间,不可滑动 看到 1 和 2 的时候 GridView 和 RecyclerView 都能胜任,但是不可滑动这个需求就需要对他们做特殊处理,并且不容易做分辨率适配,这时候用 GridLayout 动态加载做起来更简单。 使用GridLayout 导入 v7 包的 Grid...

ScrollView的滑动状态监听

ScrollView没有提供滑动状态的相关监听, 因此可以通过接口暴露一些需要的状态值 public interface ScrollViewListener { /** * 获取滑动增量, 可用于伴随动画等 */ void onScrollChanged(ObservableScrollView scrollView, int x, int y, ...

自定义分享界面 动态创建模糊背景

分享页面要求做一个背景半透明模糊效果, 记录一下过程, 另外分享窗口是需要部分自定义的, 直接改ShareSDK的页面代码 效果 添加gradle支持 在android下的defaultConfig代码块进行如下设置 defaultConfig { ...... renderscriptTargetApi 18 renderscriptSupportMod...

获取网络图片的 ImageSpan

TextView做图文混排时可能用到Html下的ImageGetter工具或者ImageSpan。 ImageGetter获取网络图片的例子很多, 但是如果文本中不包含图片的宽高信息,那么考虑预留多少空间是挺麻烦的事。 本例使用ImageSpan+Glide获取网络图片, 适用于文本内容较短的场景(因为获取到图片后会刷新控件,内容多会卡顿)。图片加载库换成类似的也行, 原理都一样 效果...

使用 PopupWindow 模仿 ActionBar 下拉菜单效果

效果 设置布局 代码 public class PopupOverFlow extends PopupWindow implements View.OnClickListener, PopupWindow.OnDismissListener { public PopupOverFlow(Context context) { // 设置SelectPicPo...

Android 性能优化实例:通过 TraceView 定位卡顿问题

背景 项目中使用了鸿洋大神的TreeView树状结构控件, 但是由于在主线程中使用了注解/反射来定位节点, 内容一多就有点卡顿。因此通过android device monitor中的性能分析工具定位并优化这一问题并记录过程。 树状结构控件看这里 其他优化内容可以看 Android性能优化 准备工作 打开tools菜单 —— android——android device m...

View 绘制流程

View 树的绘图流程 当 Activity 接收到焦点的时候,它会被请求绘制布局,该请求由 Android framework 处理.绘制是从根节点开始,对布局树进行 measure 和 draw。整个 View 树的绘图流程在ViewRoot.java类的performTraversals()函数展开,该函数所做 的工作可简单概况为是否需要重新计算视图大小(measure)、是否需要重...

Atom 编辑器

一、概述 Atom 是 Github 专为 hacker 推出的开源的文本编辑器,支持 linux、window 等多平台,界面简洁优雅,而且支持 markdown 语法,Atom 提供非常方便进行主题二次开发,插件扩展化等非常适合定制,并且可以直接方便得修改所有相关的 config 配置,可以打造自己独有的编辑器。 关于 atom 很多操作都在 Settings 菜单里,进入方式:...

单例模式的几种写法

一、饿汉 没有多线程同步问题,但会在类加载时实例化,没有lazy loading效果。 public class Singleton { private static Singleton instance = new Singleton(); private Singleton (){} public static Singleton getInstance() ...