ViewPager&ToolBars的使用

来源:互联网 发布:狼群算法源代码 编辑:程序博客网 时间:2024/06/05 18:43

使用ViewPager&ToolBars实现两个功能:

1.功能:实现一个自定义的ToolBar和ViewPager配合只用,实现滑动效果以及页面滑动,效果如下:

2、功能:实现手机界面的滑动,效果如下:

第一个例子的步骤:
注意:
1.<style>文件中要修改
<style name="MyApp" parent="Theme.AppCompat.Light.NoActionBar">
</style>
2.将两个类添加到项目中
步骤:
第一步:
//初始化Toolbar
toolbar = (Toolbar) findViewById(R.id.toolbar);
setSupportActionBar(toolbar);
第二步:
//初始化SlidingTabLayout
slidingTabLayout = (SlidingTabLayout) findViewById(R.id.stabl);
第三步:
//初始化Tab标题值
initTiles();
private void initTiles() {

titles = new ArrayList<>();
titles.add("小女孩");
titles.add("小鸭子");
titles.add("小狗狗");
}
第四步:
//初始化viewPager
initViewPager();
private void initViewPager() {

viewPager = (ViewPager) findViewById(R.id.view_pager);
}
第五步:
//初始化也元素
initPage();
private void initPage() {
linearLayoutList = new ArrayList<>();
for (int i = 0; i < 3; i++) {
LinearLayout linearLayout = new LinearLayout(this);
linearLayout.setLayoutParams(new ViewGroup.LayoutParams(
ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.MATCH_PARENT
));
linearLayout.setBackgroundResource(imageIds[i]);

linearLayoutList.add(linearLayout);

}
}
第六步:
//初始化适配器
initAdapter();

//绑定适配器
bindAdapter();

//设置监听
setListener();
private void bindAdapter() {
viewPager.setAdapter(myAdapter);
}

private void initAdapter() {
myAdapter = new MyAdapter(linearLayoutList, titles);
}

private void initViewPager() {

viewPager = (ViewPager) findViewById(R.id.view_pager);
}

private void setListener() {

viewPager.addOnPageChangeListener(new ViewPager.OnPageChangeListener() {
@Override
public void onPageScrolled(int position, float positionOffset, int positionOffsetPixels) {

}

@Override
public void onPageSelected(int position) {

}


/**
* 当前页的滑动状态改变时,回调的方法
* @param state 当前的状态
* SCROLL_STATE_DRAGGING 表示处于滑动状态
* SCROLL_STATE_IDLE 表示静止状态
* SCROLL_STATE_SETTLING 表示停止状态
*/
@Override
public void onPageScrollStateChanged(int state) {

}
});

}
第七步:
slidingTabLayout.setCustomTabView(R.layout.tab, 0);
//viewpagerSlidingTabLayout关联起来
slidingTabLayout.setViewPager(viewPager);


slidingTabLayout.setCustomTabColorizer(new SlidingTabLayout.TabColorizer() {
@Override
public int getIndicatorColor(int position) {
return colors[position];
}

@Override
public int getDividerColor(int position) {

return colors[position];
}
});



完整的代码:
MainActivity 
package com.android.qfjy.day22toolbar;

import android.graphics.Color;
import android.support.v4.view.ViewPager;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.support.v7.widget.Toolbar;
import android.util.Log;
import android.view.ViewGroup;
import android.widget.LinearLayout;
import android.widget.TextView;

import com.android.qfjy.day22toolbar.adapter.MyAdapter;
import com.android.qfjy.day22toolbar.tab.SlidingTabLayout;

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

public class MainActivity extends AppCompatActivity {

private static final String TAG = "MainActivity";
private Toolbar toolbar;
private ViewPager viewPager;
private MyAdapter myAdapter;
private List<LinearLayout> linearLayoutList;
private int[] imageIds = {R.mipmap.txt_theme12, R.mipmap.txt_theme14, R.mipmap.txt_theme30};
private SlidingTabLayout slidingTabLayout;
private List<String> titles;
private int[] colors = {Color.YELLOW, Color.GREEN, Color.RED};

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


//初始化Toolbar
toolbar = (Toolbar) findViewById(R.id.toolbar);
setSupportActionBar(toolbar);

//初始化SlidingTabLayout
slidingTabLayout = (SlidingTabLayout) findViewById(R.id.stabl);

//初始化Tab标题值
initTiles();

//初始化viewPager
initViewPager();

//初始化也元素
initPage();


//初始化适配器
initAdapter();

//绑定适配器
bindAdapter();

//设置监听
setListener();


slidingTabLayout.setCustomTabView(R.layout.tab, 0);
//viewpagerSlidingTabLayout关联起来
slidingTabLayout.setViewPager(viewPager);


slidingTabLayout.setCustomTabColorizer(new SlidingTabLayout.TabColorizer() {
@Override
public int getIndicatorColor(int position) {
return colors[position];
}

@Override
public int getDividerColor(int position) {

return colors[position];
}
});


}

private void initTiles() {

titles = new ArrayList<>();
titles.add("小女孩");
titles.add("小鸭子");
titles.add("小狗狗");


}

private void initPage() {
linearLayoutList = new ArrayList<>();
for (int i = 0; i < 3; i++) {
LinearLayout linearLayout = new LinearLayout(this);
linearLayout.setLayoutParams(new ViewGroup.LayoutParams(
ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.MATCH_PARENT
));
linearLayout.setBackgroundResource(imageIds[i]);

linearLayoutList.add(linearLayout);

}
}


private void bindAdapter() {
viewPager.setAdapter(myAdapter);
}

private void initAdapter() {
myAdapter = new MyAdapter(linearLayoutList, titles);
}

private void initViewPager() {

viewPager = (ViewPager) findViewById(R.id.view_pager);
}

private void setListener() {

viewPager.addOnPageChangeListener(new ViewPager.OnPageChangeListener() {
@Override
public void onPageScrolled(int position, float positionOffset, int positionOffsetPixels) {

}

@Override
public void onPageSelected(int position) {

}


/**
* 当前页的滑动状态改变时,回调的方法
* @param state 当前的状态
* SCROLL_STATE_DRAGGING 表示处于滑动状态
* SCROLL_STATE_IDLE 表示静止状态
* SCROLL_STATE_SETTLING 表示停止状态
*/
@Override
public void onPageScrollStateChanged(int state) {

}
});

}
}

MyAdapter 
package com.android.qfjy.day22toolbar.adapter;

import android.graphics.Color;
import android.support.v4.view.PagerAdapter;
import android.util.Log;
import android.view.View;
import android.view.ViewGroup;
import android.widget.LinearLayout;
import android.widget.TextView;

import java.util.List;

/**
* Created by Administrator on 2015/10/13.
*/
public class MyAdapter extends PagerAdapter {

private static final String TAG = "MyAdapter";
private List<LinearLayout> linearLayoutList;
List<String> titles;

public MyAdapter(List<LinearLayout> linearLayoutList, List<String> titles) {
this.linearLayoutList = linearLayoutList;
this.titles = titles;
}



@Override
public int getCount() {
return linearLayoutList.size();
}

@Override
public boolean isViewFromObject(View view, Object object) {
return view == object;
}

@Override
public Object instantiateItem(ViewGroup container, int position) {
container.addView(linearLayoutList.get(position));
return linearLayoutList.get(position);
}

@Override
public void destroyItem(ViewGroup container, int position, Object object) {
container.removeView(linearLayoutList.get(position));
}

@Override
public CharSequence getPageTitle(int position) {

return titles.get(position);
}
}


第二个例子:代码如下
MainActivity 类
package com.android.qfjy.android23moreviewpager;

import android.support.v4.view.ViewPager;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.util.Log;
import android.view.ViewGroup;
import android.widget.ImageView;
import android.widget.LinearLayout;
import android.widget.Scroller;

import com.android.qfjy.android23moreviewpager.adapter.MyAdapter;

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

public class MainActivity extends AppCompatActivity {

private static final String TAG = "MainActivity";
private ViewPager viewPager;
private MyAdapter adapter;
private List<LinearLayout> linearlayoutList;
private int[] imagerIds={R.mipmap.txt_theme12,R.mipmap.txt_theme14,R.mipmap.txt_theme30};
private LinearLayout mLinearLayout;
private List<ImageView> imageViewList;
private int currentPageIndex;

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

//初始化ViewPager
initViewPager();


//初始化每一页的视图
initPage();


//初始化适配器
initAdapter();

//绑定适配器
bindAdapter();


//设置监听
setListener();
//初始化滑动标志
initFlagImage();

}

private void initFlagImage() {
mLinearLayout= (LinearLayout) findViewById(R.id.linearLayout);

imageViewList = new ArrayList<>();

for (int i=0;i<linearlayoutList.size();i++){
ImageView imageView= (ImageView) mLinearLayout.getChildAt(i);
Log.i(TAG,"ImageView:"+imageView);
imageView.setEnabled(false);
imageViewList.add(imageView);
}
Log.i(TAG, "imageViewList:" + imageViewList.size());
imageViewList.get(0).setEnabled(true);

currentPageIndex=0;
}

private void initPage() {

linearlayoutList=new ArrayList<LinearLayout>();

for (int i=0;i<3;i++){
LinearLayout linearLayout=new LinearLayout(this);
linearLayout.setLayoutParams(new ViewGroup.LayoutParams(
ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.MATCH_PARENT
));
linearLayout.setBackgroundResource(imagerIds[i]);

linearlayoutList.add(linearLayout);

}
Log.v(TAG, "linearlayoutList:"+linearlayoutList.size());


}

private void setListener() {

viewPager.addOnPageChangeListener(new ViewPager.OnPageChangeListener() {

/**
* 表示滑动当前页,还没有到达下一页
* @param position 表示当前页的位置
* @param positionOffset 表示滑动的偏移量,数值范围为[0,1]
* @param positionOffsetPixels
*/

@Override
public void onPageScrolled(int position, float positionOffset, int positionOffsetPixels) {

}

/**
* 表示当前页的位置
*@see ViewPager#SCROLL_STATE_IDLE
*@see ViewPager#SCROLL_STATE_DRAGGING
*@see ViewPager#SCROLL_STATE_SETTLING
*/
@Override
public void onPageSelected(int position) {
imageViewList.get(currentPageIndex).setEnabled(false);

imageViewList.get(position).setEnabled(true);
currentPageIndex=position;
}

/**
* 当前页的滑动状态改变时,回调的方法
* @param state 当前的状态
*/
@Override
public void onPageScrollStateChanged(int state) {




}
});
}

private void bindAdapter() {

viewPager.setAdapter(adapter);
}

private void initAdapter() {
adapter=new MyAdapter(linearlayoutList);

}

private void initViewPager() {
viewPager= (ViewPager) findViewById(R.id.main_view_pager);

}
}
MyAdapter 类
package com.android.qfjy.android23moreviewpager.adapter;

import android.support.v4.view.PagerAdapter;
import android.view.View;
import android.view.ViewGroup;
import android.widget.LinearLayout;

import java.util.List;

/**
* Created by Administrator on 2015/10/13.
*/
public class MyAdapter extends PagerAdapter{

List<LinearLayout> linearLayoutList;
public MyAdapter(List<LinearLayout> linearLayoutList){
this.linearLayoutList=linearLayoutList;

}


@Override
public int getCount() {
return linearLayoutList.size();
}

@Override
public boolean isViewFromObject(View view, Object object) {
return view==object;
}

@Override
public Object instantiateItem(ViewGroup container, int position) {
container.addView(linearLayoutList.get(position));
return linearLayoutList.get(position);
}

@Override
public void destroyItem(ViewGroup container, int position, Object object) {
container.removeView(linearLayoutList.get(position));
}
}


0 0
原创粉丝点击