You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
xiaomi/src/data/ResourceParser.java

283 lines
10 KiB

This file contains ambiguous Unicode characters!

This file contains ambiguous Unicode characters that may be confused with others in your current locale. If your use case is intentional and legitimate, you can safely ignore this warning. Use the Escape button to highlight these characters.

/*
* Copyright (c) 2010-2011, The MiCode Open Source Community (www.micode.net)
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package net.micode.notes.tool;
import android.content.Context;
import android.preference.PreferenceManager;
import net.micode.notes.R;
import net.micode.notes.ui.NotesPreferenceActivity;
/**
* 资源解析工具类
* 用于管理笔记应用中的各种资源ID和样式
*/
public class ResourceParser {
// ====================== 颜色常量 ======================
/** 黄色背景标识 */
public static final int YELLOW = 0;
/** 蓝色背景标识 */
public static final int BLUE = 1;
/** 白色背景标识 */
public static final int WHITE = 2;
/** 绿色背景标识 */
public static final int GREEN = 3;
/** 红色背景标识 */
public static final int RED = 4;
/** 默认背景颜色标识 */
public static final int BG_DEFAULT_COLOR = YELLOW;
// ====================== 字体大小常量 ======================
/** 小号字体 */
public static final int TEXT_SMALL = 0;
/** 中号字体 */
public static final int TEXT_MEDIUM = 1;
/** 大号字体 */
public static final int TEXT_LARGE = 2;
/** 超大号字体 */
public static final int TEXT_SUPER = 3;
/** 默认字体大小 */
public static final int BG_DEFAULT_FONT_SIZE = TEXT_MEDIUM;
/**
* 笔记背景资源类
* 包含笔记编辑界面和标题的背景资源
*/
public static class NoteBgResources {
// 笔记编辑界面背景资源数组
private final static int [] BG_EDIT_RESOURCES = new int [] {
R.drawable.edit_yellow, // 黄色背景
R.drawable.edit_blue, // 蓝色背景
R.drawable.edit_white, // 白色背景
R.drawable.edit_green, // 绿色背景
R.drawable.edit_red // 红色背景
};
// 笔记标题背景资源数组
private final static int [] BG_EDIT_TITLE_RESOURCES = new int [] {
R.drawable.edit_title_yellow, // 黄色标题背景
R.drawable.edit_title_blue, // 蓝色标题背景
R.drawable.edit_title_white, // 白色标题背景
R.drawable.edit_title_green, // 绿色标题背景
R.drawable.edit_title_red // 红色标题背景
};
/**
* 获取笔记背景资源ID
* @param id 颜色标识
* @return 对应的背景资源ID
*/
public static int getNoteBgResource(int id) {
return BG_EDIT_RESOURCES[id];
}
/**
* 获取笔记标题背景资源ID
* @param id 颜色标识
* @return 对应的标题背景资源ID
*/
public static int getNoteTitleBgResource(int id) {
return BG_EDIT_TITLE_RESOURCES[id];
}
}
/**
* 获取默认背景ID
* @param context 上下文对象
* @return 背景颜色标识
*/
public static int getDefaultBgId(Context context) {
// 检查是否启用了随机背景颜色功能
if (PreferenceManager.getDefaultSharedPreferences(context).getBoolean(
NotesPreferenceActivity.PREFERENCE_SET_BG_COLOR_KEY, false)) {
// 随机返回一个背景颜色
return (int) (Math.random() * NoteBgResources.BG_EDIT_RESOURCES.length);
} else {
// 返回默认背景颜色
return BG_DEFAULT_COLOR;
}
}
/**
* 笔记列表项背景资源类
* 包含列表项不同位置的背景资源
*/
public static class NoteItemBgResources {
// 列表第一项背景资源数组
private final static int [] BG_FIRST_RESOURCES = new int [] {
R.drawable.list_yellow_up, // 黄色第一项背景
R.drawable.list_blue_up, // 蓝色第一项背景
R.drawable.list_white_up, // 白色第一项背景
R.drawable.list_green_up, // 绿色第一项背景
R.drawable.list_red_up // 红色第一项背景
};
// 列表中间项背景资源数组
private final static int [] BG_NORMAL_RESOURCES = new int [] {
R.drawable.list_yellow_middle, // 黄色中间项背景
R.drawable.list_blue_middle, // 蓝色中间项背景
R.drawable.list_white_middle, // 白色中间项背景
R.drawable.list_green_middle, // 绿色中间项背景
R.drawable.list_red_middle // 红色中间项背景
};
// 列表最后一项背景资源数组
private final static int [] BG_LAST_RESOURCES = new int [] {
R.drawable.list_yellow_down, // 黄色最后一项背景
R.drawable.list_blue_down, // 蓝色最后一项背景
R.drawable.list_white_down, // 白色最后一项背景
R.drawable.list_green_down, // 绿色最后一项背景
R.drawable.list_red_down // 红色最后一项背景
};
// 列表单项背景资源数组(当列表只有一项时使用)
private final static int [] BG_SINGLE_RESOURCES = new int [] {
R.drawable.list_yellow_single, // 黄色单项背景
R.drawable.list_blue_single, // 蓝色单项背景
R.drawable.list_white_single, // 白色单项背景
R.drawable.list_green_single, // 绿色单项背景
R.drawable.list_red_single // 红色单项背景
};
/**
* 获取列表第一项背景资源
* @param id 颜色标识
* @return 对应的背景资源ID
*/
public static int getNoteBgFirstRes(int id) {
return BG_FIRST_RESOURCES[id];
}
/**
* 获取列表最后一项背景资源
* @param id 颜色标识
* @return 对应的背景资源ID
*/
public static int getNoteBgLastRes(int id) {
return BG_LAST_RESOURCES[id];
}
/**
* 获取列表单项背景资源
* @param id 颜色标识
* @return 对应的背景资源ID
*/
public static int getNoteBgSingleRes(int id) {
return BG_SINGLE_RESOURCES[id];
}
/**
* 获取列表中间项背景资源
* @param id 颜色标识
* @return 对应的背景资源ID
*/
public static int getNoteBgNormalRes(int id) {
return BG_NORMAL_RESOURCES[id];
}
/**
* 获取文件夹背景资源
* @return 文件夹背景资源ID
*/
public static int getFolderBgRes() {
return R.drawable.list_folder;
}
}
/**
* 小部件背景资源类
* 包含不同尺寸小部件的背景资源
*/
public static class WidgetBgResources {
// 2x小部件背景资源数组
private final static int [] BG_2X_RESOURCES = new int [] {
R.drawable.widget_2x_yellow, // 黄色2x小部件背景
R.drawable.widget_2x_blue, // 蓝色2x小部件背景
R.drawable.widget_2x_white, // 白色2x小部件背景
R.drawable.widget_2x_green, // 绿色2x小部件背景
R.drawable.widget_2x_red // 红色2x小部件背景
};
/**
* 获取2x小部件背景资源
* @param id 颜色标识
* @return 对应的背景资源ID
*/
public static int getWidget2xBgResource(int id) {
return BG_2X_RESOURCES[id];
}
// 4x小部件背景资源数组
private final static int [] BG_4X_RESOURCES = new int [] {
R.drawable.widget_4x_yellow, // 黄色4x小部件背景
R.drawable.widget_4x_blue, // 蓝色4x小部件背景
R.drawable.widget_4x_white, // 白色4x小部件背景
R.drawable.widget_4x_green, // 绿色4x小部件背景
R.drawable.widget_4x_red // 红色4x小部件背景
};
/**
* 获取4x小部件背景资源
* @param id 颜色标识
* @return 对应的背景资源ID
*/
public static int getWidget4xBgResource(int id) {
return BG_4X_RESOURCES[id];
}
}
/**
* 文本外观资源类
* 包含不同字体大小的样式资源
*/
public static class TextAppearanceResources {
// 文本外观样式资源数组
private final static int [] TEXTAPPEARANCE_RESOURCES = new int [] {
R.style.TextAppearanceNormal, // 正常字体样式
R.style.TextAppearanceMedium, // 中等字体样式
R.style.TextAppearanceLarge, // 大号字体样式
R.style.TextAppearanceSuper // 超大号字体样式
};
/**
* 获取文本外观资源
* @param id 字体大小标识
* @return 对应的样式资源ID
*/
public static int getTexAppearanceResource(int id) {
/**
* HACKME: 修复在SharedPreference中存储资源ID的bug
* 当ID大于资源数组长度时返回默认字体大小
*/
if (id >= TEXTAPPEARANCE_RESOURCES.length) {
return BG_DEFAULT_FONT_SIZE;
}
return TEXTAPPEARANCE_RESOURCES[id];
}
/**
* 获取文本外观资源数量
* @return 可用的文本外观样式数量
*/
public static int getResourcesSize() {
return TEXTAPPEARANCE_RESOURCES.length;
}
}
}