Cafeting

一个人的行走范围,就是他的世界。

使用 RadioGroup 和 ViewPager 实现更加可定制的效果。

背景

昨天设计图刚出一点,写了《Android 必知必会 - 动态切换着色模式和全屏模式》,记录了动态修改页面显示模式的方式。今天又有新图,不过设计师只考虑 iOS 平台的设计,拿到设计图发现 TabLayout + ViewPager 的套路实现起来很麻烦,考虑了下,为了方便,决定使用 RadioGroup + ViewPager 来实现,之所以使用 RadioGroup ,是因为它内部多个 RadioButton 的状态是互斥的,也就是只有一个是选中状态,不需要我们进行多余的处理。总体来说比较简单,就是细节略多了点。

主要知识点:

  • 自定义 RadioButton 样式 : selector + shape
  • 自定义 RadioButton 文字样式 : selector
  • ViewPager + Fragment 及其适配器
  • RadioGroup 状态监听
  • ViewPager 页面切换监听
阅读全文 »

通过代码动态切换页面的着色模式全屏模式,兼容 Android 4.4 +

本文假设读者已经了解着色模式和全屏模式(沉浸模式)。

背景

公司的 APP 设计图仅有 iOS 版的,对于 Android 平台,它整体算是着色模式,但是在个人页面是全屏模式(沉浸模式),实现设计图时,我使用的是一个 Activity + 四个 Fragment 实现的。

阅读全文 »

两种使用 BitmapTransformation 来实现Glide 加载圆形图片和圆角图片的方法。

背景

Glide 并不能直接支持 Round Pictures ,需要使用 BitmapTransformation 来进行处理。

Round Pictures: CircleImageView / CircularImageView / RoundedImageView are known to have issues with TransitionDrawable (.crossFade() with .thumbnail() or .placeholder()) and animated GIFs, use a BitmapTransformation (.circleCrop() will be available in v4) or .dontAnimate() to fix the issue.

这里介绍下网上常见的方式和使用 RoundedBitmapDrawable 两种方法,本质上是差不多的:

  • 使用 CanvasPaint 来绘制
  • 使用 Android.support.v4.graphics.drawable.RoundedBitmapDrawable

PS: RoundedBitmapDrawablesupport.v4 下的一个类,想了解更多,可以阅读我之前的文章:Android 必知必会-使用 supportV4 的 RoundedBitmapDrawable 实现圆角

阅读全文 »

使用 LeanCloud 的 REST API 来自定义短信验证码相关功能,不再需要臃肿的 SDK 。

背景

公司的项目仅仅使用了 Leancloud 短信功能来发送验证码,刚开始 Leancloud 的短信 SDK 还会和项目中的 okhttpfastjson 产生冲突,后来使用了独立的命名空间解决了冲突,但这样处理会导致项目中产生大量的冗余库。在仅仅使用短信验证码功能 SDK 的情况下会有下列文件被引入到项目中:

  • avoscloud-sdk-v3.13.8.jar
  • fastjson-1.1.39-leancloud.jar
  • okhttp-2.6.0-leancloud.jar
  • okio-1.6.0-leancloud.jar

本来开发 Android 时,大家都尽量避免触碰 64K 个方法的限制,对于发验证码这样一个简单的事情,还需要引入大量的第三方库实在是难以接受。

在目前开发的新项目中,我尽量控制第三方库的筛选和使用,不想引起启用 Multidex 导致应用启动慢的问题。直到我发现 Leancloud 的 REST API ,顿时觉得里面有搞头,对,大有搞头

阅读全文 »

背景

Android 的 classLoader 在加载 APK 的时候限制了class.dex 包含的 Java 方法数,其总数不能超过65535(64K,不要再说成 65K 了,1K = 2^10 = 1024 , 64 * 1024 = 65535),Google 官方给出的解决方案是使用 Multidex

启用 Multidex

基本要求:

  • 使用 Android Studio 开发工具
  • Android SDK Build Tools >= 21.1
  • 更新 Android Support Repository 到最新版本

配置步骤:

  1. 配置 Gradle build 来开启 multidex
  2. 修改 manifest 来引用 MultiDexApplication 类
阅读全文 »

背景

今天阅读了两篇 Android Splash 页秒开的文章,就上手试了试,效果确实不错,不过在使用过程中发现个小的问题,应用是发现在 Android 6.0 系统下 APP 启动的时候有个默认的动画,如果按照文章介绍的直接启动下一个加载数据的页面会出现页面闪动,有点美中不足的感觉。

阅读全文 »

剪不断的情缘

之前写了一篇 在自己的服务器上安装GitBook ,发布于 2015-04-20,当时的安装环境是 CentOS 6.X_64Bit,今天想再研究一下这个 GitBook ,发现在基于 Linux 内核的机器上安装基础功能很简单,但是牵涉到生成 pdf/epub/mobi 格式的书籍时,安装calibre的代价非常大(因为要安装 N 多前置库),对于不是非常非常熟练使用 Linux 的用户,几乎是一种灾难。

然而,对于 OS XWindows 用户,则相对容易很多(Windows环境未测试),安装相应的 calibre 的客户端即可解决格式转换的问题。

阅读全文 »

前几天重写了2014年发布的 超高速前端开发工具——Emmet ,主要是优化了代码段的格式,更加易读。今天在 MacBook 上安装了 Sublime Text 3 ,在安装一系列的插件时被网络问题影响到,这里介绍下安装过程,包含本地安装的情况。

1. 安装 Package Control

这里我们访问 Package Control 官网 ,按照步骤即可:

1. 打开命令行

使用快捷键 **ctrl+` ** 或者在菜单中点击 View > Show Console

阅读全文 »

内容持续更新中,更新日期:2016-08-11

1. 程序启动图标(icon launcher)

放在mipmap-*dpi下,文件名为ic_launcher.png

  • LDPI (Low Density Screen,120 DPI),其图标大小为 36 x 36 px。
  • MDPI (Medium Density Screen, 160 DPI),其图标大小为 48 x 48 px。
  • HDPI (High Density Screen, 240 DPI),其图标大小为 72 x 72 px。
  • xhdpi (Extra-high density screen, 320 DPI),其图标大小为 96 x 96 px。
  • xxhdpi(xx-high density screen, 480 DPI),其图标大小为144 x 144 px。
  • xxxhdpi(xxx-high density screen, 640 DPI),其图标大小为192 x 192 px。

技巧:自动生成对应分辨率的 icon launcher

新增于2016-08-11

使用 Android Studio ,在 module或者 drawable 上右键 new > ImageAsset ,可以把一张大图自动裁切成各 DPI 对应的分辨率的 icon launcher。

阅读全文 »
0%