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.
liuli/src/tool/ResourceParser.java

272 lines
11 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获取对应的笔记编辑界面背景资源ID。
* @param id 背景颜色ID
* @return 对应的笔记编辑界面背景资源ID
*/
public static int getNoteBgResource(int id) {
return BG_EDIT_RESOURCES[id];
}
/**
* 根据传入的背景颜色ID获取对应的笔记编辑界面标题背景资源ID。
* @param id 背景颜色ID
* @return 对应的笔记编辑界面标题背景资源ID
*/
public static int getNoteTitleBgResource(int id) {
return BG_EDIT_TITLE_RESOURCES[id];
}
}
/**
* 获取默认的笔记背景ID。
* 如果在偏好设置中开启了随机背景颜色则随机返回一个背景ID否则返回默认的背景ID。
* @param context 上下文对象
* @return 默认的笔记背景ID
*/
public static int getDefaultBgId(Context context) {
// 检查偏好设置中是否开启了随机背景颜色
if (PreferenceManager.getDefaultSharedPreferences(context).getBoolean(
NotesPreferenceActivity.PREFERENCE_SET_BG_COLOR_KEY, false)) {
// 随机生成一个背景ID
return (int) (Math.random() * NoteBgResources.BG_EDIT_RESOURCES.length);
} else {
// 返回默认的背景ID
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获取对应的笔记列表项第一个元素背景资源ID。
* @param id 背景颜色ID
* @return 对应的笔记列表项第一个元素背景资源ID
*/
public static int getNoteBgFirstRes(int id) {
return BG_FIRST_RESOURCES[id];
}
/**
* 根据传入的背景颜色ID获取对应的笔记列表项最后一个元素背景资源ID。
* @param id 背景颜色ID
* @return 对应的笔记列表项最后一个元素背景资源ID
*/
public static int getNoteBgLastRes(int id) {
return BG_LAST_RESOURCES[id];
}
/**
* 根据传入的背景颜色ID获取对应的笔记列表项单个元素背景资源ID。
* @param id 背景颜色ID
* @return 对应的笔记列表项单个元素背景资源ID
*/
public static int getNoteBgSingleRes(int id) {
return BG_SINGLE_RESOURCES[id];
}
/**
* 根据传入的背景颜色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, // 黄色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小部件背景
};
/**
* 根据传入的背景颜色ID获取对应的2x小部件背景资源ID。
* @param id 背景颜色ID
* @return 对应的2x小部件背景资源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小部件背景
};
/**
* 根据传入的背景颜色ID获取对应的4x小部件背景资源ID。
* @param id 背景颜色ID
* @return 对应的4x小部件背景资源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获取对应的文本外观资源ID。
* 如果传入的ID超出了资源数组的长度则返回默认的字体大小对应的资源ID。
* @param id 文本大小ID
* @return 对应的文本外观资源ID
*/
public static int getTexAppearanceResource(int id) {
/**
* HACKME: Fix bug of store the resource id in shared preference.
* The id may larger than the length of resources, in this case,
* return the {@link ResourceParser#BG_DEFAULT_FONT_SIZE}
*/
if (id >= TEXTAPPEARANCE_RESOURCES.length) {
return BG_DEFAULT_FONT_SIZE;
}
return TEXTAPPEARANCE_RESOURCES[id];
}
/**
* 获取文本外观资源数组的长度。
* @return 文本外观资源数组的长度
*/
public static int getResourcesSize() {
return TEXTAPPEARANCE_RESOURCES.length;
}
}
}