关于仿微信滑动切换View页面的问题

大家好,我有个问题困扰自己很久了,因为自身水平有限,也刚学习android不久,所以真心向大家请教一下

如图所示


这是我自己弄得一个项目,然后项目底部的导航栏是引入的github第三方项目,地址是 https://github.com/armcha/Space-Navigation-View,我想实现微信那种滑动可以切换View页面,同时底部栏的图标和文字也会跟随页面变化,但是底部栏的图标和文字跟随页面变化这一功能我一直实现不了。点击图标跳转到相应页面倒是实现了,我查看那个第三方项目源码,但水平有限,看的不是全部都懂,但还是实现不了跟随切换的功能。第三方项目我是作为module导入自己的项目,修改其中的源码来实现跟随切换功能。下面我会给出与跟随切换功能相关代码,望各位大神指教!如果能帮我看一下那个地址的源码再来解决这个问题就更好了,小弟子在下谢谢大家!

下面给出源码(自己的项目)
MainActivity.java
import android.content.Context;
import android.graphics.Color;
import android.support.v4.view.ViewPager;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.LayoutInflater;
import android.view.View;
import android.widget.ImageView;
import android.widget.LinearLayout;
import android.widget.RelativeLayout;
import android.widget.TextView;
import android.widget.Toast;

import com.luseen.spacenavigation.SpaceItem;
import com.luseen.spacenavigation.SpaceNavigationView;
import com.luseen.spacenavigation.SpaceOnClickListener;
import com.luseen.spacenavigation.Utils;

import java.util.ArrayList;
import java.util.List;

public class MainActivity extends AppCompatActivity implements ViewPager.OnPageChangeListener{
    private SpaceNavigationView spaceNavigationView;
    private ViewPager viewPager;
    private ContentAdapter adapter;
    private List<View> views;
    private List<SpaceItem> spaceItemsList = new ArrayList<>();
    private List<View> spaceItemLayout=new ArrayList<>();
    private Context mContext;
    LayoutInflater inflater;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        mContext=getApplicationContext();
        inflater = (LayoutInflater) mContext.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
        initView(savedInstanceState);
        initEvent();
    }

    @Override
    protected void onSaveInstanceState(Bundle outState){
        super.onSaveInstanceState(outState);
        spaceNavigationView.onSaveInstanceState(outState);
    }

    private void initView(Bundle savedInstanceState){
        spaceNavigationView=(SpaceNavigationView)findViewById(R.id.space);
        spaceNavigationView.initWithSaveInstanceState(savedInstanceState);

        SpaceItem homeSpace=new SpaceItem("首页",R.drawable.home);
        spaceNavigationView.addSpaceItem(homeSpace);
        spaceItemsList.add(homeSpace);
        spaceItemLayout.add(homeSpace.getTextAndIconContainer(inflater));

        SpaceItem classSpace=new SpaceItem("分类",R.drawable.classify);
        spaceNavigationView.addSpaceItem(classSpace);
        spaceItemsList.add(classSpace);
        spaceItemLayout.add(classSpace.getTextAndIconContainer(inflater));

        SpaceItem discoverySpace=new SpaceItem("发现",R.drawable.discovery);
        spaceNavigationView.addSpaceItem(discoverySpace);
        spaceItemsList.add(discoverySpace);
        spaceItemLayout.add(discoverySpace.getTextAndIconContainer(inflater));

        SpaceItem personalSpace=new SpaceItem("我的",R.drawable.me);
        spaceNavigationView.addSpaceItem(personalSpace);
        spaceItemsList.add(personalSpace);
        spaceItemLayout.add(personalSpace.getTextAndIconContainer(inflater));

        spaceNavigationView.shouldShowFullBadgeText(true);
        spaceNavigationView.setCentreButtonIconColorFilterEnabled(false);

        this.viewPager=(ViewPager)findViewById(R.id.content);

        View pageHome=View.inflate(MainActivity.this,R.layout.home_page,null);
        View pageClassify=View.inflate(MainActivity.this,R.layout.classify_page,null);
        View pageDiscovery=View.inflate(MainActivity.this,R.layout.discovery_page,null);
        View pagePersonal=View.inflate(MainActivity.this,R.layout.personal_page,null);



        views=new ArrayList<View>();
        views.add(pageHome);
        views.add(pageClassify);
        views.add(pageDiscovery);
        views.add(pagePersonal);

        this.adapter=new ContentAdapter(views);
        viewPager.setAdapter(adapter);
    }

    private void initEvent(){
        spaceNavigationView.setSpaceOnClickListener(new SpaceOnClickListener() {
            @Override
            public void onCentreButtonClick() {
                Toast.makeText(getApplicationContext(),"你点击了发布",Toast.LENGTH_SHORT).show();
            }

            @Override
            public void onItemClick(int itemIndex, String itemName) {
                viewPager.setCurrentItem(itemIndex);
            }

            @Override
            public void onItemReselected(int itemIndex, String itemName) {

            }
        });
        viewPager.setOnPageChangeListener(this);
    }

    @Override
    public void onPageScrollStateChanged(int arg0){

    }

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

    }

    @Override
    public void onPageSelected(int arg0){
        //在View滑动切换时设置spaceItem变色
        Toast.makeText(getApplicationContext(),spaceItemsList.get(arg0).getItemName(),Toast.LENGTH_SHORT).show();
        RelativeLayout content=(RelativeLayout)spaceItemLayout.get(arg0);
        ImageView spaceItemIcon = (ImageView) content.findViewById(R.id.space_icon);
        TextView spaceItemText = (TextView) content.findViewById(R.id.space_text);
        spaceItemText.setTextColor(Color.parseColor("#f44336"));
        Utils.changeImageViewTint(spaceItemIcon, Color.parseColor("#f44336"));
    }
}


SpaceItem.java(第三方项目源码)
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.RelativeLayout;

import java.io.Serializable;

public class SpaceItem implements Serializable {

    private RelativeLayout textAndIconContainer;

    private String itemName;

    private int itemIcon;

    public SpaceItem(String itemName, int itemIcon) {
        this.itemName = itemName;
        this.itemIcon = itemIcon;
    }

    public String getItemName() {
        return itemName;
    }

    public void setItemName(String itemName) {
        this.itemName = itemName;
    }

    public int getItemIcon() {
        return itemIcon;
    }

    public void setItemIcon(int itemIcon) {
        this.itemIcon = itemIcon;
    }

    public RelativeLayout getTextAndIconContainer(LayoutInflater inflater){
        textAndIconContainer = (RelativeLayout) inflater.inflate(R.layout.space_item_view, null);
        return textAndIconContainer;
    }
}


SpaceNavigationView.java(第三方项目源码片段)





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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值