标签:sdk bool new lib ica gets 一点 日期 pre
这次的开发项目是一个叫做CriminalIntent的应用,该应用可以详细记录各种办公室陋习。这个应用记载的陋习记录包括标题、日期和图片,支持在联系人中查找当事人,通过E-mail、Twitter、Facebook或者其他的一些社交应用提出抗议。
采用fragment而不是activity来管理应用UI,可以绕开Android系统的activity使用规则的限制。
fragment是一种控制器对象,activity可以委派它执行任务。这些任务通常就是管理用户界面。受管的用户界面可以是一整屏或者是整屏的一部分。
根据应用和用户的需求,可联合使用fragment和activity来组装或者重组用户界面。在整个生命周期过程中,activity视图还是那个视图,因此不必担心会违反Android系统的activity使用规则。
如何支持同屏显示列表与明细内容?实际上,这类应用的activity视图由列表fragment和明细fragment组成。明细视图负责显示列表项的明细内容。选择不同的列表项就显示对应的明细视图。activity负责以一个明细fragment替换另一个明细fragment。这样,视图切换的过程中,也不用销毁activity。
CriminalIntent项目的 开发比较复杂,所以得一步步来。
要使用的支持库版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‘ }
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; } }
创建new java class,并修改代码。
public class CrimeFragment extends Fragment { }
注意,继承Fragment类时,需要继承Android.support.v4.app这个。这个才是支持库版的Fragment。
import android.support.v4.app.Fragment;
创建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项目开发(其一)
标签:sdk bool new lib ica gets 一点 日期 pre
原文地址:http://www.cnblogs.com/lancerE/p/7615754.html