Android tabs 背景滑动效果

我们先来看看效果图,这样大家看了以后,就会做的它是怎么实现的。效果是什么样的。

1.png



       我们在来看看代码:

public class SlipTabAct extends Activity{

final int SUM = 3;

TextView[] mTVs;

ImageView[] mBGs;

int mPreClickID = 0;

int mCurClickID = 0;

@Override
public void onCreate(Bundle savedInstanceState){

super.onCreate(savedInstanceState);

setContentView(R.layout.main);

initView();

}

public void initView(){

mTVs = new TextView[SUM];

mTVs[0] = (TextView) this.findViewById(R.id.t1);

mTVs[1] = (TextView) this.findViewById(R.id.t2);

mTVs[2] = (TextView) this.findViewById(R.id.t3);

mBGs = new ImageView[SUM];

mBGs[0] = (ImageView) this.findViewById(R.id.b1);

mBGs[1] = (ImageView) this.findViewById(R.id.b2);

mBGs[2]= (ImageView) this.findViewById(R.id.b3);

for(int i = 0; i < SUM; i++){

mTVs[i].setOnClickListener(clickListener);

}

mTVs[0].setEnabled(false);

mPreClickID = 0;

}

private void updataCurView(int curClickID){

if(0 <= curClickID && SUM > curClickID){

mTVs[mPreClickID].setEnabled(true);

mTVs[curClickID].setEnabled(false);

mBGs[mPreClickID].setVisibility(View.INVISIBLE);

mBGs[curClickID].setVisibility(View.VISIBLE);

mPreClickID = curClickID;

}

}

private void startSlip(View v){

Animation a = new TranslateAnimation(0.0f, v.getLeft() - mTVs[mPreClickID].getLeft(), 0.0f, 0.0f);

a.setDuration(400);
a.setFillAfter(false);

a.setFillBefore(false);

for(int i = 0; i < SUM; i++)

{

if(mTVs[i] == v){

mCurClickID = i;

break;

}

}

a.setAnimationListener(new AnimationListener(){

public void onAnimationStart(Animation animation){

// TODO Auto-generated method stub

}

public void onAnimationEnd(Animation animation){

// TODO Auto-generated method stub

updataCurView(mCurClickID);

}

public void onAnimationRepeat(Animation animation){

// TODO Auto-generated method stub

}

});

mBGs[mPreClickID].startAnimation(a);
}

private OnClickListener clickListener = new OnClickListener(){

public void onClick(final View v){

startSlip(v);

}

};

}

我们从图就可以看出,这个是什么意思了,就是说,当我们点击或是指向到黄、智、远,这三个字的时候,就会出现一个背景,就是这么一个滑动效果,这个效果要怎么加在你的应用当中,这就看个人了。我们来看看这个是怎么样实现的。我们声明几个变量,完事我们再得到这些。定义好的变量。我们先用一个for循环mTVs.setOnClickListener(clickListener);还要写上,再往下就是判断了,我们把判断的条件写成0 <= curClickID && SUM > curClickID记住的是,这两个里面要false。a.setFillAfter(false);a.setFillBefore(false);。这些都写完了,我们就要收尾了,收尾的时候要写上startSlip(v);括号里要写上v。这个一般人会给忘记。不多说了,感觉好的话,就帮我顶一顶。好让更多的人知道这个效果。

 

本文转自:http://www.eoeandroid.com/thread-69587-1-2.html

posted @ 2011-11-24 15:01  Glan  阅读(235)  评论(0)    收藏  举报