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.
git.text/src/java/net/micode/notes/tool/ResourceParser.java

272 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;
/**
* 资源解析器:统一管理便签应用中的各类资源(背景、文字样式等)
* 提供资源获取接口,实现样式资源与业务逻辑的解耦
*/
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 // 红色标题栏
};
/**
* 获取便签编辑页主体背景资源
* @param id 颜色标识如YELLOW、BLUE等
* @return 背景图片资源ID
*/
public static int getNoteBgResource(int id) {
return BG_EDIT_RESOURCES[id];
}
/**
* 获取便签编辑页标题栏背景资源
* @param id 颜色标识如YELLOW、BLUE等
* @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)) {
// 随机选择背景颜色0到背景资源数量-1之间
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;
}
}
/**
* 桌面小部件Widget背景资源管理
* 提供不同尺寸Widget的背景资源
*/
public static class WidgetBgResources {
// 2x尺寸Widget背景资源数组
private final static int [] BG_2X_RESOURCES = new int [] {
R.drawable.widget_2x_yellow, // 2x黄色Widget
R.drawable.widget_2x_blue, // 2x蓝色Widget
R.drawable.widget_2x_white, // 2x白色Widget
R.drawable.widget_2x_green, // 2x绿色Widget
R.drawable.widget_2x_red, // 2x红色Widget
};
/**
* 获取2x尺寸Widget背景资源
* @param id 颜色标识
* @return 2x Widget背景资源ID
*/
public static int getWidget2xBgResource(int id) {
return BG_2X_RESOURCES[id];
}
// 4x尺寸Widget背景资源数组
private final static int [] BG_4X_RESOURCES = new int [] {
R.drawable.widget_4x_yellow, // 4x黄色Widget
R.drawable.widget_4x_blue, // 4x蓝色Widget
R.drawable.widget_4x_white, // 4x白色Widget
R.drawable.widget_4x_green, // 4x绿色Widget
R.drawable.widget_4x_red // 4x红色Widget
};
/**
* 获取4x尺寸Widget背景资源
* @param id 颜色标识
* @return 4x Widget背景资源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 字体大小标识如TEXT_SMALL、TEXT_MEDIUM等
* @return 文字样式资源ID若id无效则返回默认样式
*/
public static int getTexAppearanceResource(int id) {
/**
* 兼容处理防止存储的资源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;
}
}
}