package com.bosi.chineseclass.su.ui.actvities; import android.os.Bundle; import android.text.TextUtils; import android.view.View; import android.widget.ImageButton; import android.widget.ImageView; import android.widget.LinearLayout; import android.widget.TextView; import com.bosi.chineseclass.AppDefine; import com.bosi.chineseclass.BaseActivity; import com.bosi.chineseclass.R; import com.bosi.chineseclass.XutilImageLoader; import com.bosi.chineseclass.components.BpStasticLayout; import com.bosi.chineseclass.components.MutilMediaPlayerTools; import com.bosi.chineseclass.components.MutilMediaPlayerTools.MutilMediaPlayerListener; import com.bosi.chineseclass.components.WordDitalExpainComponent; import com.bosi.chineseclass.control.DownLoadResouceControl; import com.bosi.chineseclass.control.DownLoadResouceControl.DownLoadInterface; import com.bosi.chineseclass.control.bphzControl.AbsBpStasitcViewControl.OnDataChangedListener; import com.bosi.chineseclass.db.BPHZ; import com.bosi.chineseclass.han.components.HeadLayoutComponents; import com.bosi.chineseclass.su.db.DbUtils; import com.bosi.chineseclass.su.db.Word; import com.bosi.chineseclass.views.BsVideoViewGroup; import com.bosi.chineseclass.views.PaintPadWindow; import com.lidroid.xutils.view.annotation.ContentView; import com.lidroid.xutils.view.annotation.ViewInject; import com.lidroid.xutils.view.annotation.event.OnClick; import java.util.ArrayList; import java.util.List; @ContentView(R.layout.fragment_container) public class WordsDetailActivity extends BaseActivity implements DownLoadInterface, MutilMediaPlayerListener { @ViewInject(R.id.deatail_headactionbar) View mHeadActionBar; HeadLayoutComponents mHeadActionBarComp; @ViewInject(R.id.iv_jfall) ImageView mjfImg; @ViewInject(R.id.oracle_word) ImageView mOracleWord; @ViewInject(R.id.detail_word) TextView mWordTextView; @ViewInject(R.id.word_explain) TextView mExplainTextView; @ViewInject(R.id.ytzi) TextView mYtTextView; @ViewInject(R.id.video_pad) BsVideoViewGroup mVideoView; @ViewInject(R.id.word_pad) ImageButton mPadView; @ViewInject(R.id.sound_container) private View mSoundContainer; @ViewInject(R.id.ll_word_dital) View mllExpainBody; Word mCurrentWord; XutilImageLoader mImageLoader; private DownLoadResouceControl mDownLoadControl; private void init() { mDownLoadControl = new DownLoadResouceControl(this); mDownLoadControl.setOnDownLoadCallback(this); mHeadActionBar = findViewById(R.id.deatail_headactionbar); initHeadActionBarComp(); mExpainComponent = new WordDitalExpainComponent(this, mllExpainBody); mPaintPadWindow = new PaintPadWindow(mContext); mImageLoader = new XutilImageLoader(mContext); setUpBpWordsControl(); } /** 初始化头部 */ private void initHeadActionBarComp() { mHeadActionBarComp = new HeadLayoutComponents(this, mHeadActionBar); mHeadActionBarComp.setTextMiddle("字源字典", -1); mHeadActionBarComp.setDefaultLeftCallBack(true); mHeadActionBarComp.setDefaultRightCallBack(true); } // 记录在声音的队列中 private List<String> sounds = new ArrayList<String>(); @OnClick(R.id.word_pad) public void actionWordPad(View mView) { showWordPad(); } @OnClick(R.id.sound_container) public void actionSoundPad(View mView) { playSound(); } public void onBackPressed() { if(mPaintPadWindow!=null) mPaintPadWindow.dismissView(); }; PaintPadWindow mPaintPadWindow; private void showWordPad() { mPaintPadWindow.createFloatView(); } @Override protected void onDestroy() { super.onDestroy(); mPaintPadWindow.onDestroy(); mPaintPadWindow.dismissView(); } private MutilMediaPlayerTools mMutilMediaPlayerTools; private void playSound() { if (mMutilMediaPlayerTools != null) { mMutilMediaPlayerTools.setCurrentFilePath(getLocalSoundsPath()); mMutilMediaPlayerTools.play(); } } @Override protected void onCreate(Bundle arg0) { super.onCreate(arg0); init(); mMutilMediaPlayerTools = new MutilMediaPlayerTools(this); mMutilMediaPlayerTools.setMutilMediaPlayerListener(this); } @Override protected void onStop() { super.onStop(); if (mMutilMediaPlayerTools != null) { mMutilMediaPlayerTools.onDestory(); } } private void showDetail(Word detail) { String temp = null; if (!TextUtils.isEmpty(detail.pinyin)) { temp = detail.pinyin; } if (!TextUtils.isEmpty(detail.ytzi)) { temp += "(" + detail.ytzi + ")"; } mYtTextView.setText(temp); if (!TextUtils.isEmpty(detail.shiyi)) { mExplainTextView.setText(detail.shiyi); } } /** 用于展示文字的具体示意 */ private void showExplain(Word detail) { mExpainComponent.setData(new String[] { detail.yanbian, detail.cysy, detail.cy }); mWordTextView.setText(detail.zitou); } WordDitalExpainComponent mExpainComponent; // ------------------------------------------- 添加和统计布局的相关内容 BpStasticLayout mBpStasitcLayout; @ViewInject(R.id.ll_hzdital_stastic) LinearLayout mLayoutStastic; public static final String EXTRA_NAME_WORDS_TAG = "tag"; BPHZ mBphz = new BPHZ(); @ViewInject(R.id.iv_hint_bphz_learn) ImageView mSampleHintView; private void setUpBpWordsControl() { updateProgress(0, 1); final int TAG = getIntent().getIntExtra(EXTRA_NAME_WORDS_TAG, -1); if (TAG != -1) { int tagFromBpLv = getIntent().getIntExtra(EXTRA_NAME_WORDS_TAG, AppDefine.ZYDefine.BPHZ_TAG_NORMAL); mBpStasitcLayout = new BpStasticLayout(mContext); mBpStasitcLayout.setViewControl(tagFromBpLv, new OnDataChangedListener() { @Override public void chagePageData(int refid) { updateUI(refid + "", ""); } @Override public void chagePageData() { mllExpainBody.setVisibility(View.VISIBLE); mExplainTextView.setVisibility(View.VISIBLE); mSampleHintView.setVisibility(View.GONE); } @Override public void onSampleLoadBefore() { mImageLoader.getBitmapFactory().display(mSampleHintView, "assets/hint_bphz_learnbg.jpg"); mllExpainBody.setVisibility(View.INVISIBLE); mExplainTextView.setVisibility(View.INVISIBLE); mSampleHintView.setVisibility(View.VISIBLE); } }); mLayoutStastic.addView(mBpStasitcLayout.getBaseView()); mLayoutStastic.setVisibility(View.VISIBLE); } else { mLayoutStastic.setVisibility(View.INVISIBLE); String word = getIntent().getStringExtra("word"); updateUI("", word); } } private void updateUI(String id, String word) { mCurrentWord = DbUtils.getInstance(this).getExplain(word, id); if(mCurrentWord ==null ||TextUtils.isEmpty(mCurrentWord.zitou)){ showToastLong("未找到相关字源"); mContext.finish(); } showDetail(mCurrentWord); showExplain(mCurrentWord); boolean isDownLoadSuccess = mDownLoadControl.downloadFiles(); if(isDownLoadSuccess){ actionSuccess(); } } // ------------------------------------------------------------下载播放生意----------------------------------------------- @Override public void onDownLoadCallback(int mCurrentSize, int wholeSize) { if(mCurrentSize == wholeSize){ actionSuccess(); } } @Override public void finished() { if (mMutilMediaPlayerTools != null) { mMutilMediaPlayerTools.reset(); } } public String[] getLocalSoundsPath(){ String [] mFilePaths = null; if(sounds!=null &&sounds.size()>0){ mFilePaths = new String[sounds.size()]; for(int i=0;i<sounds.size();i++){ mFilePaths[i] = mDownLoadControl.getAbsFilePath()+sounds.get(i) + ".mp3"; } } return mFilePaths; } @Override public String[] getDownLoadUrls() { String[] urls = null; if (!TextUtils.isEmpty(mCurrentWord.pinyin)) { sounds = DbUtils.getInstance(this).getPyList(mCurrentWord.pinyin); urls = new String[sounds.size()+2]; if (sounds != null && sounds.size() > 0) { for (int i = 0; i < sounds.size(); i++) { urls[i] = AppDefine.URLDefine.URL_PINREADER + sounds.get(i) + ".mp3"; } } }else{ urls = new String[2]; } String path = "http://www.yuwen100.cn/yuwen100/zy/hanzi-flash/" + mCurrentWord.refid + ".mp4"; String pathZxtuPath = "http://www.yuwen100.cn/yuwen100/zy/zyzd-clips/zxtu/" + mCurrentWord.refid + ".jpg"; urls[sounds.size()]=path; urls[sounds.size()+1]=pathZxtuPath; String pathZytu = "http://www.yuwen100.cn/yuwen100/zy/zyzd-clips/zytu/" + mCurrentWord.refid + ".jpg"; mImageLoader.getBitmapFactory().display(mOracleWord, pathZytu); return urls; } @Override public String getFolderPath() { return AppDefine.FilePathDefine.APP_DICTDITALNPATH + mCurrentWord.refid+"/"; } private void actionSuccess(){ loadImage() ; playVideo(); dismissProgress(); playSound(); } private void loadImage() { String fileAbs = mDownLoadControl.getAbsFilePath(); //从本地读取图片 mImageLoader.getBitmapFactory().display(mjfImg, fileAbs+mCurrentWord.refid + ".jpg"); } //420588z 420588zjl private void playVideo(){ //从本地读取视频 String fileAbs = mDownLoadControl.getAbsFilePath(); mVideoView.playVideo(fileAbs+mCurrentWord.refid + ".mp4"); } }