引导图界面支持上拉侧滑功能

DEMO---》下载http://download.csdn.net/detail/hf_zhang/9622939
根据需求解决引导图界面支持上拉侧滑功能
1.ViewPager+Fragment 横向滑动
package com.directional.viewpager.sample;

import android.os.Bundle;
import android.support.v4.app.Fragment;
import android.util.Log;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.TextView;
import android.widget.Toast;

 /**
* @author 
  
  
* @version V:2.0.0 * @Title TestFragment * @Package com.directional.viewpager.sample * @Description: * @date 2016/9/5 20:24 */public class TestFragment extends Fragment implements View.OnClickListener{ private static final String TAG = "TestFragment"; TextView tv1,tv2,tv3; @Override public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { Log.e(TAG, "TestFragment-----onCreateView"); View rootView = inflater.inflate(R.layout.guide_1, container, false);//关联布局文件 tv1 = (TextView)rootView.findViewById(R.id.tv1);//根据rootView找到button tv2 = (TextView)rootView.findViewById(R.id.tv2);//根据rootView找到button tv3 = (TextView)rootView.findViewById(R.id.tv3);//根据rootView找到button //设置按键监听事件 tv1.setOnClickListener(this); tv2.setOnClickListener(this); tv3.setOnClickListener(this); return rootView; } @Override public void onClick(View v) { switch (v.getId()){ case R.id.tv1: showToast("111111111111"); break; case R.id.tv2: showToast("222222222222"); break; case R.id.tv3: showToast("333333333333"); break; } } public void showToast(String tempContent){ Toast.makeText(getActivity(),tempContent,Toast.LENGTH_SHORT).show(); }}

2.设配器

package com.directional.viewpager.sample;

import android.support.v4.app.FragmentPagerAdapter;
import java.util.ArrayList;

import android.support.v4.app.Fragment;
import android.support.v4.app.FragmentManager;
 /**
* @author 
   
   
* @version V:2.0.0 * @Title MyFragmentPagerAdapter * @Package com.directional.viewpager.sample * @Description: * @date 2016/9/5 20:22 */public class MyFragmentPagerAdapter extends FragmentPagerAdapter { ArrayList<Fragment> list; public MyFragmentPagerAdapter(FragmentManager fm,ArrayList<Fragment> list) { super(fm); this.list = list; } @Override public int getCount() { return list.size(); } @Override public Fragment getItem(int arg0) { return list.get(arg0); }}

3.创建底部View,模拟上拉

package com.directional.viewpager.sample;

import android.os.Bundle;
import android.support.v4.app.Fragment;
import android.support.v4.app.FragmentActivity;
import android.support.v4.view.ViewPager;
import android.util.Log;
import android.view.MotionEvent;
import android.view.View;
import android.view.animation.Animation;
import android.view.animation.TranslateAnimation;
import android.widget.LinearLayout;
import android.widget.TextView;
import android.widget.Toast;

import java.util.ArrayList;

 /**
* @author 
   
   
* @version V:2.0.0 * @Title MainActivity * @Package com.directional.viewpager.sample * @Description: * @date 2016/9/5 20:21 */public class MainActivity extends FragmentActivity implements View.OnClickListener{ private static final String TAG = "MainActivity"; private ViewPager mPager; private ArrayList<Fragment> fragmentList; public LinearLayout view1; public enum FlipType{ UP, DOWN } private float startY,startX; public final TranslateAnimation flipInAnim = new TranslateAnimation(Animation.RELATIVE_TO_SELF,0,Animation.RELATIVE_TO_SELF,0, Animation.RELATIVE_TO_SELF,1.0f,Animation.RELATIVE_TO_SELF,0); public final TranslateAnimation flipOutAnim = new TranslateAnimation(Animation.RELATIVE_TO_SELF,0,Animation.RELATIVE_TO_PARENT,0, Animation.RELATIVE_TO_SELF,0,Animation.RELATIVE_TO_SELF,1.0f); @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); flipInAnim.setDuration(500);//设置动画持续时间 flipOutAnim.setDuration(500);//设置动画持续时间 InitTextView(); InitViewPager(); } @Override public boolean dispatchTouchEvent(MotionEvent ev) { onTouchACT(ev); return super.dispatchTouchEvent(ev); } public void InitTextView(){ view1 = (LinearLayout)findViewById(R.id.tv_guid1); TextView tv_bottom1 = (TextView) findViewById(R.id.tv_bottom1); TextView tv_bottom2 = (TextView) findViewById(R.id.tv_bottom2); view1.setOnClickListener(this); tv_bottom1.setOnClickListener(this); tv_bottom2.setOnClickListener(this); } @Override public void onClick(View v) { switch (v.getId()){ case R.id.tv_bottom1: showToast("底部数据111111"); break; case R.id.tv_bottom2: showToast("底部数据222222"); break; default: showToast("点击到底部根布局了"); break; } } public void showToast(String tempContent){ Toast.makeText(this,tempContent,Toast.LENGTH_SHORT).show(); } public void onTouchACT(MotionEvent event) { if (event.getAction() == MotionEvent.ACTION_DOWN) { // 手指按下时 startY = event.getY();// 获取手指按下时的坐标位置 startX = event.getX();// 获取手指按下时的坐标位置 } else if (event.getAction() == MotionEvent.ACTION_UP) { // 当手指松开时,执行这里 float endY = event.getY(); // 获取手指松开时的坐标位置 float endX = event.getX(); // 获取手指松开时的坐标位置 // 1.判断手指是向上滑动还是向下滑动 // 2.手机屏幕的开始位置是: 最左上角是坐标位置开始 X坐标和Y坐标都是0 // 3.当开始坐标(手机按下) 大于 结束坐标(松开手指) 是向上滑动 // 4.当开始坐标(手指按下)小于结束坐标(松开手指) 是向下滑动 ; if (startY -endY> 50.0f&&startY -endY>Math.abs(startX-endX)) { // 向上滑动 showView(FlipType.UP); } else if (startY -endY<-50.0f&&Math.abs(startY -endY)>Math.abs(startX-endX)) {// 向下滑动 showView(FlipType.DOWN); } else { if (view1.isShown()){ mPager.requestDisallowInterceptTouchEvent(true); }else{ mPager.requestDisallowInterceptTouchEvent(false); } } } } public void showView(FlipType type) { switch (type) { case DOWN: Log.e(TAG, "TestFragment-----向下滑动"); if (view1.isShown()) { Log.e(TAG, "TestFragment-----以显示,向上滑动收起来"); setViewState(view1, flipOutAnim, View.GONE); } break; case UP: if (view1.isShown()) { Log.e(TAG, "TestFragment-----以显示,向上滑动收起来"); setViewState(view1, flipOutAnim, View.GONE); } else { Log.e(TAG, "TestFragment-----向上滑动"); setViewState(view1, flipInAnim, View.VISIBLE); } break; } } public void setViewState(View v,Animation anim,int visibleType){ v.clearAnimation(); v.setAnimation(anim); anim.start(); v.setVisibility(visibleType); } public void InitViewPager(){ mPager = (ViewPager)findViewById(R.id.viewpager); fragmentList = new ArrayList<Fragment>(); Fragment fristFragment = new TestFragment(); Fragment secondFragment = new TestFragment(); Fragment thirdFragment = new TestFragment(); fragmentList.add(fristFragment); fragmentList.add(secondFragment); fragmentList.add(thirdFragment); mPager.setAdapter(new MyFragmentPagerAdapter(getSupportFragmentManager(), fragmentList)); mPager.setCurrentItem(1);//设置当前显示标签页为第2 }}

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值