SpanTextViewUtils.java
4.71 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
package com.hjx.miaohongentry.util;
import java.util.Timer;
import java.util.TimerTask;
import java.util.concurrent.ExecutorService;
import java.util.concurrent.Executors;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
import net.sourceforge.pinyin4j.PinyinHelper;
import net.sourceforge.pinyin4j.format.HanyuPinyinCaseType;
import net.sourceforge.pinyin4j.format.HanyuPinyinOutputFormat;
import net.sourceforge.pinyin4j.format.HanyuPinyinToneType;
import net.sourceforge.pinyin4j.format.exception.BadHanyuPinyinOutputFormatCombination;
import android.app.Activity;
import android.app.AlertDialog;
import android.app.Dialog;
import android.content.ComponentName;
import android.content.Context;
import android.content.Intent;
import android.graphics.Color;
import android.graphics.drawable.AnimationDrawable;
import android.provider.Settings;
import android.text.style.ForegroundColorSpan;
import android.view.LayoutInflater;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.ImageButton;
import android.widget.ImageView;
import android.widget.RelativeLayout;
import android.widget.Toast;
import com.hjx.miaohongentry.activity.WordActivity;
public class SpanTextViewUtils {
public static long lastTime;// 上一次点击时间
public static long currentTime;// 这一次点击时间
private static View contentView;
private static Dialog dialog;
private static AnimationDrawable mAnimationDrawable;
public static ForegroundColorSpan mForegroundColorSpan = new ForegroundColorSpan(Color.CYAN);
/**
* 进入描红应用 adb shell am force-stop air.com.wyt.HanZiMiaoHong
*
* @param context
* @param character
* 需要描红的汉字
*/
public static void gotoMiaohong(Context context, String character) {
// 一个字的情况下,进入描红
String pinyins = converterToSpell(character);
String py = pinyins.split(",")[0].trim();
boolean isCharacter = false;
Pattern p = Pattern.compile("[\\u4e00-\\u9fa5]");
Matcher m = p.matcher(character);
while (m.find()) {
isCharacter = true;
}
if (isCharacter) {// 语文科目且是汉字才跳
//&& Constants.OPENFLAG == 0//语文科目且
Intent intent = new Intent();
ComponentName cn = new ComponentName("air.com.wyt.HanZiMiaoHong", "air.com.wyt.HanZiMiaoHong.AppEntry");
intent.setComponent(cn);
// 描红传入规则:汉字&_拼音
intent.putExtra("type", character.trim() + "&_" + py.trim());
try {
// ((Activity)context).startActivityForResult(intent, WordActivity.REQUEST_CODE_MIAO_HONG);
context.startActivity(intent);
} catch (Exception e) {
Toast.makeText(context, "未安装汉字描红!",
Toast.LENGTH_SHORT).show();
// return;
//ToastUtil.showLong(context, context.getResources().getString(R.string.apk_none_hanzimiaohong));
}
StatisUtils.setEnterMiaohongTime(context, System.currentTimeMillis());
StatisUtils.addTotalNum(context);
int count = StatisUtils.getTodayNum(context);
count ++;
StatisUtils.setTodayNum(context,count);
}
}
/**
* 汉字转换位汉语全拼,英文字符不变,特殊字符丢失
* 支持多音字,生成方式如(重当参:zhongdangcen,zhongdangcan,chongdangcen
* ,chongdangshen,zhongdangshen,chongdangcan)
*
* @param chines
* 汉字
* @return 拼音
*/
public static String converterToSpell(String chines) {
StringBuffer pinyinName = new StringBuffer();
char[] nameChar = chines.toCharArray();
HanyuPinyinOutputFormat defaultFormat = new HanyuPinyinOutputFormat();
defaultFormat.setCaseType(HanyuPinyinCaseType.LOWERCASE);
defaultFormat.setToneType(HanyuPinyinToneType.WITHOUT_TONE);
for (int i = 0; i < nameChar.length; i++) {
if (nameChar[i] > 128) {
try {
// 取得当前汉字的所有全拼
String[] strs = PinyinHelper.toHanyuPinyinStringArray(nameChar[i], defaultFormat);
if (strs != null) {
for (int j = 0; j < strs.length; j++) {
pinyinName.append(strs[j]);
if (j != strs.length - 1) {
pinyinName.append(",");
}
}
}
} catch (BadHanyuPinyinOutputFormatCombination e) {
e.printStackTrace();
}
} else {
pinyinName.append(nameChar[i]);
}
pinyinName.append(" ");
}
return pinyinName.toString();
}
public static ExecutorService executorService = Executors.newFixedThreadPool(5);
private static void startAnimation() {
if (mAnimationDrawable != null) {
mAnimationDrawable.start();
Timer mytimer = new Timer();
TimerTask mytt = new TimerTask() {
@Override
public void run() {
stopAnimation();
}
};
mytimer.schedule(mytt, 1000);
}
}
public static void stopAnimation() {
if (mAnimationDrawable != null) {
mAnimationDrawable.stop();
}
}
}