看真正的猫眼效果图
接下来看自己写的粗略图(不足的地方是这里是2个切换选项,如果需要3个切换的话,需要自定义控件,后续在更新。。。)
源码地址 http://download.csdn.net/download/u013210620/8795799
先看主页面xml布局文件--so easy
activity_main.xml
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" tools:context="com.example.mytogglebutton.MainActivity" > <RelativeLayout android:layout_width="150dp" android:layout_height="50dp" android:layout_centerInParent="true" android:background="#CD5555" > <TextView android:id="@+id/tv_left" android:layout_width="50dp" android:layout_height="40dp" android:layout_alignParentLeft="true" android:layout_centerVertical="true" android:layout_marginLeft="15dp" android:gravity="center" android:text="购物" /> <TextView android:id="@+id/tv_up" android:layout_width="50dp" android:layout_height="40dp" android:layout_alignParentLeft="true" android:layout_centerVertical="true" android:layout_marginLeft="15dp" android:background="#ffffff" android:gravity="center" android:text="购物" /> <TextView android:id="@+id/tv_right" android:layout_width="50dp" android:layout_height="40dp" android:layout_alignParentRight="true" android:layout_centerVertical="true" android:layout_marginRight="15dp" android:gravity="center" android:text="美食" /> </RelativeLayout> </RelativeLayout>
package com.example.mytogglebutton; import android.app.Activity; import android.os.Bundle; import android.view.View; import android.view.View.OnClickListener; import android.view.animation.Animation; import android.view.animation.TranslateAnimation; import android.widget.TextView; import android.widget.Toast; public class MainActivity extends Activity implements OnClickListener { private TextView tv_left; private TextView tv_right; private TextView tv_up; //表示是否要从购物切换到美食 private boolean tv_up_left_tran = false; //表示是否要从美食切换到购物 private boolean tv_up_right_tran = false; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); initView(); tv_right.setOnClickListener(this); tv_left.setOnClickListener(this); } private void initView() { tv_left = (TextView) findViewById(R.id.tv_left); tv_right = (TextView) findViewById(R.id.tv_right); tv_up = (TextView) findViewById(R.id.tv_up); } @Override public void onClick(View v) { switch (v.getId()) { case R.id.tv_left: //表示要从美食切换到购物 if (!tv_up_right_tran) { TranslateAnimation animation = new TranslateAnimation( Animation.RELATIVE_TO_SELF, 1.4f, Animation.RELATIVE_TO_SELF, 0f, Animation.RELATIVE_TO_SELF, 0.0f, Animation.RELATIVE_TO_SELF, 0.0f); animation.setDuration(100); tv_up.setText("购物"); animation.setFillAfter(true); tv_up.startAnimation(animation); } //切换后,修改状态--可以从左边切换到右边,但是不能从右边切换到左边 tv_up_right_tran = true; tv_up_left_tran = false; Toast.makeText(this, ""+tv_up.getText(), 1).show(); break; case R.id.tv_right: //表示要从购物切换到美食 if (!tv_up_left_tran) { TranslateAnimation animation1 = new TranslateAnimation( Animation.RELATIVE_TO_SELF, 0.0f, Animation.RELATIVE_TO_SELF, 1.4f, Animation.RELATIVE_TO_SELF, 0.0f, Animation.RELATIVE_TO_SELF, 0.0f); animation1.setDuration(100); tv_up.setText("美食"); tv_up.startAnimation(animation1); animation1.setFillAfter(true); } //切换后,修改状态--可以从右边切换到左边,但是不能从左边切换到右边 tv_up_left_tran = true; tv_up_right_tran = false; Toast.makeText(this, ""+tv_up.getText(), 1).show(); break; default: break; } } }
原文地址:http://blog.csdn.net/u013210620/article/details/46456267