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