欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  技术分享

Android Viewpager Fragme动态切换菜单_安卓左右滑动切换菜单例子

程序员文章站 2022-03-01 14:59:38
...

今天分享一个Android Viewpager Fragme切换菜单的例子、类似于老版本的微信的切换效果

利用Viewpager+Fragment实现顶部选项卡、可以通过滑动、点击来进行Fragment页面切换

如需要添加页面或减少页面、修改PageSize即可——下方对应添加Fragment到管理器中

先来看一下运行效果吧、是可以左右滑动的、也可以点击的哈

Android Viewpager Fragme动态切换菜单_安卓左右滑动切换菜单例子


初始化动画、这个就是页卡滑动时、下面的横线也滑动的效果、在这里需要计算一些数据

private void InitImageView() {
	imageView = (ImageView) findViewById(R.id.cursor);
	// 获取图片宽度
	bmpW = BitmapFactory.decodeResource(getResources(),
			R.drawable.tab_selected_bg).getWidth();
	DisplayMetrics dm = new DisplayMetrics();
	getWindowManager().getDefaultDisplay().getMetrics(dm);
	// 获取分辨率宽度
	int screenW = dm.widthPixels;
	// 计算偏移量--(屏幕宽度/页卡总数-图片实际宽度)/2
	offset = (screenW / pageSize - bmpW) / 2;
	// = 偏移量
	Matrix matrix = new Matrix();
	matrix.postTranslate(offset, 0);
	// 设置动画初始位置
	imageView.setImageMatrix(matrix);
}


头标点击监听

private class MyOnClickListener implements OnClickListener {
	private int index = 0;

	public MyOnClickListener(int i) {
		index = i;
	}

	public void onClick(View v) {

		switch (index) {
		case 0:
			voiceAnswer.setTextColor(selectedColor);
			healthPedia.setTextColor(unSelectedColor);
			pDected.setTextColor(unSelectedColor);
			break;
		case 1:
			healthPedia.setTextColor(selectedColor);
			voiceAnswer.setTextColor(unSelectedColor);
			pDected.setTextColor(unSelectedColor);
			break;
		case 2:
			pDected.setTextColor(selectedColor);
			voiceAnswer.setTextColor(unSelectedColor);
			healthPedia.setTextColor(unSelectedColor);
			break;
		}
		viewPager.setCurrentItem(index);
	}

}


为选项卡绑定监听器

public class MyOnPageChangeListener implements OnPageChangeListener {
	// 页卡1 -> 页卡2 偏移量
	int one = offset * 2 + bmpW;
	// 页卡1 -> 页卡3 偏移量
	int two = one * 2;

	public void onPageScrollStateChanged(int index) {
	}

	public void onPageScrolled(int arg0, float arg1, int arg2) {
	}

	public void onPageSelected(int index) {
		// 显然这个比较简洁,只有一行代码。
		Animation animation = new TranslateAnimation(one * currIndex,
			one * index, 0, 0);
		currIndex = index;
		// True:图片停在动画结束位置
		animation.setFillAfter(true);
		animation.setDuration(300);
		imageView.startAnimation(animation);

		switch (index) {
		case 0:
			voiceAnswer.setTextColor(selectedColor);
			healthPedia.setTextColor(unSelectedColor);
			pDected.setTextColor(unSelectedColor);
			break;
		case 1:
			healthPedia.setTextColor(selectedColor);
			voiceAnswer.setTextColor(unSelectedColor);
			pDected.setTextColor(unSelectedColor);
			break;
		case 2:
			pDected.setTextColor(selectedColor);
			voiceAnswer.setTextColor(unSelectedColor);
			healthPedia.setTextColor(unSelectedColor);
			break;
		}
	}
}


核心代码都在上面了哈、源代码下载链接: http://dwtedx.com/download.html?bdkey=s/1i37mXqX 密码: ox5s