1.数据处理方面
1.建一个
FestivalLab类,该类在整个程序只存在一个实例,因此要写一个静态的getInstance()接口来返回
FestivalLab对象。(模拟数据库)
public static FestivalLab mInstance;
public static FestivalLab getInstance() {
// 为了提升效率,多线程时不需要每次都实现同步
if ( mInstance == null) {
// 防止两个线程同时进入,令其互斥地进入
synchronized (FestivalLab. class) {
if ( mInstance == null) {
mInstance = new FestivalLab();
}
}
}
return mInstance;
// 为了提升效率,多线程时不需要每次都实现同步
if ( mInstance == null) {
// 防止两个线程同时进入,令其互斥地进入
synchronized (FestivalLab. class) {
if ( mInstance == null) {
mInstance = new FestivalLab();
}
}
}
return mInstance;
}
2.在构造方法中实现对数据的初始化,比如向list中add数据等。因此该类内部要维护一些Collection保存数据
private List<Festival> mFestivals = new ArrayList<Festival>();
private List<Msg>
mMsgs =
new ArrayList<Msg>();
3.提供对外的get方法。例如根据节日id返回节日,根据节日id返回相关短信(每个节日下都有多条不同的短信),根据 短信id返回短信等。
2.关于UI
1.利用tabLayout实现左右滑动,该控件要手动引入design库,列出关键属性
app:tabMode="fixed" //可选为Scrolleable,看实际情况
app:tabGravity="fill"
app:tabIndicatorColor="@color/colorTabIndicator"
app:tabSelectedTextColor="@color/colorTabIndicator"
app
:tabTextColor=
"@color/colorTabText"
tabLayout关联viewPager的方法是setupWithViewPager(ViewPager viewPager);
2.
关于TextView的阴影效果(在xml中设置)
引用support.v7包下的cardView
<android.support.v7.widget.CardView
xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="wrap_content"
>
//摆一个TextView
</
android.support.v7.widget.
CardView>
3.使用FloathingActionButton(在desgin包下的widget目录)
//解决了
FloathingActionButton
在
5.0以上没有阴影的问题
app:borderWidth="0dp"
//设置
FloathingActionButton的背景色
app:backgroundTint="#0f3fdc"
//在4.0以上是默认存在16dp的,4.0以上则要自己手动设置16dp
android
:layout_marginBottom=
"@dimen/fab_margin"
3.ArrayAdapter使用自定义的View来设置item
当第二个参数传入-1的时候,重写getView()方法则采用自定义的item样式
mAdapter =
new ArrayAdapter<T>(getActivity(), -
1, attr) {
@Override
@Override
public View getView(int position, View convertView, ViewGroup parent) {
//引入ViewHolder来减少findView的时间
return convertView;
}
4.直接使用Intent来传递数据(不通过Bundle)
intent.putExtra(String name , Object value);
getIntent.getXXXExtra(String name,XXX defValue);
5.假如SecondActivity要用到FirstActivity的数据,而且这个数据是固定的,则在
SecondActivity
写一个toActivity()的静态方法在
public static toActivity(Context context,XXX value1,XXX value2){
//创建一个Intent(context,
SecondActivity.class
);
//调用context.startActivity(intent);
}
在onCreate()方法中getIntent()取出在toActivity()中的参数。