package com.banking.xc.utils.transutil; import java.util.ArrayList; import java.util.Random; import skytv_com.banking.enjoymovie.R; import com.banking.xc.entity.HomeItem; import com.banking.xc.utils.DPIUtil; import com.banking.xc.utils.MyActivity; import com.banking.xc.utils.MySimpleAdapter; import android.view.View; import android.view.animation.AlphaAnimation; import android.view.animation.Animation; import android.view.animation.Animation.AnimationListener; import android.view.animation.TranslateAnimation; import android.widget.GridView; import android.widget.ImageView; import android.widget.RelativeLayout; public class VacationTransformUtil implements Runnable{ public final static int LEFT_TO_RIGHT = 1; public final static int RIGHT_TO_LEFT = 2; public final static int UP_TO_DOWN = 3; public final static int DOWM_TO_UP = 4; public final static int DOWNLEFT_TO = 5; public final static int DOWNRIGHT_TO = 6; public final static int UPLEFT_TO = 7; public final static int UPRIGHT_TO = 8; GridView mGridView; ArrayList<HomeItem> mRecommendDataList; /*Animation leftXAnimation; Animation rightXAnimation; Animation upYAnimation; Animation downYAnimation;*/ //Animation dispareAnimation; MyActivity myActivity; MySimpleAdapter mAdapter; //RelativeLayout[] views = new public VacationTransformUtil(GridView gridView,ArrayList<HomeItem> recommendDataList,MySimpleAdapter adapter,MyActivity myActivity){ mGridView = gridView; mRecommendDataList=recommendDataList; this.myActivity = myActivity; this.mAdapter = adapter; //initAnimation(); } @Override public void run() { //是否需要tag判断 while(true){ try { Thread.currentThread().sleep(7000); } catch (InterruptedException e) { e.printStackTrace(); } { myActivity.post(new Runnable(){ @Override public void run() { //transformRecycle(); twoPicChange(); } }); } } } public int[] getRandomTransformNumbers(){ //012 //345 //678 position int[] result = new int[2]; result[0] = 0; result[1] = 3; return result; } /*public void initAnimation(){ leftXAnimation= new TranslateAnimation(0, -DPIUtil.dip2px(90), 0, 0); leftXAnimation.setDuration(700); rightXAnimation= new TranslateAnimation(0, DPIUtil.dip2px(90), 0, 0); rightXAnimation.setDuration(700); upYAnimation = new TranslateAnimation(0, 0, 0, -DPIUtil.dip2px(85)); upYAnimation.setDuration(700); downYAnimation = new TranslateAnimation(0, 0, 0, DPIUtil.dip2px(85)); downYAnimation.setDuration(700); }*/ /*public void transformDataList(){ //012 //345 //678 position ArrayList<HomeItem> newDataList = new ArrayList<HomeItem>(); newDataList.add(mRecommendDataList.get(1)); newDataList.add(mRecommendDataList.get(2)); newDataList.add(mRecommendDataList.get(5)); newDataList.add(mRecommendDataList.get(0)); newDataList.add(mRecommendDataList.get(4)); newDataList.add(mRecommendDataList.get(8)); newDataList.add(mRecommendDataList.get(3)); newDataList.add(mRecommendDataList.get(6)); newDataList.add(mRecommendDataList.get(7)); mRecommendDataList = null; mRecommendDataList = newDataList; }*/ public void changeData(int i,int j){ HomeItem item1 = mRecommendDataList.get(i); HomeItem item2 = mRecommendDataList.get(j); mRecommendDataList.add(j, item1); mRecommendDataList.remove(j+1); mRecommendDataList.add(i, item2); mRecommendDataList.remove(i+1); mAdapter.notifyDataSetChanged(); } public void doAnimation(final RelativeLayout target,final int tag,final int i,final int j){ Animation dispareAnimation = new AlphaAnimation(100, 0); dispareAnimation.setDuration(1000); dispareAnimation.setAnimationListener(new AnimationListener() { @Override public void onAnimationStart(Animation animation) { } @Override public void onAnimationRepeat(Animation animation) { } @Override public void onAnimationEnd(Animation animation) { myActivity.post(new Runnable() { @Override public void run() { target.getChildAt(0).setVisibility(View.GONE); target.getChildAt(1).setVisibility(View.GONE); target.setBackgroundDrawable(new VacationRecommendTransBg(myActivity,target,tag)); } }); myActivity.post(new Runnable(){ @Override public void run() { target.setBackgroundDrawable(null); target.getChildAt(0).setVisibility(View.VISIBLE); target.getChildAt(1).setVisibility(View.VISIBLE); changeData(i,j); } }, 1500); } }); target.startAnimation(dispareAnimation); } public void doAnimation(final RelativeLayout target,final int tag){ Animation dispareAnimation = new AlphaAnimation(100, 0); dispareAnimation.setDuration(1000); dispareAnimation.setAnimationListener(new AnimationListener() { @Override public void onAnimationStart(Animation animation) { } @Override public void onAnimationRepeat(Animation animation) { } @Override public void onAnimationEnd(Animation animation) { myActivity.post(new Runnable() { @Override public void run() { target.getChildAt(0).setVisibility(View.GONE); target.getChildAt(1).setVisibility(View.GONE); target.setBackgroundDrawable(new VacationRecommendTransBg(myActivity,target,tag)); } }); myActivity.post(new Runnable(){ @Override public void run() { target.setBackgroundDrawable(null); target.getChildAt(0).setVisibility(View.VISIBLE); target.getChildAt(1).setVisibility(View.VISIBLE); } }, 1500); } }); target.startAnimation(dispareAnimation); } public void twoPicChange(){ Random random = new Random(); int i = random.nextInt(9); int j = i; while(j==i){ j=random.nextInt(9); } final RelativeLayout targetView1 = (RelativeLayout) mGridView.getChildAt(i); final RelativeLayout targetView2 = (RelativeLayout) mGridView.getChildAt(j); //012 //345 //678 position int ix = i%3; int iy = i/3; int jx = j%3; int jy = j/3; int tagx = 0; int tagy = 0; if(ix>jx){ if(iy>jy){ tagx = DOWNRIGHT_TO; tagy = UPLEFT_TO; }else{ if(iy==jy){ tagx = RIGHT_TO_LEFT; tagy = LEFT_TO_RIGHT; }else{ tagx = UPRIGHT_TO; tagy = DOWNLEFT_TO; } } }else{ if(ix==jx){ if(iy>jy){ tagx = DOWM_TO_UP; tagy = UP_TO_DOWN; }else{ tagx = UP_TO_DOWN; tagy = DOWM_TO_UP; } }else{ //ix<jx if(iy>jy){ tagx = DOWNLEFT_TO; tagy = UPRIGHT_TO; }else{ if(iy==jy){ tagx = LEFT_TO_RIGHT; tagy = RIGHT_TO_LEFT; }else{ tagx = UPLEFT_TO; tagy = DOWNRIGHT_TO; } } } } doAnimation(targetView1,tagx); doAnimation(targetView2,tagy,i, j); } /*public void transformRecycle(){ final ImageView[] imageViews = new ImageView[9]; for(int i=0;i<9;i++){ imageViews[i] = (ImageView) mGridView.getChildAt(i).findViewById(R.id.vacation_recommend_iv); } imageViews[0].startAnimation(downYAnimation); imageViews[1].startAnimation(leftXAnimation); imageViews[2].startAnimation(leftXAnimation); imageViews[3].startAnimation(downYAnimation); imageViews[5].startAnimation(upYAnimation); imageViews[6].startAnimation(rightXAnimation); imageViews[7].startAnimation(rightXAnimation); imageViews[8].startAnimation(upYAnimation); }*/ }