SpanTextViewUtils.java 4.71 KB
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();
		}
	}

}