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

【Android开发之CriminalIntent项目开发(其一)】一万年来谁著史,三千里外欲封侯。这篇文章主要讲述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。
开发CriminalIntentCriminalIntent项目的 开发比较复杂,所以得一步步来。
在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项目开发(其一)

文章图片

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

    推荐阅读