问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

ActionBar的tab栏上左右滑动的横线怎么像微信那样平滑的滑动

发布网友 发布时间:2022-04-23 21:37

我来回答

1个回答

热心网友 时间:2023-10-10 13:53

package com.tematch.androidsample;
public class Activity2 extends Activity{

private ViewPager vpager;
public static final int MAX_TAB_SIZE = 3;
public static final String ARGUMENTS_NAME = "args";

public static final String ARG_PLANET_NUMBER = "planet_number";

private LayoutInflater inflater;
private ListView lv;
private ImageView iv;// 页卡标题动画图片
private LinearLayout linearLayout;
private TextView tv1;
private TextView tv2;
private TextView tv3;
private int textViewW = 0;// 页卡标题的宽度
private int currIndex = 0;// 当前页卡编号
private List<View> listviews;
private View view1,view2,view3;

@Override
protected void onCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);
setContentView(R.layout.activity_2);
iv = (ImageView) findViewById(R.id.cursor);
linearLayout = (LinearLayout) findViewById(R.id.linearLayout1);
vpager = (ViewPager) this.findViewById(R.id.vpager);
vpager.setOffscreenPageLimit(2);

initview();

initViewPager();
InitTextView();
InitImageView();

}
/* 初始化页卡标题 */
private void InitTextView() {
tv1 = (TextView) findViewById(R.id.text1);
tv2 = (TextView) findViewById(R.id.text2);
tv3 = (TextView) findViewById(R.id.text3);

tv1.setOnClickListener(new MyOnClickListener(0));
tv2.setOnClickListener(new MyOnClickListener(1));
tv3.setOnClickListener(new MyOnClickListener(2));
}

/* 标题点击监听 */
public class MyOnClickListener implements android.view.View.OnClickListener{

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

@Override
public void onClick(View v) {

vpager.setCurrentItem(index);
}

}
public void initview(){
//监听页面改变的事件
vpager.setOnPageChangeListener(new OnPageChangeListener() {

@Override
public void onPageSelected(int arg0) {

if (textViewW == 0) {
textViewW = tv1.getWidth();
}
Animation animation = new TranslateAnimation(textViewW * currIndex,
textViewW * arg0, 0, 0);
currIndex = arg0;
animation.setFillAfter(true);/* True:图片停在动画结束位置 */
animation.setDuration(300);
iv.startAnimation(animation);
setTextTitleSelectedColor(arg0);
setImageViewWidth(textViewW);
}

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

}

@Override
public void onPageScrollStateChanged(int arg0) {

}
});
}

/* 设置标题文本的颜色 */
private void setTextTitleSelectedColor(int arg0) {
int count = vpager.getChildCount();
for (int i = 0; i < count; i++) {
TextView mTextView = (TextView) linearLayout.getChildAt(i);
if (arg0 == i) {
mTextView.setTextColor(0xffc80000);
} else {
mTextView.setTextColor(0xff969696);
}
}
}
/* 设置图片宽度 */
private void setImageViewWidth(int width) {
if (width != iv.getWidth()) {
LayoutParams laParams = (LayoutParams) iv.getLayoutParams();
laParams.width = width;
iv.setLayoutParams(laParams);
}
}
/* 初始化动画 */
private void InitImageView() {
Matrix matrix = new Matrix();
matrix.postTranslate(0, 0);
iv.setImageMatrix(matrix);// 设置动画初始位置
}
/* 初始化ViewPager */
private void initViewPager() {
listviews = new ArrayList<View>();
LayoutInflater mInflater = getLayoutInflater();
/**
* 布局一的界面
*/
view1 = mInflater.inflate(R.layout.fragment_main, null);

/**
* 布局二的界面
*/
view2 = mInflater.inflate(R.layout.fragment_weixin, null);

/**
* 布局三的界面
*/
view3 = mInflater.inflate(R.layout.fragment_weixin, null);
listviews.add(view1);
listviews.add(view2);
listviews.add(view3);
vpager.setAdapter(new MyPagerAdapter(listviews));
vpager.setCurrentItem(0);
vpager.setOnPageChangeListener(new MyOnPageChangeListener());
}

/**
* ViewPager适配器
*/
public class MyPagerAdapter extends PagerAdapter {
public List<View> mListViews;

public MyPagerAdapter(List<View> mListViews) {
this.mListViews = mListViews;
}

@Override
public void destroyItem(View arg0, int arg1, Object arg2) {
((ViewPager) arg0).removeView(mListViews.get(arg1));
}

@Override
public void finishUpdate(View arg0) {
}

@Override
public int getCount() {
return mListViews.size();
}

@Override
public Object instantiateItem(View arg0, int arg1) {
((ViewPager) arg0).addView(mListViews.get(arg1), 0);
return mListViews.get(arg1);
}

@Override
public boolean isViewFromObject(View arg0, Object arg1) {
return arg0 == (arg1);
}

@Override
public void restoreState(Parcelable arg0, ClassLoader arg1) {
}

@Override
public Parcelable saveState() {
return null;
}

@Override
public void startUpdate(View arg0) {
}
}
/* 页卡切换监听 */
public class MyOnPageChangeListener implements OnPageChangeListener {

@Override
public void onPageSelected(int arg0) {
if (textViewW == 0) {
textViewW = tv1.getWidth();
}
Animation animation = new TranslateAnimation(textViewW * currIndex,
textViewW * arg0, 0, 0);
currIndex = arg0;
animation.setFillAfter(true);/* True:图片停在动画结束位置 */
animation.setDuration(300);
iv.startAnimation(animation);
setTextTitleSelectedColor(arg0);
setImageViewWidth(textViewW);
}
@Override
public void onPageScrolled(int arg0, float arg1, int arg2) {
}

@Override
public void onPageScrollStateChanged(int arg0) {
}
}

/**
* 返回上一界面
*/
public void back(View v){
finish();
}
}
}

xml文件
<LinearLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:orientation="vertical"
style="@android:style/Theme.Holo.Light"
>
<LinearLayout
android:id="@+id/linearLayout1"
android:layout_width="fill_parent"
android:layout_height="50dp"
android:layout_gravity="center"
android:gravity="center" >

<TextView
android:id="@+id/text1"
android:layout_width="0dp"
android:layout_height="fill_parent"
android:layout_gravity="center"
android:layout_weight="1"
android:gravity="center"
android:text="刷卡消费"
android:textColor="#969696"
android:textSize="17dp" />

<TextView
android:id="@+id/text2"
android:layout_width="0dp"
android:layout_height="fill_parent"
android:layout_gravity="center"
android:layout_weight="1"
android:gravity="center"
android:textColor="#969696"
android:text="现金消费"
android:textSize="17dp" />

<TextView
android:id="@+id/text3"
android:layout_width="0dp"
android:layout_height="fill_parent"
android:layout_gravity="center"
android:layout_weight="1"
android:gravity="center"
android:text="消费明细"
android:textColor="#969696"
android:textSize="17dp" />
</LinearLayout>

<ImageView
android:id="@+id/cursor"
android:layout_width="100dp"
android:layout_height="wrap_content"
android:layout_gravity="left"
android:background="@drawable/nav_bar_focus"
android:src="@drawable/nav_bar_focus" />

<android.support.v4.view.ViewPager
android:id="@+id/vpager"
android:layout_width="fill_parent"
android:layout_height="fill_parent" />

</LinearLayout>
这是我最近写的,你看看是不是你要的效果
声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
为什么打电话给别人,显示无法接通? 我给对方打电话时,他那边响一声后就提示无法接通是什么情况? iPhone 6Plus相机远距离无法对焦,得用力摇几下才恢复,过会又模糊,什么... iphone6plus。近拍清楚,远拍模糊,怎么回事?聚焦不了。 怎么办~ 廉锦枫《廉锦枫》——剧情分析 我想取个好听的英文名字,而且希望是有意义的`拜托了各位谢谢 不锈钢公司取名带匠字文化深厚的企业名称大全 带匠字的厂名 公司名字为什么不可以带匠字 我儿子刚上一年级老师给我发微信时表现不错我怎么和老师沟通 我荣耀手机屏幕掉下来,但可以用,怎么办? 登录微信就有Matrix怎么把它弄掉? 广发财智金占用信用卡额度吗 没有工具怎样锻炼身体 广发信用卡一批下来就可以使用其中的财智金吗,请问财智金是否占用信用卡额度 ? 谁知道野外单车爆胎,没有工具如何处理? 电脑文件夹没有工具选项怎么办? 广发信用卡财智金部分占用额度,为什么每个月还款之后确没有给我恢复 我的开始选项没有工具怎么办? 广发财智金额度可不可以循环使用 没有工具怎么拧紧螺丝 在没有任何工具的情况下,应该怎么样锻炼身体? 广发财智金占用的额度是直接没了还是冻结了,还完后自动恢复先用的额 3t硬盘扫坏道什么发现硬盘只有2999g 3TB的硬盘到底有多大? 硬盘是3t的,格式化下来系统显示多少g 3tb硬盘容量是多少G 3TB的硬盘到底有多大 为何3TB硬盘仅有2.72TB可用? 刚买的3T硬盘,为何电脑显示只有2.72T? 姨妈来可以喝柠檬水吗 女生大姨妈来的时候可以喝柠檬水吗 例假来了能喝柠檬水吗 大姨妈来了可以喝柠檬水吗 女人来月经能不能喝柠檬水? 来姨妈了能喝柠檬水吗 来大姨妈能喝柠檬水吗 大姨妈来了能不能喝柠檬水 来例假的时候可以喝柠檬水吗? 姨妈期可以喝柠檬水吗 姨妈来喝柠檬水好吗? 女人大姨妈来能喝柠檬水吗 澳洲留学中介有哪几家? 大姨妈来了能喝柠檬茶吗 去澳洲留学哪家机构做的不错呢? 澳洲留学哪个中介机构比较好 大姨妈快来了,能喝柠檬水吗 澳洲留学哪个城市好?有什么留学机构推荐么? 澳洲留学机构哪个好 出国留学机构选哪家比较好