package com.bosi.chineseclass.fragments;
import java.io.IOException;
import java.util.Properties;
import android.annotation.TargetApi;
import android.content.res.Configuration;
import android.os.Build;
import android.view.Gravity;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.ImageView;
import android.widget.LinearLayout;
import android.widget.LinearLayout.LayoutParams;
import android.widget.TextView;
import com.bosi.chineseclass.AppDefine;
import com.bosi.chineseclass.BaseFragment;
import com.bosi.chineseclass.R;
import com.bosi.chineseclass.XutilImageLoader;
import com.bosi.chineseclass.components.MediaPlayerPools;
import com.bosi.chineseclass.control.DownLoadResouceControl;
import com.bosi.chineseclass.control.DownLoadResouceControl.DownLoadInterface;
import com.bosi.chineseclass.han.components.HeadLayoutComponents;
import com.bosi.chineseclass.views.AutoChangeLineViewGroup;
import com.bosi.chineseclass.views.BsVideoViewGroup;
import com.bosi.chineseclass.views.BsVideoViewGroup.OnVideoRestartListener;
import com.lidroid.xutils.view.annotation.ViewInject;
import com.lidroid.xutils.view.annotation.event.OnClick;
/**
* @author zhujohnle 拼音学习的页面 包括声母和韵母
*
*
* #bug 当关闭屏幕 再次进入到拼音学习的时候 video videoReader 的大小改变 修改方法在surface change 回掉中再次设置宽和高
*
*/
@TargetApi(Build.VERSION_CODES.JELLY_BEAN)
public class PyLearnFragment extends BaseFragment implements DownLoadInterface ,OnVideoRestartListener {
String[] marrayForLearn = null;
@ViewInject(R.id.ll_pylearn_leftbody)
LinearLayout mLinearPinyinLeft;
@ViewInject(R.id.ll_pinyin_sym_item_dital)
LinearLayout mBody;
AutoChangeLineViewGroup mAutoViewGroup;
@ViewInject(R.id.vv_pinyinlearn_reader)
BsVideoViewGroup mVideoViewRead;
@ViewInject(R.id.vv_pinyinlearn_writer)
BsVideoViewGroup mVideoViewWrite;
@ViewInject(R.id.pinyinlearn_dital)
LinearLayout mLayoutDital;
Properties mPorperties;
String mPressedZm = "b";
@ViewInject(R.id.iv_pyxx_sm)
ImageView mImageViewSm;
@ViewInject(R.id.iv_pyxx_ym)
ImageView mImageViewYm;
@ViewInject(R.id.headactionbar)
View mViewHeadbar;
@ViewInject(R.id.iv_pinyinlearn_reader)
ImageView mImageReader;
MediaPlayerPools mMediaPlayerPools;
XutilImageLoader mImageLoader;
private final String SUFFIX_FYYL = "_f";
private final String SUFFIX_PYP = "_p";
private final String SUFFIX_DYD = "_d";
private final String SUFFIX_DYDD = "_dd";
@OnClick(R.id.iv_pyxx_ym)
public void acitonYm(View mView) {
mImageViewYm.bringToFront();
mPressedZm = "a";
initBasicPinYin(CategoryPinyin.YM);
addPinYinNameDital();
downLoadFilesBaseCurrentZiMu();
}
@OnClick(R.id.iv_pyxx_sm)
public void acitonSm(View mView) {
mPressedZm = "b";
mImageViewSm.bringToFront();
initBasicPinYin(CategoryPinyin.SM);
addPinYinNameDital();
downLoadFilesBaseCurrentZiMu();
showPresentPressedZmFyyl(getPropertiesFromKey(mPressedZm + SUFFIX_FYYL));
}
@Override
protected View getBasedView() {
return View.inflate(mActivity, R.layout.pinyin_layout_bodyview, null);
}
@Override
public void onResume() {
super.onResume();
// downLoadFilesBaseCurrentZiMu();
// showPresentPressedZmFyyl(getPropertiesFromKey(mPressedZm + SUFFIX_FYYL));
}
@Override
public void onConfigurationChanged(Configuration newConfig) {
}
private void setup() {
initComponents();
initBasicPinYin(CategoryPinyin.SM);
addPinYinNameDital();
}
private void initComponents() {
mAutoViewGroup = new AutoChangeLineViewGroup(mActivity);
mLinearPinyinLeft.addView(mAutoViewGroup);
}
private String getAbsoultFilePath(){
return mDownLoadControl.getAbsFilePath();
}
private void addPinYinNameDital() {
mAutoViewGroup.removeAllViews();
for (int i = 0; i < marrayForLearn.length; i++) {
final TextView mTextView = new TextView(mActivity);
mTextView.setTextSize(20);
mTextView.setGravity(Gravity.CENTER);
mTextView.setPadding(5, 3, 5, 3);
mTextView.setBackground(getResources().getDrawable(
R.drawable.pingying_learn_zibg));
mTextView.setGravity(Gravity.CENTER);
mTextView.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View arg0) {
// 检查固定的目录是否有下载数据 如果没有则需要创建下载
mPressedZm = mTextView.getText().toString();
downLoadFilesBaseCurrentZiMu();
showPresentPressedZmFyyl(getPropertiesFromKey(mPressedZm
+ SUFFIX_FYYL));
}
});
mTextView.setText(marrayForLearn[i]);
mAutoViewGroup.addView(mTextView);
}
}
private void downLoadFilesBaseCurrentZiMu(){
boolean isDownLoadSuccess = mDownLoadControl.downloadFiles();
if(isDownLoadSuccess){
notifyUIChanged();
}
}
private String getPropertiesFromKey(String key) {
String value = mPorperties.getProperty(key);
try {
return new String(value.getBytes("ISO-8859-1"), "UTF-8");
} catch (Exception e) {
}
return "";
}
@OnClick(R.id.bt_pingyinlearn_fyyl)
public void actionFyyl(View mView) {
showPresentPressedZmFyyl(getPropertiesFromKey(mPressedZm + SUFFIX_FYYL));
}
@OnClick(R.id.bt_pingyinlearn_pyp)
public void actionPyp(View mView) {
showPypDital(getPropertiesFromKey(mPressedZm + SUFFIX_PYP).split("#"));
}
@OnClick(R.id.bt_pingyinlearn_dyd)
public void actionDyd(View mView) {
showdydDital(getPropertiesFromKey(mPressedZm + SUFFIX_DYD).split("#"));
}
private void showPresentPressedZmFyyl(String msg) {
mLayoutDital.removeAllViews();
TextView mTextView = new TextView(mActivity);
mTextView.setText(msg);
mTextView.setTextSize(20);
mLayoutDital.addView(mTextView);
}
/**
* 更换拼一拼的数据内容
*
* */
private void showPypDital(String[] mArrays) {
if (mArrays == null)
return;
mLayoutDital.removeAllViews();
for (int i = 0; i < mArrays.length; i++) {
TextView mTextView = new TextView(mActivity);
mTextView.setTextSize(20);
mTextView.setGravity(Gravity.CENTER);
mTextView.setText(mArrays[i]);
LinearLayout.LayoutParams mLayoutParams = new LayoutParams(
LayoutParams.MATCH_PARENT, LayoutParams.WRAP_CONTENT, 1);
mLayoutParams.setMargins(10, 0, 0, 0);
mTextView.setLayoutParams(mLayoutParams);
mLayoutDital.addView(mTextView);
}
}
/**
* 更换读一读的数据内容
*
* */
private void showdydDital(String[] mArrays) {
if (mArrays == null || mArrays.length == 0)
return;
mLayoutDital.removeAllViews();
AutoChangeLineViewGroup mAutoChangeLineView = new AutoChangeLineViewGroup(
mActivity);
for (int i = 0; i < mArrays.length; i++) {
final int tagPosition = i;
View mView = View.inflate(mActivity, R.layout.item_pinyinlearn_pyp,
null);
TextView mTextView = (TextView) mView
.findViewById(R.id.tv_pinyinlearn_item_dyd);
final View mViewVoice = (TextView) mView
.findViewById(R.id.bt_pinyinlearn_item_dyd);
mViewVoice.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View arg0) {
String [] mVideoNames = getPropertiesFromKey(mPressedZm + SUFFIX_DYDD)
.split("#");
String fileName = mVideoNames[tagPosition]+AppDefine.STUFFDEFICE.STUFF_VOICE;
playVoice(getAbsoultFilePath()+fileName);
}
});
mTextView.setTextSize(20);
mTextView.setText(mArrays[i]);
mAutoChangeLineView.addView(mView);
}
mLayoutDital.addView(mAutoChangeLineView);
}
private void initBasicPinYin(CategoryPinyin mCategory) {
switch (mCategory) {
case SM:
marrayForLearn = getString(R.string.sm_learn_dital).split("#");
break;
case YM:
marrayForLearn = getString(R.string.ym_learn_dital).split("#");
break;
default:
break;
}
}
DownLoadResouceControl mDownLoadControl;
@Override
protected void afterViewInject() {
mVideoViewRead.setOnVideoRestartListener(this);
mVideoViewWrite.setOnVideoRestartListener(this);
mDownLoadControl = new DownLoadResouceControl(mActivity);
mDownLoadControl.setOnDownLoadCallback(this);
HeadLayoutComponents mHeadActionbar = new HeadLayoutComponents(
mActivity, mViewHeadbar);
mHeadActionbar.setTextMiddle("拼音学习", -1);
mMediaPlayerPools = new MediaPlayerPools(mActivity);
setup();
mPorperties = new Properties();
try {
mPorperties.load(getResources().getAssets().open("pinyin"));
} catch (IOException e) {
e.printStackTrace();
}
mImageLoader = new XutilImageLoader(mActivity);
downLoadFilesBaseCurrentZiMu();
showPresentPressedZmFyyl(getPropertiesFromKey(mPressedZm + SUFFIX_FYYL));
mVideoViewWrite.setVideoBackGround(R.drawable.pinyin_learn_imgbg);
}
@Override
public void onDestroy() {
super.onDestroy();
mPorperties.clear();
mPorperties = null;
}
public enum CategoryPinyin {
SM, YM
}
private void playVoice(String fileName){
mMediaPlayerPools.playMediaFile(fileName);
}
private void playVideoRead(){
mVideoViewRead.playVideo(getAbsoultFilePath()+mPressedZm+".mp4");
mVideoViewWrite.playVideo(getAbsoultFilePath()+mPressedZm+"-1.mp4");
}
private void displayCurrentZmbg(){
mImageLoader.getBitmapFactory().display(mImageReader, getAbsoultFilePath()+mPressedZm+".jpg");
}
@Override
public String[] getDownLoadUrls() {
String[] mVoiceUrls = getPropertiesFromKey(mPressedZm + SUFFIX_DYDD)
.split("#");
String[] mUrlSoruce = new String[mVoiceUrls.length+4];
// 组拼
for (int i = 0; i < mVoiceUrls.length; i++) {
String voiceSouceValue = mVoiceUrls[i];
String urlForVoice = AppDefine.URLDefine.URL_PINYINVOICE
+ mPressedZm + "/" + voiceSouceValue + ".mp3";
mUrlSoruce[i] = urlForVoice;
}
mUrlSoruce[mVoiceUrls.length] = AppDefine.URLDefine.URL_PINYINVOICE
+ mPressedZm + "/" + mPressedZm+".mp4";
mUrlSoruce[mVoiceUrls.length+1] = AppDefine.URLDefine.URL_PINYINVOICE
+ mPressedZm + "/" + mPressedZm+"-1.mp4";
mUrlSoruce[mVoiceUrls.length+2] = AppDefine.URLDefine.URL_PINYINVOICE
+ mPressedZm + "/" + mPressedZm+".jpg";
mUrlSoruce[mVoiceUrls.length+3] = AppDefine.URLDefine.URL_PINYINVOICE
+ mPressedZm + "/" + mPressedZm+".mp3";
http://www.yuwen100.cn/yuwen100/hzzy/Android/pyxx/b/b.mp3
/*http://www.yuwen100.cn/yuwen100/zy/zyzd-clips/pinyinread/a4.mp3*/
return mUrlSoruce;
}
@Override
public void onDownLoadCallback(int mCurrentSize, int wholeSize) {
if(mCurrentSize ==wholeSize){
//该播放mp4的播放mp4 该显示图片的显示图片
notifyUIChanged();
}
}
private void playZiMuVoice(){
String fileName =mPressedZm+AppDefine.STUFFDEFICE.STUFF_VOICE;
playVoice(getAbsoultFilePath()+fileName);
}
public void notifyUIChanged(){
playZiMuVoice();
displayCurrentZmbg();
playVideoRead();
}
@Override
public String getFolderPath() {
return AppDefine.FilePathDefine.APP_PINYINLEARNPATH
+ mPressedZm + "/";
}
@Override
public void OnVideoRestarted() {
playZiMuVoice();
}
}