Android中分割线的常见做法

背景

平时我们在开发中做分割线是非常频繁的事情,这里总结一下水平、垂直的实线、虚线的常见做法。对于垂直虚线给出了比较靠谱的解决方法。

水平、垂直实线

1 若是在LineayLayout中需要添加分割线,可以在布局文件中使用如下两个属性:

1
2
android:divider="@drawable"
android:showDividers = "middle|end|beginning|none"
  • android:divider:可以是图片文件,也可以是xml绘制的shape。
  • android:showDividers:
    • middle 在每一项中间添加分割线
    • end 在整体的最后一项添加分割线
    • beginning 在整体的最上方添加分割线
    • none 无

ActionBar&Toolbar自定义样式总结(使用Theme.AppCompat)

以下所有的配置都在style.xml中,使用Theme.AppCompat

  • 自定义ActionBar背景、标题字体样式(背景的自定义如果配合使用Toolbar完全可以设置colorPrimary属性,没必要用以下的方法)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
<style name="CustomActionBarTheme" parent="@style/Theme.AppCompat">
<item name="android:actionBarStyle">@style/MyActionBar</item>
<item name="actionBarStyle">@style/MyActionBar</item>

<style name="MyActionBar" parent="@style/Widget.AppCompat.ActionBar">
<item name="android:background">#33B5E5</item>
<item name="background">@drawable/actionbar_bk</item>
<item name="android:titleTextStyle">@style/MyActionBarTitleText</item>
<item name="titleTextStyle">@style/MyActionBarTitleText</item>
</style>

<style name="MyActionBarTitleText" parent="@style/TextAppearance.AppCompat.Widget.ActionBar.Title">
<item name="android:textColor">#00FF00</item>
</style>
</style>
  • 自定义action button、overflow menu样式(overflow menu也就是我们通常在ActionBar右侧点击三个点出现的PopupMenu)

Android开发一周资源汇总(5)

  • 网站
  1. 干货集中营:每日分享妹子图 和 技术干货,还有供大家中午休息的休闲视频。代码家出品~
  • 文章
  1. Data Binding 用户指南
  2. 如何高效学习Android动画?:知乎上某位大牛提供了许多非常有用的学习资源。
  3. 如何使用Android Studio把自己的Android library分享到jCenter和Maven Central
  4. 从设计到实现,一步步教你实现Android-Universal-ImageLoader-缓存 :十足的好文章,对缓存实现讲解的很透彻,也有代码,推荐~
  5. 一步一步教你150行代码实现简书滑动返回效果:主要是讲解如何使用ViewDragHelper,实现的效果也挺不错的。

Android开发一周资源汇总(4)

两周时间没更新了,惭愧……

  • 文章
  1. Android屏幕适配全攻略(最权威的官方适配指导):平时在开发过程中需要做屏幕适配的时候可以看一看~
  2. LeakCanary: 让内存泄露无所遁形:业界良心Square公司推出的检测内存泄漏的开源库LeakCanary,此文做了介绍和用法。
  3. Android UI性能优化实战 识别绘制中的性能问题:讲了如何避免过度绘制的一些方法~
  4. Android 使用Loader示例:之前做Android时Loader没有怎么接触过,正好公司的项目有用到这个。这篇文章说的挺全面的。
  5. 使用Android Studio进行单元测试:教你怎么在AS上做单元测试,有人发教程还是好的~
  6. Google I/O 2015 为 Android 开发者带来了哪些福利?:不解释!

使用SectionIndexer实现微信通讯录的效果

最近在公司项目中看到用SectionIndexer来实现ListView的分组滚动实现通讯录导航的效果,这里我单独的写个demo出来。

SectionIndexer:根据官方文档说,它是一个给Adapter去实现、用来在AbsListView中实现section之间的快速滚动的接口(翻译拙计见谅)。一个section相当于一组具有共同特性的list数据。比如,它们有相同的首字母。

知道它的定义了,那怎么使用它呢?本人口拙,咱们还是上代码说话~

先看要实现的效果图:

SectionIndexerDemo.gif

如何写线程安全的单例模式

前几天面试要写一个单例模式,我想这还不简单,唰唰几下后面试官又抛出了问题:如何应对多线程并行使用的情况?oshit……之前写单例都没有特别考虑过线程安全的问题,当时我是在获取实例变量的方法改成了同步方法,面试官说这样并不高效,同步操作只会在第一次调用时才被需要。当时有点懵了,不知道怎么搞了,后来写了个饿汉式的单例模式给他……面试官也没深究下去,囧。

所以回来后查读了一些博文,觉的还是有必要对单例模式的写法做个总结,特别是如何写个线程安全的单例模式。

  • 懒汉式-线程不安全
1
2
3
4
5
6
7
8
9
10
11
public class Singleton {
private static Singleton instance;
private Singleton (){}

public static Singleton getInstance() {
if (instance == null) {
instance = new Singleton();
}
return instance;
}
}

这段代码很简单,也使用了懒加载。但当有多个线程并行调用 getInstance() 的时候,就会创建多个实例,显然不符合单例,这也是我当时面试时写的= =。当然如果项目中不需要针对多线程的情况时,这种写法都是适用的。

Android开发一周资源汇总(3)

  • 文章
  1. 【Android应用开发】 推送原理解析 极光推送使用详解 (零基础精通推送):讲解了Android推送的几种原理和实现方式,虽然文末是介绍极光推送的软文~
  2. Android平台上关于IM的实践总结:讲解了开发IM功能的原理和注意事项,科普文~
  3. ASimpleCache开源库使用分析:ASimpleCache是个非常轻量的缓存处理框架,本人写的业余项目也用的是这个。
  4. Google Volley使用之基础:之前一直好好研究下Volley,然后最近就找到了这篇文章~Volley使用起来也非常方便。
  5. Google Volley框架源码走读:上一篇的延伸,作者对源码的讲解挺详细的。
  6. 如何在Android开发中让你的代码更有效率:一些改善app性能方面的小tips。
  7. 在Activity中使用Thread导致的内存泄漏:开发过程中大家用Thread的频率也挺多的~文章提到了在Android的Activity中使用Thread的注意点。总结:1)由于非静态匿名内部类会持有其外部类的隐式引用,匿名内部类创建的新线程会持有一个外部 Activity 的隐式引用,导致Activity销毁时不会被垃圾回收机制回收,造成内存泄漏;2)由于DVM虚拟机总会使硬件持有所有运行状态的进程的引用,结果导致处于运行状态的线程将永远不会被回收。因此,你必须为你的后台线程实现销毁逻辑。

Android开发一周资源汇总(2)

  • 网站
  1. 博览网:一个在线学习的视频网站。主要是上面提供谷歌开发者视频(有字幕)~
  2. 开发技术前线:一个各个IT领域 ( 前期只有Android和iOS )高质量技术文章、开源库、技术咨询的聚合网站。个人感觉很不错。
  • 文章
  1. Android初级教程_获取Android控件的宽和高:讲解了在onCreate()中获取控件的宽和高的三种方法。
  2. Android判断APP是否在前台运行:文章中使用sdk提供的Application.ActivityLifecycleCallbacks接口监听home键事件。
  3. 实现Instagram的Material Design概念设计:手把手教你如何写一个Material Design的应用,强烈推荐!
  4. DiskLruCache源码解析
  5. Android Support Library 22.1 发布:新版本support包的分析,很好很强大!
  6. 安卓中的Model-View-Presenter模式介绍:这是一篇观点比较激进的文章,完全否定了MVC模式在安卓开发的中的意义,认为其是没有任何用处的。这篇文章因为使用了静态变量来定义Presenter,因此在原文的评论部分也受到一些争议。

Android开发一周资源汇总(1)

作为一名开发者,每天都在浏览Android开发相关的文章、网站,一有好的东西就收藏到收藏夹里,虽然收藏夹已经做了分类,但难免找起来还是太麻烦。今天突然想到我何不把优质的文章、网站贴在自己的博客中呢,既是作为每周的文章汇总整理,又能分享给大家。

千里之行始于足下,希望我能坚持写下去,开始今天的内容吧:

  • 网站
  1. android-tech-frontier:一个定期翻译、发布国内外Android优质的技术、开源库、软件架构设计、测试等文章的开源项目。上面的文章都是翻译自AndroidWeekly等国外开发论坛的,非常前沿(翻译的各位大神也老牛逼了- -),非常值得star。
  2. Android科学院:近不久创建的Android开发专栏,分享android开发动态。知乎出品~
  3. App开发日报:每天分享几篇app开发的博文(IOS、Android),关键是每天更新~这个网站还有许多其他的日报系列,也挺不错的。
  4. Point-of-Android:Android一些重要知识点解析整理。忘记是怎么找进来的,汇总了android各方面的知识的博文,补充知识点很适合。
  5. 泡在网上的日子:这个网站貌似上的人挺多的,关于Android开发的文章质量挺全挺不错的,就是不知道有多少是原创的……
  • 文章
  1. Android最佳实践之UI篇:关于Android界面开发的tips,很好很强大!
  2. Android Studio 入门指南:很好的入门文章。如果你还没用AS,赶紧用起来~开发效率比Eclipse高出好多。
  3. android内存优化总结
  4. 每个Android开发者必须知道的内存管理知识
  5. 缓存、缓存算法和缓存框架简介:深入浅出讲了如何实现缓存算法的问题。