前言
在Android开发中,时间轴的 UI非常常见,如下图:
储备知识:
1.自定义view基础
2.RecyclerView的使用
3.自定义RecyclerView.ItemDecoration
具体实现
1.最终效果如下:
时光,不会辜负每一个平静努力的人
前几天看到这样一个UI效果,然后自己也仿照实现了下:
看着挺酷的,也有很多App都用到了这个UI效果,比如开眼App和沪江开心词场就用到了.
所以下面就来简单实现一下这个UI效果吧.
1.AppBarLayout
2.CoordinatorLayout
3.CollapsingToolbarLayout
实现上面的UI效果需要将这三剑客的组合起来用,下面先介绍下这三个控件:
1.AppBarLayout简单介绍
AppBarLayout是android.support:design
包中的支持的控件,继承自LinearLayout,实际上就是一个垂直分布的LinearLayout.父类视图结构如下:1
2
3
4
5
6
7
8public class AppBarLayout
extends LinearLayout
java.lang.Object
↳ android.view.View
↳ android.view.ViewGroup
↳ android.widget.LinearLayout
↳ android.support.design.widget.AppBarLayout
其中官方文档中有这么两句话尤为重要:
This view depends heavily on being used as a direct child within a
CoordinatorLayout
. If you use AppBarLayout within a differentViewGroup
, most of it’s functionality will not work.
AppBarLayout
also requires a separate scrolling sibling in order to know when to scroll. The binding is done through theAppBarLayout.ScrollingViewBehavior
behavior class, meaning that you should set your scrolling view’s behavior to be an instance ofAppBarLayout.ScrollingViewBehavior
.
意思就是说AppBarLayout 必须作为CoordinatorLayout
的直接子类,否则很多功能是无法实现的.并且AppBarLayout 必须有一个能滚动的兄第ScrollView (实现了NestedScrollView
,listview不可以哦),以此来通知AppBarLayout 何时进行滚动,兄弟View必须实现以下标识:
1 | app:layout_behavior="@string/appbar_scrolling_view_behavior" |
在Android 开发中,数据库模块是必不可少的.现在也有许多非常好用流行的数据库快速开发框架.今天主要介绍下xUtils下封装的数据库模块.
在这里列一下Android开发中常用的数据库框架,有情趣的可以自行了解下,顺便储备点知识.
1.OrmLite
对象关系映射Lite(ORM Lite)提供了一些简单,轻量级的功能,用于将Java对象持久保存到SQL数据库,同时避免了更多标准ORM包的复杂性和开销。
2.LitePal
LitePal是一个开源的Android库,允许开发人员非常容易地使用SQLite数据库。您可以完成大部分数据库操作,而无需编写SQL语句,包括创建或升级表,crud操作,聚合函数等.LitePal的设置也非常简单,您可以在不到5分钟中将其集成到项目中。
3.GreenDao
greenDAO是一款轻巧快捷的Android版ORM,可将对象映射到SQLite数据库。greenDAO针对Android进行了高度优化,性能卓越,占用内存极少。
4.DBFlow
一个功能强大,功能强大且非常简单的ORM android数据库库,带有注释处理功能。
该库建立在速度,性能和可接近性的基础之上。它不仅消除了大多数用于处理数据库的样板代码,而且还提供了一个强大而简单的API来管理交互。
5.Realm
Realm是一个直接在手机,平板电脑或可穿戴设备中运行的移动数据库。此存储库包含Realm的Java版本的源代码,该版本目前仅在Android上运行。
1.添加依赖
在app的build.gradle下添加以下依赖:1
compile 'org.xutils:xutils:3.5.0'
对于gradle3.0以上,compile已经被废弃了,需要使用api
如下:1
api 'org.xutils:xutils:3.5.0'
Butterknife中文又名黄油刀,是 JakeWharton大神开源的一款Android视图的字段和方法绑定
快速注解框架.也是Android开发中比较常用的一款快速注解框架了,可以不用不断的重复findViewById
,在各种场合下快速绑定view的多种事件,大大提高了开发的效率.
为什么开发用Butterknife?
1、强大的View绑定和Click事件处理功能,简化代码,提升开发效率
2、方便的处理Adapter里的ViewHolder绑定问题
3、运行时不会影响APP效率,使用配置方便
4、代码清晰,可读性强
5、…………
使用配置
build.gradle
中添加如下配置:1 | dependencies { |
简单使用如下:1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17class ExampleActivity extends Activity {
@BindView(R.id.user) EditText username;
@BindView(R.id.pass) EditText password;
@BindString(R.string.login_error) String loginErrorMessage;
@OnClick(R.id.submit) void submit() {
// TODO call server...
}
@Override public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.simple_activity);
ButterKnife.bind(this);
// TODO Use fields...
}
}
Handler
机制随处可见.Handle异步消息传递机制
。UI线程,程序启动时自动创建。
开发者自己开启的线程,执行耗时操作等。
UI线程与子线程通信的媒介,添加消息到消息队列(Message Queue)处理循环器分发过来的消息(Looper)。
Handler接受&处理的对象,存储需要操作的消息。
数据存储结构,采用先进先出方式,存储Handler发过来的消息。
消息队列与处理者的媒介,从消息队列中循环取出消息并发送给Handler处理。
基于最近要准备去面试,特意系统的复习了下Android基础,看到Activity这块时,发现很多都忘了,而且之前也没有系统的学习和写笔记记录,所以,特此写下这篇关于Activity的一些理解,旨在帮助大家更好的理解Activity.
Activity
是一个Android应用程序组件(也称为Android四大组件之一),它提供了一个屏幕,用户可以通过该屏幕进行交互以执行某些操作,例如拨打电话,拍照,发送电子邮件或查看地图。每个活动都有一个窗口,用于绘制其用户界面。窗口通常填满屏幕,但可能比屏幕小,并漂浮在其他窗口的顶部.
Android应用程序通常由多个彼此松散绑定的Activity
组成。通常,应用程序中的一个Activity
被指定为“主要”Activity
,该Activity
在首次启动应用程序时呈现给用户。然后,每个Activity
可以启动另一个Activity
以执行不同的操作。每次新Activity
开始时,前一个Activity
都会停止,但系统会将Activity
保留在后台堆栈中
(“后堆栈”)。当一个新的Activity
开始时,它会被推到后面的堆栈上,并引起用户的注意。后栈遵循基本的“ 后进先出
”堆栈机制,因此,当用户完成当前活动并按下”后退按钮”时,它从堆栈弹出(并销毁),之前的活动恢复。(后台堆栈将在后面为大家详细介绍。)
要创建Activity,您必须创建Activity
(或其现有子类)的子类。在子类中,您需要实现当Activity在其生命周期的各个状态之间转换时系统调用的回调方法,例如在创建,停止,恢复或销毁活动时。两个最重要的回调方法是:
1 | public class ExampleActivity extends AppCompatActivity { |
有好久没有写博客了,主要这段时间都沉迷学习无法自拔了,哈哈.自吹一波.
前两天不是1024节吗,所以就有很多福利出现了,当然每个人能都获得的信息都有所不同,这就是所谓的信息差.秉着好东西需要分享和开源的好习惯,所以来给你们送福利了.
其他福利
三、1024程序员节最新福利之2018最全Android资料集合
一、尚硅谷Python核心基础视频:
https://pan.baidu.com/s/1LVvNP5NPgE-IxyhW6KgDqA
密码:b2ma
二、Python核心语法实战:学生管理系统
https://pan.baidu.com/s/14tDNHX6rpsWUlQtFAGUq5w
三、Python作品之《雷电战机》
https://pan.baidu.com/s/1o7Ha6eA
有好久没有写博客了,主要这段时间都沉迷学习无法自拔了,哈哈.自吹一波.
前两天不是1024节吗,所以就有很多福利出现了,当然每个人能都获得的信息都有所不同,这就是所谓的信息差.秉着好东西需要分享和开源的好习惯,所以来给你们送福利了.
其他福利
一、Android核心基础_15天精讲精练
https://pan.baidu.com/s/1b86u2E
二、Android自定义控件视频
https://pan.baidu.com/s/1hrOVZd6
三、Android—JNI视频
http://pan.baidu.com/s/1kVqBCmr
四、Android与H5互调
https://pan.baidu.com/s/1miHaDbM
五、Android常用第三方框架源码分析
http://pan.baidu.com/s/1o789Vjc
六、尚硅谷Android视频《多渠道打包》
http://pan.baidu.com/s/1dEVpQyX
有好久没有写博客了,主要这段时间都沉迷学习无法自拔了,哈哈.自吹一波.
前两天不是1024节吗,所以就有很多福利出现了,当然每个人能都获得的信息都有所不同,这就是所谓的信息差.秉着好东西需要分享和开源的好习惯,所以来给你们送福利了.
其他福利
一、1024程序员节最新福利之2018最全Android资料集合
一、20天横扫Java基础(课堂实录)
https://pan.baidu.com/s/1htTzZRQ
二、尚硅谷Java基础实战——Bank项目
http://pan.baidu.com/share/link?shareid=3690978764&uk=573533038
三、尚硅谷_ORACLE、SQL、PLSQL 视频教程
https://pan.baidu.com/s/1ghb9ENL
四、尚硅谷JDBC视频教程
https://pan.baidu.com/s/1c3XBTk8
五、Java8新特性
http://pan.baidu.com/s/1cgWOH4
六、Java——JUC