Android学习笔记---自定义View基础

Android系统中提供给我们的View控件基本上能满足我们的基本应用的需求,但有时因为一些特殊的需求,我们不得不自己创建符合我们要求的View.所以学会自定义View控件还是很有必要的.

自定义View的基本步骤

  1. 创建View
  2. 处理View布局
  3. 进行View的绘制
  4. 处理View的事件监听
  5. 优化View

上面的步骤就是创建自定义View的一些基本的步骤了.下面是各个步骤的详细介绍.

Read More

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

上次我们完成了界面的展现,这次我们把数据绑定到界面上,然后把整个项目都完善好.想查看完整的代码可以到这里

代码

MovieContract.java

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
/**
* 用于管理loadMovie功能模块的View与Presenter
*/

public class MovieContract {
/**
* loadMovie模块的View,提供对外的UI更新接口
*/

interface View extends BaseView<Presenter>{
void loadMore(ArrayList<Movie> movie);//上拉加载更多
void refresh(ArrayList<Movie> movie);//下拉刷新
void loadCompleted();//改变上拉加载状态
}
/**
* loadMovie模块的Presenter,负责获取数据并处理,更新UI
*/

interface Presenter extends BasePresenter{
void refresh();//刷新
void loadMore(int start);//加载更多
}
}

Read More

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

上一次我们将MVP的基本架构都搭建起来了,这次我们先来完成UI界面的部分.

布局文件

我们的项目界面是采用RecyclerView作为列表的控件,所以我们需要先将布局文件设计好.

  1. item_movie.xml
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
       <?xml version="1.0" encoding="utf-8"?>
    <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:padding="5dp">

    <ImageView
    android:scaleType="centerCrop"
    android:id="@+id/im_iv_movie"
    android:layout_width="match_parent"
    android:layout_height="180dp"
    android:src="@drawable/pictures_no" />

    <TextView
    android:layout_below="@id/im_iv_movie"
    android:id="@+id/im_tv_title"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:gravity="center"
    android:text="Re"
    android:textStyle="bold" />

    </RelativeLayout>

我们这次使用的是Fragment作为我们的View模块,所以我们也定义好Fragment的布局文件

Read More

Android学习笔记---开源工具ButterKnife的使用

ButterKnife是一个Android的开源工具,是一个View的注入工具.他可以极大的简化我们的代码,帮我们省略大量的findViewById()setOnClickListener().而且它的使用非常简单.

ButterKnife的使用

ButterKnife是通过注解来完成对View对象的绑定,若对Java注解不了解,可以看一下我写的一篇博客:Java学习笔记—Annotation

  1. 依赖配置
    首先要使用ButterKnife我们需要在我们项目的app/build.gradle文件中添加依赖:
    在文件开始添加:
    1
    apply plugin: 'android-apt'

dependencies节点下添加

1
2
compile 'com.jakewharton:butterknife:8.0.1'
apt 'com.jakewharton:butterknife-compiler:8.0.1'

最后在项目根目录的build.gradle文件的dependencies节点下添加

1
classpath 'com.neenbedankt.gradle.plugins:android-apt:1.8'

Read More

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

MVP(Model-View-Presenter)软件设计架构在Android开发中能够帮助我们将业务逻辑和视图展现解耦,便于代码的维护,达到模块化.这个系列我会带大家完成一个完整的MVP架构的应用,希望大家通过这个系列能到MVP架构有个基本的了解.

MVP具体是如何工作

在我们编码开发时,我们将系统分为数据模型(Model),视图(View),和一个”中间人”(Presenter)三个部分.其中Presenter作为一个”中间人”,它从Model中获取数据,将数据进行相应的处理后将数据交给View进行展示.这样一来,View只需展现数据给用户看,其它的事情它就不用管了,而Model只需完成数据的请求处理,其它的事情它也不用管,Presenter则负责从Model获取数据,通知View进行数据更新.
MVP架构

Android开发中的MVP

首先我们先了解一下各个模块的具体职责:

  • Model
    • 对外提供业务数据的接口
    • 实现数据的存取操作(本地与网络)
    • 只有Presenter可以访问,与View隔离
  • Presenter
    • 持有View对象,可对View进行操作
    • 持有Model提供的数据访问接口
    • 从数据接口中获取数据并处理,更新View
  • View
    • 包含UI的相关组件
    • 持有Presenter对象
    • Presenter负责更新UI

      Read More