`
Jclick
  • 浏览: 187446 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

android viewpager+fragment实现滚动tab页

阅读更多

 闲着。用viewpager+fragment实现了个滚动tab。。轻拍,以后会陆续发先小东西出来。。爱分享,才快乐。demo见附件。。

 

package com.example.demo;

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

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.support.v4.view.ViewPager;
import android.support.v4.view.ViewPager.OnPageChangeListener;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.TextView;

public class MainActivity extends FragmentActivity {

private TextView chatView, address, findView;
private ViewPager mViewPager;
private TextView mBottomLine;
private int screenWidth = 0;

private int currentIndex = 0;

private MyPagerAdapter myPagerAdapter;
private List<Fragment> mFragmentList = new ArrayList<Fragment>();
private List<String> mTitleList = new ArrayList<String>();
MyFragment chatFragment;
MyFragment findFragment;
MyFragment addressFragment;

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);

initComponents();
}

private void initComponents() {

this.mBottomLine = (TextView) findViewById(R.id.bottom_line);
this.screenWidth = getWindowManager().getDefaultDisplay().getWidth();
this.chatView = (TextView) findViewById(R.id.chat_top_info);
this.findView = (TextView) findViewById(R.id.find_top_info);
this.address = (TextView) findViewById(R.id.address_top_info);
TopTabClickListener clickListener = new TopTabClickListener();
this.chatView.setOnClickListener(clickListener);
this.findView.setOnClickListener(clickListener);
this.address.setOnClickListener(clickListener);

this.mViewPager = (ViewPager)findViewById(R.id.viewPager);
chatFragment = new MyFragment();
Bundle b = new Bundle();
b.putInt("index", 0);
chatFragment.setArguments(b);
        mFragmentList.add(chatFragment);
        findFragment = new MyFragment();
        b = new Bundle();
        b.putInt("index", 1);
        findFragment.setArguments(b);
        mFragmentList.add(findFragment);
        addressFragment = new MyFragment();
        b = new Bundle();
        b.putInt("index", 2);
        addressFragment.setArguments(b);
        mFragmentList.add(addressFragment);
        myPagerAdapter = new MyPagerAdapter(getSupportFragmentManager(), mFragmentList, mTitleList);
        mViewPager.setAdapter(myPagerAdapter);
        mViewPager.setOnPageChangeListener(new OnPageChangeListener() {

@Override
public void onPageSelected(int index) {}

@Override
public void onPageScrolled(int index, float arg1, int pixes) {
if(pixes != 0){
mBottomLine.layout((int) ((index + arg1) * screenWidth / 3), 0, (int) ((index + 1 + arg1) * screenWidth / 3), mBottomLine.getWidth());
}
if (pixes == 0) {
currentIndex = index;
changeIndex(currentIndex);
}
System.out.println("the state is : " + arg1 + "   and index is " + index);
}

@Override
public void onPageScrollStateChanged(int state) {}
});
}

public void onLeftBtnClick(View view){
this.finish();
}

private class TopTabClickListener implements OnClickListener{

@Override
public void onClick(View view) {
if (view.getId() == chatView.getId()) {
mViewPager.setCurrentItem(0);
}else if(view.getId() == findView.getId()){
mViewPager.setCurrentItem(1);
}else{
mViewPager.setCurrentItem(2);
}
changeIndex(mViewPager.getCurrentItem());
}

}

private void changeIndex(int index){
if(index == 0){
chatView.setTextColor(getResources().getColor(R.color.green));
findView.setTextColor(getResources().getColor(R.color.black));
address.setTextColor(getResources().getColor(R.color.black));
}else if(index == 1){
findView.setTextColor(getResources().getColor(R.color.green));
chatView.setTextColor(getResources().getColor(R.color.black));
address.setTextColor(getResources().getColor(R.color.black));
}else {
address.setTextColor(getResources().getColor(R.color.green));
findView.setTextColor(getResources().getColor(R.color.black));
chatView.setTextColor(getResources().getColor(R.color.black));
}
mBottomLine.layout((int) (index * screenWidth / 3), 0, (int) ((index + 1) * screenWidth / 3), mBottomLine.getWidth());
}

private class MyPagerAdapter extends FragmentPagerAdapter {

private List<Fragment> fragmentList;
private List<String> titleList;

public MyPagerAdapter(FragmentManager fm, List<Fragment> fragmentList,
List<String> titleList) {
super(fm);
this.fragmentList = fragmentList;
this.titleList = titleList;
}

/**
* 得到每个页面
*/
@Override
public Fragment getItem(int arg0) {
return (fragmentList == null || fragmentList.size() == 0) ? null
: fragmentList.get(arg0);
}

/**
* 每个页面的title
*/
@Override
public CharSequence getPageTitle(int position) {
return (titleList.size() > position) ? titleList.get(position) : "";
}

@Override
public int getCount() {
return fragmentList == null ? 0 : fragmentList.size();
}
}
}


package com.example.demo;

import android.os.Bundle;
import android.support.v4.app.Fragment;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.TextView;

public class MyFragment extends Fragment {

private int index = 0;
private LayoutInflater mInflater;

@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
index = getArguments().getInt("index", 0);
}

@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
mInflater = inflater;
TextView v = (TextView) mInflater.inflate(R.layout.fragment, null);
v.setText("第" + index);
return v;
}
}

 

  • 大小: 73.6 KB
分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics