在app module中的src/main/assets目录下我们准备了两个json文件:
destination.json如下:
{
"main/tabs/sofa": {
"isFragment": true,
"asStarter": false,
"needLogin": false,
"pageUrl": "main/tabs/sofa",
"className": "com.test.ppjoke.ui.notifications.NotificationsFragment",
"id": 448706824
},
"main/tabs/dash": {
"isFragment": true,
"asStarter": false,
"needLogin": false,
"pageUrl": "main/tabs/dash",
"className": "com.test.ppjoke.ui.dashboard.DashboardFragment",
"id": 938694224
},
"main/tabs/home": {
"isFragment": true,
"asStarter": true,
"needLogin": false,
"pageUrl": "main/tabs/home",
"className": "com.test.ppjoke.ui.home.HomeFragment",
"id": 509754652
},
"main/tabs/my": {
"isFragment": true,
"asStarter": false,
"needLogin": false,
"pageUrl": "main/tabs/my",
"className": "com.test.ppjoke.ui.my.MyFragment",
"id": 750793084
}
}
对应的destination的javabean文件:
public class Destination {
public String pageUrl;
public int id;
public boolean needLogin;
public boolean asStarter;
public boolean isFragment;
public String className;
}
main_tabs_config.json如下:
{
"activeColor": "#333333",
"inActiveColor": "#666666",
"selectTab": 0,
"tabs": [
{
"size": 24,
"enable": true,
"index": 0,
"pageUrl": "main/tabs/home",
"title": "首页"
},
{
"size": 24,
"enable": true,
"index": 1,
"pageUrl": "main/tabs/sofa",
"title": "沙发"
},
{
"size": 40,
"enable": true,
"index": 2,
"tintColor": "#ff678f",
"pageUrl": "main/tabs/publish",
"title": ""
},
{
"size": 24,
"enable": true,
"index": 3,
"pageUrl": "main/tabs/dash",
"title": "发现"
},
{
"size": 24,
"enable": true,
"index": 4,
"pageUrl": "main/tabs/my",
"title": "我的"
}
]
}
对应的BottomBar的JavaBean文件如下:
import java.util.List;
public class BottomBar {
/**
* activeColor : #333333
* inActiveColor : #666666
* tabs : [{"size":24,"enable":true,"index":0,"pageUrl":"main/tabs/home","title":"首页"},{"size":24,"enable":true,"index":1,"pageUrl":"main/tabs/sofa","title":"沙发"},{"size":40,"enable":true,"index":2,"tintColor":"#ff678f","pageUrl":"main/tabs/publish","title":""},{"size":24,"enable":true,"index":3,"pageUrl":"main/tabs/find","title":"发现"},{"size":24,"enable":true,"index":4,"pageUrl":"main/tabs/my","title":"我的"}]
*/
public String activeColor;
public String inActiveColor;
public List tabs;
public int selectTab;//底部导航栏默认选中项
public static class Tab {
/**
* size : 24
* enable : true
* index : 0
* pageUrl : main/tabs/home
* title : 首页
* tintColor : #ff678f
*/
public int size;
public boolean enable;
public int index;
public String pageUrl;
public String title;
public String tintColor;
}
}
读取json并解析的java代码:
import android.content.res.AssetManager;
import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.TypeReference;
import com.test.ppjoke.model.BottomBar;
import com.test.ppjoke.model.Destination;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.util.Collections;
import java.util.Comparator;
import java.util.HashMap;
public class AppConfig {
private static HashMap sDestConfig;
private static BottomBar sBottomBar;
public static HashMap getDestConfig() {
if (sDestConfig == null) {
String content = parseFile("destination.json");
sDestConfig = JSON.parseObject(content, new TypeReference>() {
});
}
return sDestConfig;
}
public static BottomBar getBottomBarConfig() {
if (sBottomBar == null) {
String content = parseFile("main_tabs_config.json");
sBottomBar = JSON.parseObject(content, BottomBar.class);
}
return sBottomBar;
}
private static String parseFile(String fileName) {
AssetManager assets = AppGlobals.getApplication().getAssets();
InputStream is = null;
BufferedReader br = null;
StringBuilder builder = new StringBuilder();
try {
is = assets.open(fileName);
br = new BufferedReader(new InputStreamReader(is));
String line = null;
while ((line = br.readLine()) != null) {
builder.append(line);
}
} catch (IOException e) {
e.printStackTrace();
} finally {
try {
if (is != null) {
is.close();
}
if (br != null) {
br.close();
}
} catch (Exception e) {
}
}
return builder.toString();
}
}