<b>3</b><b>)公共工具</b>
這個也貼出來吧==。
GlobalUtil.java
/**
* @brief 全局公用類
* @details 各部分公用内容都較少,就丢一起了==。
*/
public final class GlobalUtil {
/** Bob Lee懶加載:内部類GlobalUtilHolder */
static class GlobalUtilHolder {
static GlobalUtil instance = new GlobalUtil();
}
/** Bob Lee懶加載:傳回GlobalUtil的單例 */
public static GlobalUtil getInstance() {
return GlobalUtilHolder.instance;
/** 擷取視窗預設顯示資訊 */
public Display getDisplay(Context mContext) {
WindowManager wm = (WindowManager) mContext
.getSystemService(Context.WINDOW_SERVICE);
return wm.getDefaultDisplay();
/** 動畫方式 */
public enum AnimMode {
UP_IN, UP_OUT, DOWN_IN, DOWN_OUT, LEFT_IN, LEFT_OUT, RIGHT_IN, RIGHT_OUT
};
/**
* @brief 橫移或豎移動畫
*
* @param v 移動視圖
* @param animMode 動畫方式
* @param durationMillis 持續時間
*/
public void startTransAnim(View v, AnimMode animMode, long durationMillis) {
int w = v.getWidth(), h = v.getHeight(); // 擷取移動視圖寬高
float fromXDelta = 0, toXDelta = 0, fromYDelta = 0, toYDelta = 0;
switch (animMode) {
case UP_IN:
fromYDelta = -h;
break;
case UP_OUT:
toYDelta = -h;
case DOWN_IN:
fromYDelta = h;
case DOWN_OUT:
toYDelta = h;
case LEFT_IN:
fromXDelta = -w;
case LEFT_OUT:
toXDelta = -w;
case RIGHT_IN:
fromXDelta = w;
case RIGHT_OUT:
toXDelta = w;
}
TranslateAnimation transAnim = new TranslateAnimation(fromXDelta,
toXDelta, fromYDelta, toYDelta); // 位移動畫
transAnim.setDuration(durationMillis); // 設定時間
v.startAnimation(transAnim); // 開始動畫
* @brief InputStream轉為String
* @param is 輸入流
* @param encoding 編碼方式
* @return 字元串結果
* @throws UnsupportedEncodingException 不支援的編碼
public String is2Str(InputStream is, String encoding)
throws UnsupportedEncodingException {
/*
* 不直接從InputStream裡讀byte[],再轉成String,以避免截斷漢字。
* 如utf8一個漢字3位元組,用byte[1024]會截斷末尾而亂碼。
*/
InputStreamReader isReader = new InputStreamReader(is, encoding);
/* 以char[]方式讀取 */
StringBuffer out = new StringBuffer();
try {
char[] b = new char[4096]; // 1024*4*2Byte
for (int n; (n = isReader.read(b)) != -1;) {
out.append(b, 0, n);
}
return out.toString();
} catch (IOException e) {
e.printStackTrace();
return "";
* @brief 帶BOM的文本的FileInputStream轉為String,自動判斷編碼類型
* @param fis 檔案輸入流
public String is2Str(FileInputStream fis)
// 轉成BufferedInputStream
BufferedInputStream bis = new BufferedInputStream(fis);
// 簡單判斷文本編碼
String encoding = getIsEncoding(bis);
// 轉成BufferedReader
BufferedReader reader = new BufferedReader(new InputStreamReader(bis,
encoding));
/* 以readLine()方式讀取 */
for (String s; (s = reader.readLine()) != null;) {
out.append(s);
out.append("\n");
* @brief 帶BOM的文本判斷,否則認為GB2312(即ANSI類型的TXT)
* @details 複雜檔案編碼檢測,請google cpdetector!
* @param is InputStream
* @return 編碼類型
* @warning markSupported為true時才進行判斷,否則傳回預設GB2312。
* \n FileInputStream不支援mark/reset操作;BufferedInputStream支援此操作。
public String getIsEncoding(InputStream is) {
String code = "GB2312";
// Log.e("is.markSupported()", "==" + is.markSupported() + "==");
if (is.markSupported()) { // 支援mark()
try {
is.mark(5); // 打個TAG(5>3)
byte[] head = new byte[3];
is.read(head);
if (head[0] == -1 && head[1] == -2)
code = "UTF-16";
if (head[0] == -2 && head[1] == -1)
code = "Unicode";
if (head[0] == -17 && head[1] == -69 && head[2] == -65)
code = "UTF-8";
is.reset(); // 傳回TAG
} catch (IOException e) {
e.printStackTrace();
return code;
}
<b>四、閱讀器截圖</b>
<b>1</b><b>)進入畫面.png</b>
<a target="_blank" href="http://blog.51cto.com/attachment/201203/210444737.png"></a>
<b>2</b><b>)長按螢幕.png</b>
<a target="_blank" href="http://blog.51cto.com/attachment/201203/210444611.png"></a>
<b>3</b><b>)自帶two.txt.png</b>
<a target="_blank" href="http://blog.51cto.com/attachment/201203/210444464.png"></a>
<b>4</b><b>)“浏覽…</b><b>操作”的截圖</b>
<a target="_blank" href="http://blog.51cto.com/attachment/201203/210559357.png"></a>
浏覽...(1).png
<a target="_blank" href="http://blog.51cto.com/attachment/201203/210559971.png"></a>
浏覽...(2).png
<a target="_blank" href="http://blog.51cto.com/attachment/201203/210559791.png"></a>
浏覽...(3).png
<b>五、後記</b>
直接讀大文本,後果自負啊。(沒做控制呢T^T)
<a href="http://down.51cto.com/data/2360079" target="_blank">附件:http://down.51cto.com/data/2360079</a>
本文轉自winorlose2000 51CTO部落格,原文連結:http://blog.51cto.com/vaero/809876,如需轉載請自行聯系原作者