package com.bosi.chineseclass.fragments.hzcs; import android.graphics.Bitmap; import android.graphics.drawable.Drawable; import android.os.Bundle; import android.view.View; import android.view.View.OnClickListener; import android.widget.Button; import android.widget.ImageView; import android.widget.LinearLayout; import android.widget.TextView; import com.bosi.chineseclass.BaseFragment; import com.bosi.chineseclass.R; import com.bosi.chineseclass.XutilImageLoader; import com.bosi.chineseclass.han.components.HeadLayoutComponents; import com.lidroid.xutils.bitmap.BitmapDisplayConfig; import com.lidroid.xutils.bitmap.callback.BitmapLoadCallBack; import com.lidroid.xutils.bitmap.callback.BitmapLoadFrom; //汉字常识的基础功能 public abstract class AbsHzcsFragment extends BaseFragment implements OnClickListener{ XutilImageLoader mImageLoader; LinearLayout mLayoutMenu; ImageView mIvDital; Button mBtLeft; Button mBtRight; String mCurrentData[]; int currentPosition = -1; View mViewHead; protected HeadLayoutComponents mHeadActionBar; View mViewBody; TextView mTvDitalTitle; @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); if(savedInstanceState !=null)return; mImageLoader = new XutilImageLoader(mActivity); } @Override public void onDestroy() { super.onDestroy(); } @Override protected View getBasedView() { return View.inflate(mActivity, R.layout.layout_hzcs_base, null); } @Override protected void afterViewInject() { mLayoutMenu = (LinearLayout) mBaseView.findViewById(R.id.ll_hzcs_leftmenu); mIvDital = (ImageView) mBaseView.findViewById(R.id.iv_hzcs_dital); mBtLeft = (Button) mBaseView.findViewById(R.id.bt_hzcs_dital_left); mBtLeft.setOnClickListener(this); mBtRight = (Button) mBaseView.findViewById(R.id.bt_hzcs_dital_right); mBtRight.setOnClickListener(this); mTvDitalTitle = (TextView) mBaseView.findViewById(R.id.tv_hzcsdital_title); mViewHead = mBaseView.findViewById(R.id.headactionbar); mViewBody = mBaseView.findViewById(R.id.rl_hzcs_body); displayBgView(); mHeadActionBar = new HeadLayoutComponents(mActivity,mViewHead); initMenu(); } public abstract void initMenu(); public void actionLeft(View mView) { mBtRight.setVisibility(View.VISIBLE); currentPosition--; if (currentPosition < 0) return; updateDitalPg(); if (currentPosition == 0) { mBtLeft.setVisibility(View.GONE); mBtRight.setVisibility(View.VISIBLE); } } public void actionRight(View mView) { mBtLeft.setVisibility(View.VISIBLE); currentPosition++; if (currentPosition == mCurrentData.length) { return; } updateDitalPg(); if (currentPosition == mCurrentData.length - 1) { mBtRight.setVisibility(View.GONE); mBtLeft.setVisibility(View.VISIBLE); } } protected synchronized void updateDitalPg() { if(mCurrentData==null)return; if(currentPosition==-1||currentPosition>=mCurrentData.length){ currentPosition=0; } mImageLoader.getBitmapFactory().display(mIvDital, mCurrentData[currentPosition]); } protected abstract void downLoadImageOverAction(); @Override public void onClick(View mView) { switch (mView.getId()) { case R.id.bt_hzcs_dital_left: actionLeft(mView); break; case R.id.bt_hzcs_dital_right: actionRight(mView); break; default: break; } } protected void displayBgView(){ mViewBody.setBackgroundResource(R.drawable.hzqy_ditalbg); } /*---------------添加下载模块----------------*/ int loadedData = -1; public void downloadimgs() { if(mCurrentData.length>1 ){ mBtLeft.setVisibility(View.GONE); mBtRight.setVisibility(View.VISIBLE); }else{ mBtLeft.setVisibility(View.GONE); mBtRight.setVisibility(View.GONE); } loadedData = -1; updateProgress(); for(int i =0;i<mCurrentData.length;i++){ mImageLoader.getBitmapFactory().display(mIvDital, mCurrentData[i],new BitmapLoadCallBack<View>() { @Override public void onLoadCompleted(View container, String uri, Bitmap bitmap, BitmapDisplayConfig config, BitmapLoadFrom from) { updateProgress(); } @Override public void onLoadFailed(View container, String uri, Drawable drawable) { updateProgress(); } @Override public void onLoading(View container, String uri, BitmapDisplayConfig config, long total, long current) { super.onLoading(container, uri, config, total, current); } }); } } private void updateProgress(){ loadedData++; mActivity.updateProgress(loadedData,mCurrentData.length); if(loadedData==mCurrentData.length){ mActivity.dismissProgress(); downLoadImageOverAction(); loadedData=0; } } }