效果如图,只是简单的实现
只有一个类,如果要加入到自己的项目中,需要从新构建,
MainActivity类
package com.example.yxui;
import java.util.ArrayList;
import java.util.List;
import android.app.Activity;
import android.app.Fragment;
import android.graphics.Bitmap;
import android.graphics.BitmapFactory;
import android.graphics.Color;
import android.graphics.Matrix;
import android.os.Bundle;
import android.support.v4.view.PagerAdapter;
import android.support.v4.view.ViewPager;
import android.support.v4.view.ViewPager.OnPageChangeListener;
import android.util.DisplayMetrics;
import android.util.Log;
import android.view.LayoutInflater;
import android.view.View;
import android.view.View.OnClickListener;
import android.view.ViewGroup;
import android.view.ViewGroup.LayoutParams;
import android.view.Window;
import android.view.animation.Animation;
import android.view.animation.TranslateAnimation;
import android.widget.ImageView;
import android.widget.TextView;
public class MainActivity extends Activity {
private static int offset = 0;
private static int off = 0;
private static int fx = 0;
private static int curr = 0;
private static int ll;
private static int dhBmpW;
private static ImageView mIv;
private static TextView mTv1,mTv2,mTv3,mTv4;
private static List<TextView> mTvList;
private static ViewPager mVp;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
this.requestWindowFeature(Window.FEATURE_NO_TITLE);
setContentView(R.layout.activity_main);
if (savedInstanceState == null) {
getFragmentManager().beginTransaction()
.add(R.id.container, new PlaceholderFragment()).commit();
}
}
public static class PlaceholderFragment extends Fragment {
private List<View> views;
private View v1,v2,v3,v4;
public PlaceholderFragment() {
}
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
View rootView = inflater.inflate(R.layout.fragment_main, container,false);
initView(rootView,inflater);
return rootView;
}
private void initView(View view,LayoutInflater inflater ){
mIv = (ImageView)view.findViewById(R.id.line);
//取图的宽和高
Bitmap bm = BitmapFactory.decodeResource(getResources(), R.drawable.btn_tab_highlight_middle_bg);
int w = bm.getWidth();
dhBmpW = bm.getWidth();
//取屏幕的宽
DisplayMetrics dm = new DisplayMetrics();
getActivity().getWindowManager().getDefaultDisplay().getMetrics(dm);
int screenW = dm.widthPixels;
ll = screenW/4;
//设置图片
Matrix matrix = new Matrix();
matrix.postScale(screenW/(4*w)+1, dhBmpW);
Bitmap newbm = Bitmap.createBitmap(bm, 0, 0, w, dhBmpW, matrix, true);
//
//设置ImageView的宽
LayoutParams para;
para = mIv.getLayoutParams();
para.width = screenW/4;
mIv.setLayoutParams(para);
mIv.setImageBitmap(newbm);
//mIv.setColorFilter(Color.GREEN);
mVp = (ViewPager)view.findViewById(R.id.vp);
views =new ArrayList<View>();
v1 = inflater.inflate(R.layout.lay1, null);
v2 = inflater.inflate(R.layout.lay2, null);
v3 = inflater.inflate(R.layout.lay3, null);
v4 = inflater.inflate(R.layout.lay4, null);
views.add(v1);
views.add(v2);
views.add(v3);
views.add(v4);
mVp.setAdapter(new MyVpAdapter(views));
mVp.setCurrentItem(0);;
mVp.setOnPageChangeListener(new MyOnpageClist());
mTv1 = (TextView)view.findViewById(R.id.tab1);
mTv2 = (TextView)view.findViewById(R.id.tab2);
mTv3 = (TextView)view.findViewById(R.id.tab3);
mTv4 = (TextView)view.findViewById(R.id.tab4);
mTv1.setOnClickListener(new MyOnCList(0));
mTv2.setOnClickListener(new MyOnCList(1));
mTv3.setOnClickListener(new MyOnCList(2));
mTv4.setOnClickListener(new MyOnCList(3));
mTvList = new ArrayList<TextView>();
mTvList.add(mTv1);
mTvList.add(mTv2);
mTvList.add(mTv3);
mTvList.add(mTv4);
}
}
public static class MyOnCList implements OnClickListener{
private int index = 0;
public MyOnCList(int i){
index = i;
}
@Override
public void onClick(View v) {
mVp.setCurrentItem(index);
for(int i=0;i<4;i++){
mTvList.get(i).setTextColor(Color.BLACK);
}
mTvList.get(index).setTextColor(0xff4bbda2);
}
}
public static class MyVpAdapter extends PagerAdapter{
private List<View> mLv;
public MyVpAdapter(List<View> mLv){
this.mLv = mLv;
}
@Override
public int getCount() {
return mLv.size();
}
@Override
public boolean isViewFromObject(View arg0, Object arg1) {
return arg0==arg1;
}
@Override
public Object instantiateItem(ViewGroup container, int position) {
container.addView(mLv.get(position),0);
return mLv.get(position);
}
@Override
public void destroyItem(ViewGroup container, int position, Object object) {
container.removeView(mLv.get(position));
}
}
public static class MyOnpageClist implements OnPageChangeListener{
@Override
public void onPageScrollStateChanged(int arg0) {
}
@Override
public void onPageScrolled(int arg0, float arg1, int arg2) {
int ox = ll*arg0 + arg2/4;
Animation am = new TranslateAnimation(off, ox,0,0);
am.setFillAfter(true);
am.setDuration(300);
mIv.startAnimation(am);
off = ox;
}
@Override
public void onPageSelected(int arg0) {
// Log.v("333", arg0+"");
for(int i=0;i<4;i++){
mTvList.get(i).setTextColor(Color.BLACK);
}
mTvList.get(arg0).setTextColor(0xff4bbda2);
}
}
}
源码下载