Android开发之CriminalIntent项目开发(其一)

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Android开发之CriminalIntent项目开发(其一)相关的知识,希望对你有一定的参考价值。

前言

  这次的开发项目是一个叫做CriminalIntent的应用,该应用可以详细记录各种办公室陋习。这个应用记载的陋习记录包括标题、日期和图片,支持在联系人中查找当事人,通过E-mail、Twitter、Facebook或者其他的一些社交应用提出抗议。

引入fragment

  采用fragment而不是activity来管理应用UI,可以绕开android系统的activity使用规则的限制。

  fragment是一种控制器对象,activity可以委派它执行任务。这些任务通常就是管理用户界面。受管的用户界面可以是一整屏或者是整屏的一部分。

  根据应用和用户的需求,可联合使用fragment和activity来组装或者重组用户界面。在整个生命周期过程中,activity视图还是那个视图,因此不必担心会违反Android系统的activity使用规则。

  如何支持同屏显示列表与明细内容?实际上,这类应用的activity视图由列表fragment和明细fragment组成。明细视图负责显示列表项的明细内容。选择不同的列表项就显示对应的明细视图。activity负责以一个明细fragment替换另一个明细fragment。这样,视图切换的过程中,也不用销毁activity。

开发CriminalIntent

  CriminalIntent项目的 开发比较复杂,所以得一步步来。

在Android Studio中增加依赖关系

  要使用的支持库版fragment来自于AppCompat库。要使用AppCompat支持库,项目必须将其列入依赖关系。修改build.gradle文件。

 

apply plugin: ‘com.android.application‘

android {
    compileSdkVersion 25
    buildToolsVersion "25.0.2"

    defaultConfig {
        applicationId "classroom.criminalintent"
        minSdkVersion 9
        targetSdkVersion 25
        versionCode 1
        versionName "1.0"

        testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"

    }
    buildTypes {
        release {
            minifyEnabled false
            proguardFiles getDefaultProguardFile(‘proguard-android.txt‘), ‘proguard-rules.pro‘
        }
    }
}

dependencies {
    compile fileTree(dir: ‘libs‘, include: [‘*.jar‘])
    androidTestCompile(‘com.android.support.test.espresso:espresso-core:2.2.2‘, {
        exclude group: ‘com.android.support‘, module: ‘support-annotations‘
    })
    compile ‘com.android.support:appcompat-v7:25.2.0‘
    testCompile ‘junit:junit:4.12‘
    compile ‘com.android.support:recyclerview-v7:25.2.0‘
    compile ‘com.android.support:recyclerview-v7:25.2.0‘
    compile ‘com.android.support.constraint:constraint-layout:1.0.2‘
}

创建Crime类

public class Crime {
    private UUID mId;
    private String mTitle;
    private Date mDate;
    private boolean mSolved;

    public Crime() {
        mId = UUID.randomUUID();
        mDate = new Date();
    }

    public UUID getmId() {
        return mId;
    }

    public String getmTitle() {
        return mTitle;
    }

    public void setmTitle(String mTitle) {
        this.mTitle = mTitle;
    }

    public Date getmDate() {
        return mDate;
    }

    public void setmDate(Date mDate) {
        this.mDate = mDate;
    }

    public boolean ismSolved() {
        return mSolved;
    }

    public void setmSolved(boolean mSolved) {
        this.mSolved = mSolved;
    }


}

创建CrimeFragment类

  创建new java class,并修改代码。

public class CrimeFragment extends Fragment {
}

  注意,继承Fragment类时,需要继承Android.support.v4.app这个。这个才是支持库版的Fragment。

import android.support.v4.app.Fragment;

升级CriminalIntent应用的模型层

  创建CrimeLab.java,并修改代码。

    public Crime getCrime(UUID id) {
        for (Crime crime : mCrimes) {
            if (crime.getmId().equals(id)) {
                return crime;
            }
        }
        return null;
    }

  创建可容纳Crime对象的List。

private List<Crime> mCrimes;
private CrimeLab(Context context) {
        mCrimes = new ArrayList<>();
        for (int i = 0; i < 100; i++) {
            Crime crime = new Crime();
            crime.setmTitle("Crime #" + i);
            crime.setmSolved(i % 2 == 0);//Every other one
            mCrimes.add(crime);
        }
    }

    public List<Crime> getCrimes() {
        return mCrimes;
    }

    public Crime getCrime(UUID id) {
        for (Crime crime : mCrimes) {
            if (crime.getmId().equals(id)) {
                return crime;
            }
        }
        return null;
    }

  其中,这部分代码是用来生成100个crime的。

for (int i = 0; i < 100; i++) {
            Crime crime = new Crime();
            crime.setmTitle("Crime #" + i);
            crime.setmSolved(i % 2 == 0);//Every other one
            mCrimes.add(crime);
        }

使用布局与组件创建用户界面

技术分享

  在上述图中,可以对界面进行视图化管理,相比在后台一点点的累代码,方便很多。

 

以上是关于Android开发之CriminalIntent项目开发(其一)的主要内容,如果未能解决你的问题,请参考以下文章

《Android编程权威指南》CriminalIntent项目梳理

CriminalIntent项目开发

CriminalIntent项目开发

CriminalIntent项目开发

Android知识汇总

CriminalIntent项目开发