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.
ssd/src/tool/ResourceParser(1).java

294 lines
9.4 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;
/**
* 资源解析工具类
* 提供便签颜色、大小、背景资源等的解析和管理功能
*/
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 颜色ID使用ResourceParser中定义的颜色常量
* @return 背景资源ID
*/
public static int getNoteBgResource(int id) {
return BG_EDIT_RESOURCES[id];
}
/**
* 获取指定颜色的便签编辑界面标题背景资源ID
*
* @param id 颜色ID使用ResourceParser中定义的颜色常量
* @return 标题背景资源ID
*/
public static int getNoteTitleBgResource(int id) {
return BG_EDIT_TITLE_RESOURCES[id];
}
}
/**
* 获取默认便签背景颜色ID
* 根据用户设置决定是返回固定默认颜色还是随机颜色
*
* @param context 应用上下文
* @return 背景颜色ID
*/
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
};
/**
* 获取列表中第一个便签的背景资源ID
*
* @param id 颜色ID
* @return 背景资源ID
*/
public static int getNoteBgFirstRes(int id) {
return BG_FIRST_RESOURCES[id];
}
/**
* 获取列表中最后一个便签的背景资源ID
*
* @param id 颜色ID
* @return 背景资源ID
*/
public static int getNoteBgLastRes(int id) {
return BG_LAST_RESOURCES[id];
}
/**
* 获取列表中单独便签的背景资源ID
*
* @param id 颜色ID
* @return 背景资源ID
*/
public static int getNoteBgSingleRes(int id) {
return BG_SINGLE_RESOURCES[id];
}
/**
* 获取列表中中间便签的背景资源ID
*
* @param id 颜色ID
* @return 背景资源ID
*/
public static int getNoteBgNormalRes(int id) {
return BG_NORMAL_RESOURCES[id];
}
/**
* 获取文件夹项的背景资源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,
R.drawable.widget_2x_blue,
R.drawable.widget_2x_white,
R.drawable.widget_2x_green,
R.drawable.widget_2x_red,
};
/**
* 获取2x尺寸小部件的背景资源ID
*
* @param id 颜色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,
R.drawable.widget_4x_blue,
R.drawable.widget_4x_white,
R.drawable.widget_4x_green,
R.drawable.widget_4x_red
};
/**
* 获取4x尺寸小部件的背景资源ID
*
* @param id 颜色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
};
/**
* 获取指定ID的文本外观资源
*
* @param id 文本大小ID使用ResourceParser中定义的文本大小常量
* @return 文本外观资源ID
*/
public static int getTexAppearanceResource(int id) {
/**
* HACKME: 修复在共享偏好中存储资源ID的问题。
* 如果ID大于资源数组长度返回默认字体大小
*/
if (id >= TEXTAPPEARANCE_RESOURCES.length) {
return BG_DEFAULT_FONT_SIZE;
}
return TEXTAPPEARANCE_RESOURCES[id];
}
/**
* 获取文本外观资源的数量
*
* @return 资源数量
*/
public static int getResourcesSize() {
return TEXTAPPEARANCE_RESOURCES.length;
}
}
}