android横向滑动组件,Android导航菜单横向左右滑动并和下方的控件实现联动

package com.zj.horizontalsrollview;

import java.util.ArrayList;

import android.app.Activity;

import android.os.Bundle;

import android.os.Parcelable;

import android.support.v4.view.PagerAdapter;

import android.support.v4.view.ViewPager;

import android.support.v4.view.ViewPager.OnPageChangeListener;

import android.util.Log;

import android.view.View;

import android.view.View.OnClickListener;

import android.view.ViewGroup.MarginLayoutParams;

import android.view.animation.Animation;

import android.view.animation.AnimationSet;

import android.view.animation.AnimationUtils;

import android.view.animation.TranslateAnimation;

import android.widget.HorizontalScrollView;

import android.widget.ImageView;

import android.widget.RadioButton;

import android.widget.RadioGroup;

import android.widget.RadioGroup.OnCheckedChangeListener;

import android.widget.RelativeLayout;

import android.widget.RelativeLayout.LayoutParams;/**

* HorizontalScrollView和ViewPager联动效果

* 上面为HorizontalScrollView,下面为ViewPager

* @author zj

* 2012-5-23 下午1:07:06*/

public classMainActivity extends Activity implements OnCheckedChangeListener{privateRadioGroup mRadioGroup;privateRadioButton mRadioButton1;privateRadioButton mRadioButton2;privateRadioButton mRadioButton3;privateRadioButton mRadioButton4;privateRadioButton mRadioButton5;privateImageView mImageView;private float mCurrentCheckedRadioLeft;//当前被选中的RadioButton距离左侧的距离

private HorizontalScrollView mHorizontalScrollView;//上面的水平滚动控件

private ViewPager mViewPager; //下方的可横向拖动的控件

private ArrayList mViews;//用来存放下方滚动的layout(layout_1,layout_2,layout_3)

@Overridepublic voidonCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);

setContentView(R.layout.main);

iniController();

iniListener();

iniVariable();

mRadioButton1.setChecked(true);

mViewPager.setCurrentItem(1);

mCurrentCheckedRadioLeft=getCurrentCheckedRadioLeft();

}private voidiniVariable() {//TODO Auto-generated method stub

mViews = new ArrayList();

mViews.add(getLayoutInflater().inflate(R.layout.layout_0,null));

mViews.add(getLayoutInflater().inflate(R.layout.layout_1,null));

mViews.add(getLayoutInflater().inflate(R.layout.layout_2,null));

mViews.add(getLayoutInflater().inflate(R.layout.layout_3,null));

mViews.add(getLayoutInflater().inflate(R.layout.layout_4,null));

mViews.add(getLayoutInflater().inflate(R.layout.layout_5,null));

mViews.add(getLayoutInflater().inflate(R.layout.layout_0,null));

mViewPager.setAdapter(new MyPagerAdapter());//设置ViewPager的适配器

}/**

* RadioGroup点击CheckedChanged监听*/@Overridepublic void onCheckedChanged(RadioGroup group, intcheckedId) {

AnimationSet _AnimationSet= new AnimationSet(true);

TranslateAnimation _TranslateAnimation;

Log.i("zj", "checkedid="+checkedId);if (checkedId ==R.id.btn1) {

_TranslateAnimation= newTranslateAnimation(mCurrentCheckedRadioLeft, getResources().getDimension(R.dimen.rdo1), 0f, 0f);

_AnimationSet.addAnimation(_TranslateAnimation);

_AnimationSet.setFillBefore(false);

_AnimationSet.setFillAfter(true);

_AnimationSet.setDuration(100);/*LayoutParams _LayoutParams1 = new LayoutParams(100, 4);

_LayoutParams1.setMargins(0, 0, 0, 0);

_LayoutParams1.addRule(RelativeLayout.ALIGN_PARENT_BOTTOM);*/

//mImageView.bringToFront();

mImageView.startAnimation(_AnimationSet);//开始上面蓝色横条图片的动画切换//mImageView.setLayoutParams(_LayoutParams1);

mViewPager.setCurrentItem(1);//让下方ViewPager跟随上面的HorizontalScrollView切换

}else if (checkedId ==R.id.btn2) {

_TranslateAnimation= newTranslateAnimation(mCurrentCheckedRadioLeft, getResources().getDimension(R.dimen.rdo2), 0f, 0f);

_AnimationSet.addAnimation(_TranslateAnimation);

_AnimationSet.setFillBefore(false);

_AnimationSet.setFillAfter(true);

_AnimationSet.setDuration(100);//mImageView.bringToFront();

mImageView.startAnimation(_AnimationSet);

mViewPager.setCurrentItem(2);

}else if (checkedId ==R.id.btn3) {

_TranslateAnimation= newTranslateAnimation(mCurrentCheckedRadioLeft, getResources().getDimension(R.dimen.rdo3), 0f, 0f);

_AnimationSet.addAnimation(_TranslateAnimation);

_AnimationSet.setFillBefore(false);

_AnimationSet.setFillAfter(true);

_AnimationSet.setDuration(100);//mImageView.bringToFront();

mImageView.startAnimation(_AnimationSet);

mViewPager.setCurrentItem(3);

}else if (checkedId ==R.id.btn4) {

_TranslateAnimation= newTranslateAnimation(mCurrentCheckedRadioLeft, getResources().getDimension(R.dimen.rdo4), 0f, 0f);

_AnimationSet.addAnimation(_TranslateAnimation);

_AnimationSet.setFillBefore(false);

_AnimationSet.setFillAfter(true);

_AnimationSet.setDuration(100);//mImageView.bringToFront();

mImageView.startAnimation(_AnimationSet);

mViewPager.setCurrentItem(4);

}else if (checkedId ==R.id.btn5) {

_TranslateAnimation= newTranslateAnimation(mCurrentCheckedRadioLeft, getResources().getDimension(R.dimen.rdo5), 0f, 0f);

_AnimationSet.addAnimation(_TranslateAnimation);

_AnimationSet.setFillBefore(false);

_AnimationSet.setFillAfter(true);

_AnimationSet.setDuration(100);//mImageView.bringToFront();

mImageView.startAnimation(_AnimationSet);

mViewPager.setCurrentItem(5);

}

mCurrentCheckedRadioLeft=getCurrentCheckedRadioLeft();

Log.i("zj", "getCurrentCheckedRadioLeft="+getCurrentCheckedRadioLeft());

Log.i("zj", "getDimension="+getResources().getDimension(R.dimen.rdo2));

mHorizontalScrollView.smoothScrollTo((int)mCurrentCheckedRadioLeft-(int)getResources().getDimension(R.dimen.rdo2), 0);

}/**

* 获得当前被选中的RadioButton距离左侧的距离*/

private floatgetCurrentCheckedRadioLeft() {//TODO Auto-generated method stub

if(mRadioButton1.isChecked()) {//Log.i("zj", "currentCheckedRadioLeft="+getResources().getDimension(R.dimen.rdo1));

returngetResources().getDimension(R.dimen.rdo1);

}else if(mRadioButton2.isChecked()) {//Log.i("zj", "currentCheckedRadioLeft="+getResources().getDimension(R.dimen.rdo2));

returngetResources().getDimension(R.dimen.rdo2);

}else if(mRadioButton3.isChecked()) {//Log.i("zj", "currentCheckedRadioLeft="+getResources().getDimension(R.dimen.rdo3));

returngetResources().getDimension(R.dimen.rdo3);

}else if(mRadioButton4.isChecked()) {//Log.i("zj", "currentCheckedRadioLeft="+getResources().getDimension(R.dimen.rdo4));

returngetResources().getDimension(R.dimen.rdo4);

}else if(mRadioButton5.isChecked()) {//Log.i("zj", "currentCheckedRadioLeft="+getResources().getDimension(R.dimen.rdo5));

returngetResources().getDimension(R.dimen.rdo5);

}return0f;

}private voidiniListener() {//TODO Auto-generated method stub

mRadioGroup.setOnCheckedChangeListener(this);

mViewPager.setOnPageChangeListener(newMyPagerOnPageChangeListener());

}private voidiniController() {//TODO Auto-generated method stub

mRadioGroup =(RadioGroup)findViewById(R.id.radioGroup);

mRadioButton1=(RadioButton)findViewById(R.id.btn1);

mRadioButton2=(RadioButton)findViewById(R.id.btn2);

mRadioButton3=(RadioButton)findViewById(R.id.btn3);

mRadioButton4=(RadioButton)findViewById(R.id.btn4);

mRadioButton5=(RadioButton)findViewById(R.id.btn5);

mImageView=(ImageView)findViewById(R.id.img1);

mHorizontalScrollView=(HorizontalScrollView)findViewById(R.id.horizontalScrollView);

mViewPager=(ViewPager)findViewById(R.id.pager);

}/**

* ViewPager的适配器

* @author zj

* 2012-5-24 下午2:26:57*/

private classMyPagerAdapter extends PagerAdapter{

@Overridepublic void destroyItem(View v, intposition, Object obj) {//TODO Auto-generated method stub

((ViewPager)v).removeView(mViews.get(position));

}

@Overridepublic voidfinishUpdate(View arg0) {//TODO Auto-generated method stub

}

@Overridepublic intgetCount() {//TODO Auto-generated method stub

returnmViews.size();

}

@Overridepublic Object instantiateItem(View v, intposition) {

((ViewPager)v).addView(mViews.get(position));return mViews.get(position);

}

@Overridepublicboolean isViewFromObject(View arg0, Object arg1) {//TODO Auto-generated method stub

return arg0 ==arg1;

}

@Overridepublic voidrestoreState(Parcelable arg0, ClassLoader arg1) {//TODO Auto-generated method stub

}

@OverridepublicParcelable saveState() {//TODO Auto-generated method stub

return null;

}

@Overridepublic voidstartUpdate(View arg0) {//TODO Auto-generated method stub

}

}/**

* ViewPager的PageChangeListener(页面改变的监听器)

* @author zj

* 2012-5-24 下午3:14:27*/

private classMyPagerOnPageChangeListener implements OnPageChangeListener{

@Overridepublic void onPageScrollStateChanged(intarg0) {//TODO Auto-generated method stub

}

@Overridepublic void onPageScrolled(int arg0, float arg1, intarg2) {//TODO Auto-generated method stub

}/**

* 滑动ViewPager的时候,让上方的HorizontalScrollView自动切换*/@Overridepublic void onPageSelected(intposition) {//TODO Auto-generated method stub//Log.i("zj", "position="+position);

if (position == 0) {

mViewPager.setCurrentItem(1);

}else if (position == 1) {

mRadioButton1.performClick();

}else if (position == 2) {

mRadioButton2.performClick();

}else if (position == 3) {

mRadioButton3.performClick();

}else if (position == 4) {

mRadioButton4.performClick();

}else if (position == 5) {

mRadioButton5.performClick();

}else if (position == 6) {

mViewPager.setCurrentItem(5);

}

}

}

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值