Android学习笔记---MVP架构系列0x01

上次我们对MVP架构有了基本的了解,并且对我们的例子做了开发前的准备,这次我们就把项目的基本结构目录搭建起来.

基本项目结构

项目是功能模块来进行包管理的,项目中只有一个简单的电影加载模块所以比较简单.下图是目前基本的项目的目录结构:
基本目录结构
首先我们有两个抽象的接口,作为所有ViewPresenter的基类:

1
2
3
4
5
6
7
8
9
10
/**
* View模块抽象接口
*/

public interface BaseView<T> {
/**
* 将对应的Presenter注入到View当中
* @param presenter 注入的Presenter
*/

void setPresenter(T presenter);
}

1
2
3
4
5
6
7
8
9
10
/**
* View模块抽象接口
*/

public interface BaseView<T> {
/**
* 将对应的Presenter注入到View当中
* @param presenter 注入的Presenter
*/

void setPresenter(T presenter);
}

Read More

Android学习笔记---开源工具Glide的基本使用

Glide是一个Android的开源图像加载库,它可以有效快速的将图像加载到内存中而防止OOM.

依赖配置

Gradle

1
2
3
4
dependencies {
compile 'com.github.bumptech.glide:glide:3.7.0'
compile 'com.android.support:support-v4:19.1.0'
}

Maven

1
2
3
4
5
6
7
8
9
10
<dependency>
<groupId>com.github.bumptech.glide</groupId>
<artifactId>glide</artifactId>
<version>3.7.0</version>
</dependency>
<dependency>
<groupId>com.google.android</groupId>
<artifactId>support-v4</artifactId>
<version>r7</version>
</dependency>

Glide的基本用法

Glide的使用非常的简单,而且它是链式的调用,所以代码看起来非常的简洁:

1
2
3
4
5
6
Glide.with(myFragment)
.load(url)
.centerCrop()
.placeholder(R.drawable.loading_spinner)
.crossFade()
.into(myImageView);

其中各个函数中的参数如下:

  • with()中的参数是上下文
  • load()中的参数是加载图片的URL
  • centerCrop()表示将图片居中裁剪
  • placeholder()表示图片加载前的占位图
  • crossFade()表示图片加载时的动画
  • into()代表图片加载的目标

代码非常的简洁,如果想了解更多关于Glide的用法可以查看Glide的官方文档

Android学习笔记---开源工具Retrofit的基本使用

Retrofit是一个简化Android网络请求的一个开源工具,本文主要记录Retrofit的基本用法,想要了解更多可以转到Retrofit的官方网站.

依赖配置

要想在项目中使用Retrofit,我们可以通过以下的方式将Retrofit添加到项目中:

Maven
1
2
3
4
5
<dependency>
<groupId>com.squareup.retrofit2</groupId>
<artifactId>retrofit</artifactId>
<version>2.1.0</version>
</dependency>
Gradle
1
2
compile 'com.squareup.retrofit2:retrofit:2.1.0'
compile 'com.squareup.retrofit2:converter-gson:2.1.0'

第二句是为了使用Gson进行数据格式的转换.
Retrofit需要运行于 Java7 , Android2.3 以上的版本

Read More

Android学习笔记---Broadcast Receiver

Broadcast Receiver同样也是Android的四大组件之一,我们将它称为广播接受器.

Broadcast Receiver基础知识

Android系统会随时随地的发送各种各样的广播信息,如开机完成,网络状态改变,有短信到达等.这些广播都可以被开发者所捕获,我们可以通过Broadcast Receiver去获取我们感兴趣的广播.

Broadcast Receiver的创建

要创建自己的Broadcast Receiver对象,需要继承系统的BroadcastReceiver类并实现其onReceive()方法:

1
2
3
4
5
6
7
8
public class MyBroadcastReceiver extends BroadcastReceiver {
private static final String ACTION = "android.intent.action.MyBroadcastReceiver";

@Override
public void onReceive(Context context, Intent intent) {
Log.i("bail", "MyBroadcastReceiver接收到数据:" + intent);
}
}

Read More

Android学习笔记---Content Providers

Content Provider是Android四大组件之一,它是存取和访问数据的一个统一的接口.

Content Provider基本知识

通过应用Context中的ContentResolver对象与provider对象进行通信请求数据.
Android内部提供了常用的provider,如视频,音频,图像和通讯录信息等,所有的应用都可访问这些数据.
Content Provider是通过表的方式对数据进行存储访问的.

访问Provider

我们通过ContentResolver来对ContentProvider中的数据进行访问,ContentResolver对象提供了基本的CRUD等方法对数据进行操作.通过ContentResolver.query()可对数据进行操作,下面的表格列出了query(Uri,projection,selection,selectionArgs,sortOrder)函数中的参数与SQL SELECT语句的对应关系.

query()的参数 SELECT关键字/参数 描述
Uri From table_name Uri对应provider中的表名
projection col,col,col,… projection是一个对应表中提取的一行数据所包含的列的一个数组
selection WHERE col = value selection表示对提取行的数据的约束变量
selectionArgs selection约束变量的值,若没有约束变量则使用?占位符
sortOrder ORDER BY col,col… 提取数据的排序方式

Read More