博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
android Title滑块动画实现(适合新闻client多种栏目的展示)
阅读量:5337 次
发布时间:2019-06-15

本文共 3624 字,大约阅读时间需要 12 分钟。

先上效果图,选择不同的模块,滑动会通过动画形式滑过去,这样的适合新闻client多种栏目的展示:

这么写Layout:

//这个能够把子栏目都加到column_title_layout中
代码中在string.xml中增加数据:

科技
財经
体育
本地
最新
百家
娱乐
private void initTab() {		String[] resource = this.getResources().getStringArray(R.array.all_choice);		for (int j = 0; j < resource.length; j++) {			String name = resource[j];			array.add(name);		}				this.columnTitleLayout.removeAllViews();		int j = this.array.size();		if (j <= 5) {			this.scrollToRight.setVisibility(View.INVISIBLE);			this.scrollToLeft.setVisibility(View.INVISIBLE);		}		currTabIndex = 0;		int i = 0;		animImage.setBackgroundResource(R.drawable.slidebar);		for (i = 0; i < array.size(); i++) {			String str = array.get(i);			TextView ColumnTextView = new TextView(this);			ColumnTextView.setText(str);			ColumnTextView.setTag(i);			ColumnTextView.setPadding(18, 2, 15, 4);			ColumnTextView.setOnClickListener(this);			ColumnTextView.setTextAppearance(this, R.style.column_tx_style);			LinearLayout.LayoutParams params = new LinearLayout.LayoutParams(LayoutParams.MATCH_PARENT, LayoutParams.MATCH_PARENT);			columnTitleLayout.addView(ColumnTextView, params);		}		TextView MoreColumnTextView = new TextView(this);		MoreColumnTextView.setTag(i);		CharSequence localCharSequence = getResources().getText(R.string.more_column);		MoreColumnTextView.setText(localCharSequence);		MoreColumnTextView.setPadding(18, 2, 15, 4);		MoreColumnTextView.setTextAppearance(this, R.style.column_tx_style);		LinearLayout.LayoutParams params = new LinearLayout.LayoutParams(LayoutParams.MATCH_PARENT, LayoutParams.MATCH_PARENT);		columnTitleLayout.addView(MoreColumnTextView, params);			}

在点击子栏目的时候启动动画:

@Override	public void onClick(View v) {		int k = (Integer)v.getTag();		lastTabIndex = currTabIndex;		currTabIndex = k;		String text = ((TextView) v).getText().toString();		if (lastTabIndex != currTabIndex) {			if (currTabIndex == array.size()) {				return;			}			showAnimation();		}	}

 动画採用TranslateAnimation animation.setFillAfter(true); 

private void showAnimation() {		if (lastTabIndex == currTabIndex) {			return;		}		((TextView) columnTitleLayout.getChildAt(lastTabIndex)).setTextColor(R.drawable.white);		int widgetItemWidth = ((TextView) columnTitleLayout.getChildAt(lastTabIndex)).getWidth();		int fromX = lastTabIndex * widgetItemWidth;		int toX = currTabIndex * widgetItemWidth;		Log.v("test", "widgetItemWidth" + widgetItemWidth + "fromX:" + fromX + " toX:" + toX);		TranslateAnimation animation = new TranslateAnimation(fromX, toX, 0, 0);		animation.setDuration(500);		animation.setFillAfter(true);		animation.setAnimationListener(new AnimationListener() {			@Override			public void onAnimationStart(Animation animation) {				((TextView) columnTitleLayout.getChildAt(lastTabIndex)).setTextColor(MainActivity.this.getResources().getColor(R.drawable.gray2));			}			@Override			public void onAnimationRepeat(Animation animation) {			}			@Override			public void onAnimationEnd(Animation animation) {				((TextView) columnTitleLayout.getChildAt(currTabIndex)).setTextColor(MainActivity.this.getResources().getColor(R.drawable.white));				lastTabIndex = currTabIndex;			}		});		animImage.startAnimation(animation);	}
代码能够在 下载

转载于:https://www.cnblogs.com/jzdwajue/p/6978587.html

你可能感兴趣的文章
关于日历实现代码里lunarInfo(农历)数组
查看>>
【转】winrar命令行详解
查看>>
#!/usr/bin/python3 和 #!/usr/bin/env python3的区别
查看>>
AWK中的OFS的问题
查看>>
带你彻彻底底弄懂Scroller
查看>>
前端开发 Web SQL Database
查看>>
待解谜题(持续更新)
查看>>
python操作数据库产生中文乱码问题【已解决】
查看>>
母版页中引用图片,外部js、css文件的路径问题 [转]
查看>>
微信小程序_(组件)组件基础
查看>>
原生Js_制作简易日历
查看>>
2015年10月14日学习笔记
查看>>
hdu 1026 Ignatius and the Princess I
查看>>
数据结构考研模糊知识点2.1
查看>>
【每日算法】交换排序算法之冒泡排序
查看>>
Java-NIO(四):通道(Channel)的原理与获取
查看>>
pandas 的算术运算和数据对齐
查看>>
R语言-增加图例
查看>>
linux 建立桌面快捷方式,让所有用户都能在桌面直接打开某软件
查看>>
CF1039E Summer Oenothera Exhibition 根号分治,LCT,ST表
查看>>