发布时间:2025-12-10 19:11:46 浏览次数:8
通过JazzyViewPager来实现Fragment页面间的动画切效果JazzyViewPager开源项目地址:https://github.com/jfeinstein10/JazzyViewPager其实实现它还是蛮简单的,有两个关键点,一是使用扩展FragmentPagerAdapter,二是重写instantiateItem,isViewFromObject这两个方法,如果仅仅扩展FragmentPagerAdapter的话,动画效果则会不起作用。…
JazzyViewPager 开源项目地址:
https://github.com/jfeinstein10/JazzyViewPager
其实实现它还是蛮简单的,有两个关键点,一是使用扩展FragmentPagerAdapter,二是重写instantiateItem,isViewFromObject这两个方法,如果仅仅扩展FragmentPagerAdapter的话,动画效果则会不起作用。
布局文件如下:
<LinearLayout xmlns:andro android: android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertical"> <com.jfeinstein.jazzyviewpager.JazzyViewPager android: android:layout_width="match_parent" android:layout_weight="1" android:layout_height="0dp"> </com.jfeinstein.jazzyviewpager.JazzyViewPager> <TextView android:background="@color/bg_silver" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="this is the TabFragmentActivity\nTAB will be here." /></LinearLayout>
是否还在为Ide开发工具频繁失效而烦恼,来吧关注以下公众号获取最新激活方式。亲测可用!
【正版授权,激活自己账号】:Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛
【官方授权 正版激活】:官方授权 正版激活 自己使用,支持Jetbrains家族下所有IDE…
Java代码如下:
package org.csware.ee.demo;import android.os.Bundle;import android.support.v4.app.Fragment;import android.support.v4.app.FragmentActivity;import android.support.v4.app.FragmentManager;import android.support.v4.app.FragmentPagerAdapter;import android.view.View;import android.view.ViewGroup;import android.widget.LinearLayout;import com.jfeinstein.jazzyviewpager.JazzyViewPager;import org.csware.ee.demo.fragment.FourFragment;import org.csware.ee.demo.fragment.OneFragment;import org.csware.ee.demo.fragment.ThreeFragment;import org.csware.ee.demo.fragment.TwoFragment;public class TabFragmentActivity extends FragmentActivity { final static String TAG = "TabFragmentActivity"; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_tab_fragment); init(); } private JazzyViewPager mJazzy; LinearLayout tabPage; FragmentActivity activity; void init() { activity = this; tabPage = (LinearLayout) findViewById(R.id.tabPage); setupJazziness(JazzyViewPager.TransitionEffect.Standard); } void setupJazziness(JazzyViewPager.TransitionEffect effect) { mJazzy = (JazzyViewPager) findViewById(R.id.jazzy_pager); mJazzy.setTransitionEffect(effect); //mJazzy.setAdapter(new MainAdapter()); mJazzy.setAdapter(new TabFragmentAdapter(getSupportFragmentManager())); //mJazzy.setPageMargin(30);// mJazzy.setOutlineEnabled(true); } /** * 适配器 */ class TabFragmentAdapter extends FragmentPagerAdapter { public TabFragmentAdapter(FragmentManager fragmentManager) { super(fragmentManager); } Fragment[] pages = new Fragment[]{ new OneFragment(), new TwoFragment(), new ThreeFragment(), new FourFragment() }; @Override public Fragment getItem(int position) { return pages[position]; } @Override public int getCount() { return pages.length; } //**************加上下面的两行即可实现换页时的动画效果*********************************// @Override public Object instantiateItem(ViewGroup container, int position) { Object obj = super.instantiateItem(container, position); mJazzy.setObjectForPosition(obj, position); return obj; } @Override public boolean isViewFromObject(View view, Object object) { if (object != null) { return ((Fragment) object).getView() == view; } else { return false; } } }}至于4个Fragment,就不贴了。
转载于:https://www.cnblogs.com/atwind/p/4602592.html