最近在it快播中看见它顶部的几个button可以点击后 背景会滑动到相应的button后面 就得很好看 就想办法实现了那效果
思路 大概就是通过view的叠加 把3个button通过RelativeLayout布局置于一个imageView的上面一层 然后控制imageView移动来实现效果 效果如下:
下面是我的代码 可能有点二 大家见谅!
main.xml
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:orientation="vertical" >
<RelativeLayout
android:layout_width="fill_parent"
android:layout_height="40dp"
android:background="@drawable/top_channel_bg_normal" >
<LinearLayout
android:layout_width="fill_parent"
android:layout_height="fill_parent" >
<ImageView
android:id="@+id/bg_img"
android:layout_width="wrap_content"
android:layout_height="fill_parent"
android:scaleType="fitXY"
android:src="@drawable/top_channel_bg_selected" />
</LinearLayout>
<LinearLayout
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:gravity="center" >
<Button
android:id="@+id/button_1"
android:layout_width="wrap_content"
android:layout_height="fill_parent"
android:layout_weight="0.33"
android:background="#00000000"
android:text="button_1"
android:textColor="#ffffff" />
<Button
android:id="@+id/button_2"
android:layout_width="wrap_content"
android:layout_height="fill_parent"
android:layout_weight="0.33"
android:background="#00000000"
android:text="button_2"
android:textColor="#ffffff" />
<Button
android:id="@+id/button_3"
android:layout_width="wrap_content"
android:layout_height="fill_parent"
android:layout_weight="0.33"
android:background="#00000000"
android:text="button_3"
android:textColor="#ffffff" />
</LinearLayout>
</RelativeLayout>
</LinearLayout>
接着是activity的代码
import android.app.Activity;
import android.os.Bundle;
import android.util.Log;
import android.view.View;
import android.view.View.OnClickListener;
import android.view.ViewGroup.LayoutParams;
import android.view.animation.Animation;
import android.view.animation.Animation.AnimationListener;
import android.view.animation.TranslateAnimation;
import android.widget.Button;
import android.widget.ImageView;
public class TestBackGroundMoveAppActivity extends Activity implements
OnClickListener {
/** Called when the activity is first created. */
private ImageView bgImage;
public final static String MYTAG = "msg";
private Button button_1;
private Button button_2;
private Button button_3;
private int selected_button_position = 0;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
init();
}
private void init() {
setContentView(R.layout.main);
bgImage = (ImageView) findViewById(R.id.bg_img);
button_1 = (Button) findViewById(R.id.button_1);
button_2 = (Button) findViewById(R.id.button_2);
button_3 = (Button) findViewById(R.id.button_3);
LayoutParams p = bgImage.getLayoutParams();
float screen_w = getWindowManager().getDefaultDisplay().getWidth();
screen_w = screen_w / 3;
p.width = (int) screen_w;
bgImage.setLayoutParams(p);
button_1.setOnClickListener(this);
button_2.setOnClickListener(this);
button_3.setOnClickListener(this);
}
private void setSelectButtonBgByPosition() {
int w = getWindowManager().getDefaultDisplay().getWidth() ;//3是button的个数
int l = (int)(w / 3.0) * selected_button_position;
int r = l + bgImage.getWidth();
if(selected_button_position == 0) {//选择第一个button
l = 0;
r =(int)(w / 3.0);
}else if(selected_button_position == 2){//选择最后一个button
r = w;
}
int t = bgImage.getTop();
int b = bgImage.getBottom();
bgImage.layout(l, t, r, b);
bgImage.invalidate();
}
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
int select = 0;
if (v == button_1) {
select = 0;
} else if (v == button_2) {
select = 1;
} else if (v == button_3) {
select = 2;
}
int w = bgImage.getWidth();
TranslateAnimation animation = null;
int startX = w * selected_button_position;
Log.d(MYTAG, "" + startX);
int endX = w * (select - selected_button_position);
Log.d(MYTAG, "" + endX);
animation = new TranslateAnimation(0, endX, bgImage.getTop(),
bgImage.getTop());
selected_button_position = select;
animation.setAnimationListener(new AnimationListener() {
@Override
public void onAnimationStart(Animation animation) {
// TODO Auto-generated method stub
}
@Override
public void onAnimationRepeat(Animation animation) {
// TODO Auto-generated method stub
}
@Override
public void onAnimationEnd(Animation animation) {
// TODO Auto-generated method stub
setSelectButtonBgByPosition();
bgImage.clearAnimation();
}
});
animation.setDuration(1 * 1000);
bgImage.startAnimation(animation);
}
}
其实就通过TranslateAnimation 实现移动的效果 修改位置呢 则是通过View自带的layout(int l,int t,int r,int b)的这个函数 很简单的 :-)
附上用的素材(就是解压it快播除出来的!) 最后的两张图
最后附上源码!
- 大小: 7.7 KB
- 大小: 7.8 KB
- 大小: 7.9 KB
- 描述: 素材一
- 大小: 222 Bytes
- 描述: 素材二
- 大小: 509 Bytes
分享到:
相关推荐
【jQuery经典特效26】:jQuery动画背景滑动切换效果是一种常见的网页动态设计技术,它为网站增添视觉吸引力,使用户界面更具互动性。在网页设计中,背景滑动切换通常用于首页大图轮播、内容区背景变换等场景,为用户...
在本文中,我们将深入探讨如何使用jQuery来实现背景滑动切换效果,这是一种常见的前端Web设计技术,能够为网站增添动态视觉吸引力。jQuery是一款强大的JavaScript库,简化了DOM操作、事件处理以及动画效果创建等任务...
在这里,我们可以根据需要更改Button的背景,如切换不同的颜色或者图片资源。同时,为了防止状态丢失,我们还需要在`getView()`中处理View的复用问题,确保每次显示的数据与数据集中的对应项匹配。 代码示例: ```...
本文将详细讲解如何通过点击按钮来实现这种从右侧进入、左侧退出的滑动切换效果。 首先,我们需要理解Activity的概念。在Android应用中,Activity是用户界面的基本单元,它负责与用户进行交互。当我们需要在不同的...
在本文中,我们将深入探讨如何使用jQuery库来实现按钮的滑动切换效果。jQuery是一个强大的JavaScript库,它简化了HTML文档遍历、事件处理、动画和Ajax交互等任务,使得开发者能够更高效地创建交互式的网页应用。 ...
本主题将深入探讨如何实现"button设置点击长时间改变背景"这一功能,以及如何在再次点击时恢复原背景。我们将通过分析标题和描述来构建相关的知识点。 首先,我们关注的是按钮的点击事件。在Android中,我们可以...
本文将深入探讨“Button的点击效果”,包括如何设置按钮的样式、实现点击事件以及自定义点击动画。 首先,我们了解按钮的基础用法。在XML布局文件中,可以通过`<Button>`标签来创建一个按钮,比如: ```xml ...
在VB.NET编程环境中,我们可以创建一个用户界面,其中包含一个按钮和一组背景图片,实现点击按钮后背景图片的切换效果。这种功能常用于各种应用程序,为用户提供动态视觉体验。此外,通过添加定时器组件,我们可以...
在这个名为"ios-button点击切换.zip"的压缩包中,我们主要关注如何通过点击按钮来实现两个核心功能:页面切换和图片切换。下面将详细阐述这两个知识点。 首先,我们来讨论点击按钮切换页面。在iOS开发中,通常使用...
java Swing panel button左右滑动效果
本文将深入探讨如何实现“超炫button按钮动画效果”以及相关的Activity切换动画,让您的应用界面更具吸引力。 首先,让我们关注按钮动画。在Android中,我们可以使用多种方法来创建动画,如属性动画(Property ...
为了提高用户体验,我们还可以在触摸事件中添加动态反馈,如改变Button的背景色、文字颜色或者增加涟漪效果等。 通过以上知识点的学习和实践,开发者可以创建出具有个性化的自定义Button,并赋予其独特的触摸滑动...
"jQuery点击右侧按钮图片滑动切换代码"就是一个实现这种效果的实用工具,它将按钮固定在网页右侧,通过用户点击来触发图片的滑动切换,为网页增添了一种现代化的幻灯片展示方式。 首先,jQuery库是这个功能的核心。...
在网页设计和开发中,用户交互体验是一个至关重要的因素,其中滑动切换页面效果能为网站增添流畅性和吸引力。`jQuery` 是一款广泛使用的 JavaScript 库,它简化了 DOM 操作、事件处理、动画效果等任务,使得创建动态...
在导航中,滑动效果常用于切换不同的菜单选项或者在内容区域展示更多的信息。通过触摸屏幕并滑动,用户可以轻松浏览多个页面,无需反复点击返回或前进按钮,从而提高了操作效率。 在"jquery-button"这个文件名中,...
接下来,编写jQuery代码来实现点击图片的滑动切换效果: ```javascript $(document).ready(function() { var index = 0; var slider = $('#slider'); var slides = slider.find('.slide'); function ...
本示例中的“实现渐显按钮(button)左右滑动效果”就是一个很好的例子,它通过简单的代码实现了一个按钮在用户左右滑动时产生渐变效果的功能。这个效果不仅使按钮更具动态感,还能提升用户的操作反馈。 首先,我们来...
在Flex Android项目中,我们经常会遇到需要自定义控件外观的需求,尤其是对于Button(按钮)这种常见的交互元素,设置背景色是提升用户界面美观度和交互体验的重要手段。本篇文章将详细讲解如何在Flex Android项目...