Java 如何将fragmentpageradapter中每个选项卡的图标设置为gif动画?

Java 如何将fragmentpageradapter中每个选项卡的图标设置为gif动画?,java,android,xml,gif,Java,Android,Xml,Gif,我想将fragmentpageradapter中每个选项卡的图标设置为gif动画。当用户滑动到每个特定选项卡时,动画将开始 例如: 用户从选项卡1开始。选项卡1动画将开始。现在用户滑动到选项卡2。选项卡1图标将暂停,选项卡2图标将启动。下一个用户滑动到选项卡3。选项卡3图标将启动,选项卡1和选项卡2将暂停。。等等 java import android.content.Context; import android.os.Bundle; import android.support.annota

我想将fragmentpageradapter中每个选项卡的图标设置为gif动画。当用户滑动到每个特定选项卡时,动画将开始

例如:

用户从选项卡1开始。选项卡1动画将开始。现在用户滑动到选项卡2。选项卡1图标将暂停,选项卡2图标将启动。下一个用户滑动到选项卡3。选项卡3图标将启动,选项卡1和选项卡2将暂停。。等等

java

import android.content.Context;
import android.os.Bundle;
import android.support.annotation.Nullable;
import android.support.v4.app.Fragment;
import android.support.v4.view.ViewPager;
import android.support.v4.view.ViewPager.OnPageChangeListener;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.HorizontalScrollView;
import android.widget.TabHost;
import android.widget.TabHost.OnTabChangeListener;
import android.widget.TabHost.TabContentFactory;
import java.util.List;
import java.util.Vector;


public class MyHome extends Fragment implements OnTabChangeListener, OnPageChangeListener {

private TabHost tabHost;
private ViewPager viewPager;
private MyFragmentPagerAdapter myViewPagerAdapter;
private String[] tabsTitles = {"About Me", "Connections", "Messages", "Open Forum", "Music", "Books", "Sports", "Title 8", "Title 9"};
private boolean flag = false;
int i = 0;
View v;


@Override
public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
    ((MainActivity)getActivity()).getSupportActionBar().setTitle("Home");
    v = inflater.inflate(R.layout.tabs_viewpager_layout, container, false);
    i++;
    this.initializeTabHost(savedInstanceState);
    this.initializeViewPager();
    return v;
}
class FakeContent implements TabContentFactory {
    private final Context mContext;
    public FakeContent(Context context) {
        mContext = context;
    }
    @Override
    public View createTabContent(String tag) {
        View v = new View(mContext);
        v.setMinimumHeight(0);
        v.setMinimumWidth(0);
        return v;
    }
}
private void initializeViewPager() {
    List<Fragment> fragments = new Vector<Fragment>();
    fragments.add(new Home1Fragment());
    fragments.add(new Home2Fragment());
    fragments.add(new Home3Fragment());
    fragments.add(new Home4Fragment());
    fragments.add(new Home5Fragment());
    fragments.add(new Home6Fragment());
    fragments.add(new Home7Fragment());
    this.myViewPagerAdapter = new MyFragmentPagerAdapter(getChildFragmentManager(), fragments);
    this.viewPager = (ViewPager) v.findViewById(R.id.viewPager);
    this.viewPager.setAdapter(this.myViewPagerAdapter);
    this.viewPager.setOnPageChangeListener(this);
    //this.viewPager.setCurrentItem(4);
}


private void initializeTabHost(Bundle args) {
    tabHost = (TabHost) v.findViewById(android.R.id.tabhost);
    tabHost.setup();


    for (int i = 1; i <= 7; i++) {
        TabHost.TabSpec tabSpec;
        tabSpec = tabHost.newTabSpec("Home " + i);

//Here is where each tab is set to a particular icon from the drawable folder
        if(i == 1) {
            //tabSpec.setIndicator("");
            tabSpec.setIndicator("", getResources().getDrawable(R.drawable.aboutme));
        }else if(i == 2) {
            tabSpec.setIndicator("",getResources().getDrawable(R.drawable.connections));
        }else if(i == 3) {
            tabSpec.setIndicator("",getResources().getDrawable(R.drawable.messages));
        }else if (i == 4) {
            tabSpec.setIndicator("",getResources().getDrawable(R.drawable.mics));
        }else if(i == 5) {
            tabSpec.setIndicator("",getResources().getDrawable(R.drawable.music));
        }else if(i == 6) {
            tabSpec.setIndicator("",getResources().getDrawable(R.drawable.books));
        }else if(i == 7) {
            tabSpec.setIndicator("",getResources().getDrawable(R.drawable.sports));
        }
        tabSpec.setContent(new FakeContent(getActivity()));
        tabHost.addTab(tabSpec);
    }
    tabHost.setOnTabChangedListener(this);
}


@Override
public void onTabChanged(String tabId) {
    int pos = this.tabHost.getCurrentTab();
    this.viewPager.setCurrentItem(pos);
    HorizontalScrollView hScrollView = (HorizontalScrollView) v.findViewById(R.id.hScrollView);
    View tabView = tabHost.getCurrentTabView();
    int scrollPos = tabView.getLeft() - (hScrollView.getWidth() - tabView.getWidth()) / 2;
    hScrollView.smoothScrollTo(scrollPos, 0);
}

@Override
public void onPageScrollStateChanged(int arg0) {
}

@Override
public void onPageScrolled(int arg0, float arg1, int arg2) {
}



@Override
public void onPageSelected(int position) {
    this.tabHost.setCurrentTab(position);
        ((MainActivity)getActivity()).getSupportActionBar().setTitle(tabsTitles[position]);
}
}
导入android.content.Context;
导入android.os.Bundle;
导入android.support.annotation.Nullable;
导入android.support.v4.app.Fragment;
导入android.support.v4.view.ViewPager;
导入android.support.v4.view.ViewPager.OnPageChangeListener;
导入android.view.LayoutInflater;
导入android.view.view;
导入android.view.ViewGroup;
导入android.widget.HorizontalScrollView;
导入android.widget.TabHost;
导入android.widget.TabHost.OnTabChangeListener;
导入android.widget.TabHost.TabContentFactory;
导入java.util.List;
导入java.util.Vector;
公共类MyHome扩展片段实现OnTabChangeListener、OnPageChangeListener{
私有TabHost TabHost;
私人视页机视页机;
私人MyFragmentPagerAdapter myViewPagerAdapter;
私有字符串[]选项卡={“关于我”、“连接”、“消息”、“开放论坛”、“音乐”、“书籍”、“体育”、“标题8”、“标题9”};
私有布尔标志=false;
int i=0;
观点五;
@凌驾
创建视图时的公共视图(LayoutFlater充气机、@Nullable ViewGroup容器、@Nullable Bundle savedInstanceState){
((MainActivity)getActivity()).getSupportActionBar().setTitle(“主页”);
v=充气机。充气(R.layout.tabs\u viewpager\u布局,容器,假);
i++;
这个。初始化etabhost(savedInstanceState);
this.initializeviewpage();
返回v;
}
类FakeContent实现TabContentFactory{
私有最终上下文mContext;
公开伪造内容(上下文){
mContext=上下文;
}
@凌驾
公共视图createTabContent(字符串标记){
视图v=新视图(mContext);
v、 设置最小高度(0);
v、 设置最小宽度(0);
返回v;
}
}
private void initializeviewpage(){
列表片段=新向量();
添加(新Home1Fragment());
添加(新的Home2Fragment());
添加(新的Home3Fragment());
添加(新的Home4Fragment());
添加(新的Home5Fragment());
添加(新的Home6Fragment());
添加(新的Home7Fragment());
this.myViewPagerAdapter=新的MyFragmentPagerAdapter(getChildFragmentManager(),fragments);
this.viewPager=(viewPager)v.findViewById(R.id.viewPager);
this.viewPager.setAdapter(this.myViewPagerAdapter);
this.viewPager.setOnPageChangeListener(this);
//this.viewPager.setCurrentItem(4);
}
私有void初始值setabhost(Bundle args){
tabHost=(tabHost)v.findviewbyd(android.R.id.tabHost);
tabHost.setup();

对于(inti=1;i我将为每个选项卡提供两个可绘图项,一个动画版本和一个非动画版本

然后,我会在
ViewPager
上注册一个页面更改侦听器,以替换可绘制内容:

    viewPager.addOnPageChangeListener(new SimpleOnPageChangeListener() {

        @Override
        public void onPageSelected(int position) {

            if (mLastPageSelected != -1) { // check for first time
                switch (mLastPageSelected) {
                    // case statements to set last tab icon to non-animated drawable
                }
            }

            switch (position) {
                // case statements to set current tab icon to animated drawable
            }

            mLastPageSelected = position;
        }
    });

糟糕,我误解了你的问题。重做我的答案。
    viewPager.addOnPageChangeListener(new SimpleOnPageChangeListener() {

        @Override
        public void onPageSelected(int position) {

            if (mLastPageSelected != -1) { // check for first time
                switch (mLastPageSelected) {
                    // case statements to set last tab icon to non-animated drawable
                }
            }

            switch (position) {
                // case statements to set current tab icon to animated drawable
            }

            mLastPageSelected = position;
        }
    });