1.启动图功能开发与封装(倒计时效果)
【添加依赖】Banner依赖;fastjson库;
2. 持久化
【持久化】包含三种:sp;file;sqlit;
【sp封装源码】com.flj.latte.util.storage.LattePreference
1 package com.flj.latte.util.storage; 2 3 import android.content.SharedPreferences; 4 import android.preference.PreferenceManager; 5 6 import com.alibaba.fastjson.JSON; 7 import com.alibaba.fastjson.JSONObject; 8 import com.flj.latte.app.Latte; 9 10 /** 11 * Created by 傅令杰 on 2017/4/22 12 */ 13 14 public final class LattePreference { 15 16 /** 17 * 提示: 18 * 【用于Activity内部存储】Activity.getPreferences(int mode)生成 Activity名.xml 19 * 【用于数据的保存】PreferenceManager.getDefaultSharedPreferences(Context)生成 “包名_preferences.xml” 20 * 【自定义名称】Context.getSharedPreferences(String name,int mode)生成name.xml 21 */ 22 private static final SharedPreferences PREFERENCES = 23 PreferenceManager.getDefaultSharedPreferences(Latte.getApplicationContext()); 24 25 private static final String APP_PREFERENCES_KEY = "profile";//定义一个key值; 26 27 private static SharedPreferences getAppPreference() { 28 return PREFERENCES; 29 } 30 31 public static void setAppProfile(String val) { 32 getAppPreference() 33 .edit() 34 .putString(APP_PREFERENCES_KEY, val) 35 .apply(); 36 } 37 38 public static String getAppProfile() { 39 return getAppPreference().getString(APP_PREFERENCES_KEY, null); 40 } 41 42 public static JSONObject getAppProfileJson() { 43 final String profile = getAppProfile(); 44 return JSON.parseObject(profile); 45 } 46 47 public static void removeAppProfile() { 48 getAppPreference() 49 .edit() 50 .remove(APP_PREFERENCES_KEY) 51 .apply(); 52 } 53 54 public static void clearAppPreferences() { 55 getAppPreference() 56 .edit() 57 .clear() 58 .apply(); 59 } 60 61 /** 62 * flag:true:第一次存储数据;fasle:非第一次存储数据 63 * @param key 64 * @param flag 65 */ 66 public static void setAppFlag(String key, boolean flag) { 67 getAppPreference() 68 .edit() 69 .putBoolean(key, flag) 70 .apply(); 71 } 72 73 public static boolean getAppFlag(String key) { 74 return getAppPreference() 75 .getBoolean(key, false); 76 } 77 78 public static void addCustomAppProfile(String key, String val) { 79 getAppPreference() 80 .edit() 81 .putString(key, val) 82 .apply(); 83 } 84 85 public static String getCustomAppProfile(String key) { 86 return getAppPreference().getString(key, ""); 87 } 88 89 }
3.倒计时工具库封装
【说明】需要实现一个接口,然后回调;
4.第一个启动页面的倒计时
【说明】继承与封装好的fragment;
【使用drawable控制形状】现在的textView是正方形,与实际的使用不符合,现在使用drawable控制;
【布局文件的完善】
【布局的的增加】
【增加插件和依赖】
【初始化timer】
【基类增加返回activity】
【定时任务的设置】
【测试】
5.启动图功能开发与封装(轮播效果)
5.1 轮播图片的添加
【需要使用到的依赖】
【类泛型的源码的查看】
【图片的加入】需要新建类,添加轮播的图片;
【新建CB类】
【新建holder】ImageView的设置
【完善启动页】
5.2 指示器的添加
【设置指示器】新建两个颜色的选中与未选中的指示器;
【原则】业务中可以使用图片代替代码的就是用图片;框架中可以使用代码就使用代码,不要使用图片;
【指示器设置位置】
【指示器加入到APP中并且item响应点击事件】
【测试效果】
6.启动图功能优化与完善
【设计】如果是第一次启动,则需要显示滚动轮播图,如果不是第一次启动,则需要显示单张图片5s;
【新建枚举类】标记是否为第一次开启登录;
【说明】由于目前没有书写登录的逻辑,现在只是设置了标记;
【检查是否显示启动页】第一次进入APP的时候需要展示滚动画面,非第一次,渐变图进入到主页面;
【非第一次渐变页的跳转事件按钮的点击】
【测试应用】
[去除titleBar]
【效果】经过第一次的点击之后,直接进入到倒计时,过了5s时间然后停止了