实现炫酷的改变效果的ViewPager

28 篇文章 0 订阅
11 篇文章 0 订阅
    
     可以 特殊切换动画的ViewPager
     首先看一下项目中的效果(当然啊,由于当时使用的是网络上的数据,所以有一张图片但是是没有下载下来的)
     peiview.gif


----------------------------------------我是分界线---------------------------------------------------

    想了一下,还是决定选择官方的demo给大家看,自己的东西太杂反而不好。
    
    首先给出在GitHub上的地址:https://github.com/chiemy/JellyViewPager

    下面主要讲一下使用的两三步:
      第一步:将demo下载下来,里面会有一个lib文件夹,是用来放置需要的jar包的,将里面的nineoldandroid-2.4.0.jar和rebound-core.jar放进自己的项目中去。然后将 src\com\chiemy\jellyviewpager文件夹下的util文件夹和widget文件夹先拷到自己的项目中去。
      第二步:现在就是可以自己定制的功能了。按照源码来的话我们可以看到
          作者将每次滑动显示的视图当做一个个Fragment来处理的,这样就可以定制丰富的效果和功能。
          下面是每个Fragment的适配器和本身的实现,在每一个Fragment中,我们可以看到有两个按钮和一个ImageView用来显示图片

     TestFragPagerAdapter.java
   
   
package com.chiemy.jellyviewpager;
 
import com.chiemy.jellyviewpager.util.Constant;
 
import android.os.Bundle;
import android.support.v4.app.Fragment;
import android.support.v4.app.FragmentManager;
import android.support.v4.app.FragmentPagerAdapter;
import android.view.View;
 
public class TestFragPagerAdapter extends FragmentPagerAdapter {
 
public TestFragPagerAdapter(FragmentManager fm) {
super(fm);
}
 
@Override
public Fragment getItem(int arg0) {
Bundle bundle = new Bundle();
bundle.putInt(Constant.KEY, Constant.images[arg0%getCount()]);
Fragment frag = new TestFragment();
frag.setArguments(bundle);
return frag;
}
 
@Override
public int getCount() {
return 5;
}
}
    
    TestFragment.java
    
    
package com.chiemy.jellyviewpager;
 
import com.chiemy.jellyviewpager.util.Constant;
 
import android.os.Bundle;
import android.support.v4.app.Fragment;
import android.view.LayoutInflater;
import android.view.View;
import android.view.View.OnClickListener;
import android.view.ViewGroup;
import android.widget.ImageView;
import android.widget.TextView;
 
public class TestFragment extends Fragment {
boolean visible = true;
@Override
public View onCreateView(LayoutInflater inflater,ViewGroup container,Bundle savedInstanceState) {
View rootView = inflater.inflate(R.layout.frag_layout, container, false);
initUI(rootView);
return rootView;
}
private void initUI(View root){
final View tv1 = root.findViewById(R.id.textView1);
final View tv2 = root.findViewById(R.id.textView2);
ImageView iv = (ImageView) root.findViewById(R.id.imageView1);
Bundle bundle = getArguments();
int res = bundle.getInt(Constant.KEY, R.drawable.a);
iv.setImageResource(res);
iv.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
if(!visible){
visible = true;
tv1.setVisibility(View.VISIBLE);
tv2.setVisibility(View.VISIBLE);
}else{
visible = false;
tv1.setVisibility(View.INVISIBLE);
tv2.setVisibility(View.INVISIBLE);
}
}
});
}
}
    在MainActivity中,我们需要做的事情就是给适配器准备数据即可。
    
    
package com.chiemy.jellyviewpager;
 
 
import android.os.Bundle;
import android.support.v4.app.FragmentActivity;
import android.support.v4.view.ViewPager.OnPageChangeListener;
import android.view.View;
import android.widget.Toast;
 
import com.chiemy.jellyviewpager.R;
import com.chiemy.jellyviewpager.widget.JellyViewPager;
 
public class MainActivity extends FragmentActivity {
JellyViewPager pager;
int currentItem;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
pager = (JellyViewPager) findViewById(R.id.myViewPager1);
//pager.setAdapter(new TestPagerAdapter(this));
pager.setAdapter(new TestFragPagerAdapter(getSupportFragmentManager()));
pager.setOnPageChangeListener(new OnPageChangeListener() {
@Override
public void onPageScrollStateChanged(int state) {
switch(state){
case 1: //正在滑动
break;
case 2: //滑动结束
break;
}
}
@Override
public void onPageScrolled(int arg0, float arg1, int arg2) {
}
 
@Override
public void onPageSelected(int arg0) {
}
});
}
public void onClick(View view) {
switch(view.getId()){
case R.id.preBtn:
pager.showPre();
break;
case R.id.nextBtn:
pager.showNext();
break;
}
}
}
    最后做一个简单的小结:在使用这个第三方库的时候,我们可以做出各种满足自己需求的东西,只要底层是ViewPager就可以,因为这个第三库的本质就是ViewPager,我们不仅可以放fragment还可以直接放ImageView,更加简单。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值