菜单(Menu)是Android应用中非常重要且常见的组成部分,主要可以分为三类:选项菜单、上下文菜单/上下文操作模式以及弹出菜单。本文只介绍Android3.0及以上的Menu知识点。
前言文件系统一直是Android开发过程中经常接触的东西。而关于内部存储、外部存储、外置存储、私有存储、公共存储,以及访问哪些文件需要申请运行时权限等问题,一直是许多开发者头疼的问题。本文就将详细地讲解这些重要而模糊的知识点。内部存储内部存储主要用于保存应用的私有文件,其他应用无法访问这些数据。当应用卸载的时候,这些数据也会被删除。使用内部存储不需要任何额外权限。写入数据
在平时的开发过程中,我们一般是通过XML文件去定义布局,所以对于LayoutParams的使用可能相对较少。但是在需要动态改变View的布局参数(比如宽度、位置)时,就必须要借助这个重要的类了。本文将结合具体场景详细讲解LayoutParams的相关知识。
PopupLayout是通用弹出布局辅助库,允许开发者从顶部、底部、左侧、右侧和中心这五个位置弹出自己指定的View,此外还提供圆角和动画特性。本文将介绍该库的基本用法和主要开发思路。
前言权限是Android中一个非常重要的组成部分,许多操作都需要获取到权限才能进行。在Android6.0之后,权限机制发生了重大变化,加入了运行时权限这一概念。本文就详细讲解一下Android6.0前后的权限机制。
WebView、WebViewClient和WebChromeClient拥有着数量庞大的API,对于开发者而言时常需要查阅相关的资料,然而官方文档对很多方法都是一笔带过。本文就将详细讲解这些API方法,并针对存在困惑与误区的方法做出了具体的解释。
Android系统提供了种类繁多的控件,很多的用法都很简单。但是由于控件的多样性,偶尔也容易忘记控件的一些细节问题。因此,本文将总结、讲解一些常用控件的用法和技巧。本文的内容包括:CheckBox、RadioButton、ToggleButton、Switch、ProgressBar、SeekBar、RatingBar、Spinner、ImageButton。CheckBox...
读取手机联系人是Android应用中很常见的操作,也是很多应用的功能基础,本文就简单讲解一下如何使用ContentResolver对手机联系人进行读取。
对一款人性化的应用来说,往往需要存储用户的偏好设置,例如字体大小、应用风格等个性化的设置数据。Java应用具有跨平台的特性,就更需要一种平台无关的存储手段。Java官方给出的解决方案是Preferences首选项,本文就来简单讲解一下Preferences的使用。
在Android中存储数据的方式有很多种,其中使用SQLite数据库是存储结构化数据的最佳选择。幸运的是,Android中默认提供了对SQLite的支持,这就使得在Android中使用SQLite数据库变得格外方便。
对照表 系统版本 API 级别 VERSION_CODE Android 2.3 Android 2.3.1 Android 2.3.2 9 GINGERBREAD Android 2.3.3 Android 2.3.4 10 GINGERBREAD_MR1 Android 3.0.x 11 HONEYCOMB And...
谈到Android中与文本相关的控件,容易想到的自然是TextView和EditText。这两类控件的使用率很高,基本使用方法也很简单。但是如果追寻细节,会发现它们还隐藏着很多的黑科技知识。本文的内容包括:TextView、EditText、AutoCompleteTextView、MultiAutoCompleteTextView。TextView相关属性TextVi...
在Android中,应用间的数据共享是一件很常见的事情,典型的场景就是读取手机通讯录。为了实现安全高效地数据共享,Android提供了ContentProvider这一组件,即内容提供器。本文就简单讲解一下ContentProvider的使用。
通过RecyclerView配合StaggeredGridLayoutManager可以很方便的实现瀑布流效果,一般情况下会把作为Item的子View宽度设置为MATCH_PARENT,那么子View将根据列数(假定是垂直排列)平均分配RecyclerView的宽度。但是如果我们为子View的width设置一个确切的值(记为x),并且为RecyclerView添加ItemDecoration(为了设置Item的间距),最终Item的宽度将会被预期的要窄(小于x),本文将从源码的角度分析这种结果的产生的原因。
FairySearchView是经过封装的通用搜索控件,可以根据需求切换不同的布局模式。内置多种事件监听器,可以满足不同场景的业务需求,使用方式非常灵活。本文主要讲解该库的基本用法和实现思路。
1.场景描述在项目中新建了Module并引用,结果在编译时出现了错误,错误信息如下:Error:Error converting bytecode to dex: Cause: com.android.dex.DexException: Multiple dex files define Lcom/codingending/popupcontainer/BuildConfig;2....
如何布局一直是Java Swing中一个令人头疼的问题。老实说,Java官方给出的几种布局管理器实现,都不怎么好用。不过,合理利用多种布局和JPanel的组合,倒也足以完成大部分布局需求了。本文就简单讲解一下BoxLayout这个灵活的布局管理器。BoxLayout即盒子布局,允许组件水平或垂直排列。
本文简单讲解字符串的相关概念。如:回文、子串、子序列、前缀树、后缀树、后缀数组、匹配、字典序。
摘要:Java中有许多实用的类,本文简单讲解了System、Runtime、Date这三个部分的相关知识及其常见用法。
自定义View是Android进阶路线上必须攻克的难题,而在这之前就应该先对View的工作原理有一个系统的理解。本系列将分为4篇博客进行讲解,本文主要对View的布局流程(layout)进行讲解。
自定义View是Android进阶路线上必须攻克的难题,而在这之前就应该先对View的工作原理有一个系统的理解。本系列将分为4篇博客进行讲解,本文主要对View的测量流程(measure)进行讲解。
String 类代表字符串。Java 程序中的所有字符串字面值(如 "abc" )都作为此类的实例实现。 字符串是常量;它们的值在创建之后不能更改。字符串缓冲区支持可变的字符串。因为 String 对象是不可变的,所以可以共享......
摘要:Java中有许多实用的类,本文简单讲解了Calendar和Math这两个部分的相关知识及其常见用法。
自定义View是Android进阶路线上必须攻克的难题,而在这之前就应该先对View的工作原理有一个系统的理解。本系列将分为4篇博客进行讲解,本文主要对View的绘制流程(draw)进行讲解。
一句话概括,集合是存储Java对象最常用的一种方式。通常所用的List和Set系列集合的最顶层为Collection接口。本文针对集合的一些共性方法进行讲解,并提供详细内容的链接方式。
实现Android中的IPC(进程间通信)有多种方式,而AIDL则是其中功能最强大的一种方式。通过AIDL,我们不仅可以在进程间传递数据,还可以实现RPC(远程方法调用)。很多时候,一些业务需求只能使用AIDL这种方式进行实现,因此掌握AIDL的使用至关重要。本文就简单讲解一下如何使用AIDL实现IPC。
1.概述增强型for循环是jdk1.5之后出现的新特性,在用法上与普通的for循环有所不同。其功能得到了拓展,主要用于对集合或数组对象进行遍历操作。
本文介绍Set系列集合两种常用结构,HashSet以及TreeSet集合。HashSet的底层数据结构是哈希表,哈希表按照元素的哈希值大小顺序进行存储,而非元素的实际存入顺序。并且HashSet是非线程同步的。TreeSet底层数据结构是二叉树,可以对set集合中的元素进行排序,但并不一定是元素的加入顺序,默认为根据元素的自然顺序排序。
1.异常的简单定义:程序在编译过程或运行时出现的不正常行为2.异常分类:Java中的异常可分为Error(错误)和Exception(异常)两类。前者程序本身无法处理(一般涉及jvm方面),而后者程序可通过一定的方式进行处理.....
单例模式是一种常用的软件设计模式。在它的核心结构中只包含一个被称为单例类的特殊类。通过单例模式可以保证系统中一个类只有一个实例而且该实例易于外界访问,从而方便对实例个数的控制并节约系统资源。如果希望在系统中某个类的对象只能存在一个,单例模式是最好的解决方案.....
List集合是集合框架中使用频次较高的一个组成部分,本文对List系列集合的使用方法以及List集合的相关应用进行了较为详细地讲解。
本文主要讲解IO系列有关字符流对象部分的内容。字符流主要包含FileReader、FileWriter、BufferedReader、BufferedWriter这四部分。此外,本文就LineNumberReader也进行了简单讲解。
所谓死锁,是指两个或两个以上的进程在执行过程中,由于竞争资源或者由于彼此通信而造成的一种阻塞的现象,若无外力作用,它们都将无法推进下去。此时称系统处于死锁状态或系统产生了死锁,这些永远在互相等待的进程称为死锁进程。
在Android中实现IPC(进程间通信)的方式有很多,本文讲解如何使用Messenger进行实现。Messenger可以翻译为信使,用于跨进程传输Message对象。在Message对象中,我们可以附带其他数据,这就实现了数据的跨进程传递。简而言之,Messenger是一种轻量级的IPC方案,在它的底层封装了AIDL。
自定义View是Android进阶路线上必须攻克的难题,而在这之前就应该先对View的工作原理有一个系统的理解。本系列将分为4篇博客进行讲解,本文将主要对MeasureSpec、DecorView、ViewRootImpl等基础知识进行讲解。
在实际开发过程中,我们常常会有序列化对象的需求。在Android中,可以使用两种方式实现对象的序列化,即使用Serializable和Parcelable接口。
我们都知道,启动Activity有两种方式,即隐式启动和显式启动。从优先级来说,显式启动要优先于隐式启动。隐式启动的优点是使用上的灵活性。因此,掌握隐式启动中IntentFilter的匹配规则就至关重要了。
泛型是JDK1.5以后出现的新特性,用于解决安全问题,是一个类型安全机制。泛型可以将运行时期可能抛出的ClassCastException异常转移到编译时期,方便程序员直接在编写代码时解决潜在问题。且泛型可以避免使用时对象强制类型转换的麻烦。
Map也是集合框架中的一员,独立于Collection体系。实际上,Collection称为单列集合,Map称为双列集合。Map集合以键值对的方式进行存储,并且需要保持键的唯一性。Map包含Hashtable,HashMap,TreeMap三个常见的部分,本文即对Map的常见用法进行讲解。
WebView是Android中的原生UI控件,主要用于在app应用中方便地访问远程网页或本地html资源。同时,WebView也在Android中充当Java代码和JS代码之间交互的桥梁。实际上,也可以将WebView看做一个功能最小化的浏览器。本文将全面讲解WebView各方面的知识点。2.基本使用创建一个WebView组件通常情况下,我们会在XML文件中定义需...
可变参数是jdk1.5后出现的新特性,允许在定义方法时不在指名参数的个数,而在调用方法时直接传入需要的参数即可。
集合框架内有着一个特殊的工具类Collections,专门对集合进行,里面全都是静态方法,可以直接调用。此外,本文还介绍了另一个常用的工具类Arrays,专门用于对数组进行操作。
本文讲解Activity的启动模式和任务栈相关的知识。
静态导入是jdk1.5后java出现的新特性,可以导入类中的静态成员。这样在使用这些静态成员时就不必再加包名和类名了,为编写程序带来一定便利。
本文主要讲解IO系列有关字节流对象部分的内容。字节流主要包含FileOutputStream、FileInputStream、BufferedOutputStream、BufferedinputStream四个部分的内容。此外,本文还给出了一些字节流的简单应用。
进程的定义:一个正在执行中的程序 每一个进程执行都有一个执行顺序。该顺序是一个执行路径,或者叫一个控制单元。2.线程的定义:进程中的一个独立的控制单元,线程控制着进程的执行。3.进程中至少有一个线程(且java中该线程的代码存在于main方法中,因此称其为主线程)4.使用多线程的意义....
RecyclerView是Android 5.0之后推出的列表类控件,具有高度的解耦性和灵活性。通过使用合适的LayoutManager,可以实现ListView、横向ListView、GridView和瀑布流列表的效果。本文将对RecyclerView的相关知识点进行详细讲解。基本用法使用步骤RecyclerView是支持库中的控件,因此在使用前需要先在build.g...
前言GridView常用于以网格形式展示数据,九宫格布局就是一种典型的应用。本文将详细讲解GridView的使用方法和常用技巧。基本使用GridView的使用和ListView相似,重点在于数据由Adapter(适配器)提供,GridView并不直接访问数据源。因此,可以将GridView的使用分为3步:获得数据源(如数组,List等)通过数据源建立适配器(如ArrayAd...
前言在Android系统中,针对大量数据的展示,可以使用ListView以列表的形式的呈现。虽然现在ListView在很多地方都被RecyclerView取代了,但是在一些合适的场景中依旧有用武之地。本文将详细讲解ListView的使用和常用技巧。基本使用ListView的使用还是很简单的,重点在于数据由Adapter(适配器)提供的,ListView并不直接访问数据源。因此,可以...