80,351
社区成员
发帖
与我相关
我的任务
分享
package com.example.androidtest;
import java.util.ArrayList;
import java.util.List;
import android.annotation.SuppressLint;
import android.app.Activity;
import android.database.DataSetObserver;
import android.os.Bundle;
import android.support.v4.view.PagerAdapter;
import android.support.v4.view.ViewPager;
import android.support.v4.view.ViewPager.PageTransformer;
import android.util.Log;
import android.view.LayoutInflater;
import android.view.View;
import android.view.View.OnClickListener;
import android.view.ViewGroup;
import android.view.animation.AnimationUtils;
import android.widget.BaseAdapter;
import android.widget.Button;
import android.widget.ListAdapter;
import android.widget.ListView;
import android.widget.TextView;
@SuppressLint("NewApi")
public class ViewPagerActivity extends Activity{
private List<String> listData=new ArrayList<String>();
private List<View> listView=new ArrayList<View>();
private List<List<String>> listStations=new ArrayList<List<String>>();
ViewPager viewPager;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_viewpager);
viewPager=(ViewPager)this.findViewById(R.id.viewPager);
viewPager.setPageMargin(10);
viewPager.setPageMarginDrawable(R.drawable.ic_launcher);
viewPager.setPageTransformer(true, new ZoomOutPageTransformer());
this.findViewById(R.id.button1).setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
initData();
}
});
}
@SuppressLint("NewApi")
public class ZoomOutPageTransformer implements ViewPager.PageTransformer {
private static final float MIN_SCALE = 0.85f;
private static final float MIN_ALPHA = 0.5f;
@SuppressLint("NewApi")
public void transformPage(View view, float position)
{
int pageWidth = view.getWidth();
int pageHeight = view.getHeight();
Log.d("dd",view.getTag()+" pageWidth:"+pageWidth+" pageHeight:"+pageHeight+" position:"+position);
if (position < -1) { // [-Infinity,-1) // This page is way off-screen to the left.
view.setAlpha(0);
} else if (position <= 1) { // [-1,1] // Modify the default slide transition to shrink the page as well
float scaleFactor = Math.max(MIN_SCALE, 1 - Math.abs(position));
float vertMargin = pageHeight * (1 - scaleFactor) / 2;
float horzMargin = pageWidth * (1 - scaleFactor) / 2;
if (position < 0) {
view.setTranslationX(horzMargin - vertMargin / 2);
}
else {
view.setTranslationX(-horzMargin + vertMargin / 2);
} // Scale the page down (between MIN_SCALE and 1)
view.setScaleX(scaleFactor);
view.setScaleY(scaleFactor); // Fade the page relative to its size.
view.setAlpha(MIN_ALPHA +(scaleFactor - MIN_SCALE) / (1 - MIN_SCALE) * (1 - MIN_ALPHA));
} else { // (1,+Infinity] // This page is way off-screen to the right.
view.setAlpha(0);
}
}
}
private void initData(){
for(int i=0;i<5;i++){
View view=LayoutInflater.from(this).inflate(R.layout.activity_viewpager_item, null);
view.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
// 在这里添加点击事件
}
});
view.setTag("索引:"+i);
listView.add(view);
List<String> listStation=new ArrayList<String>();
for(int j=0;j<50;j++){
listStation.add("站点:"+j);
}
listStations.add(listStation);
}
viewPager.setAdapter(new PagerAdapter() {
@Override
public boolean isViewFromObject(View arg0, Object arg1) {
return arg0==arg1;
}
@Override
public int getCount() {
return listView.size();
}
@Override
public Object instantiateItem(ViewGroup container, final int position) {
View view=listView.get(position);
ListView lv= (ListView) view.findViewById(R.id.listView1);
lv.setAdapter(new BaseAdapter() {
@Override
public View getView(int p, View convertView, ViewGroup parent) {
if(convertView==null){
convertView=LayoutInflater.from(ViewPagerActivity.this).inflate(android.R.layout.simple_list_item_1, null);
}
((TextView)convertView.findViewById(android.R.id.text1)).setText(listStations.get(position).get(p));
return convertView;
}
@Override
public long getItemId(int p) {
return p;
}
@Override
public Object getItem(int p) {
// TODO Auto-generated method stub
return listStations.get(position).get(p);
}
@Override
public int getCount() {
return listStations.get(position).size();
}
});
container.addView(listView.get(position));
return listView.get(position);
}
@Override
public void destroyItem(ViewGroup container, int position,
Object object) {
container.removeView(listView.get(position));
}
});
viewPager.setCurrentItem(0);
}
}
[/quote]
很感谢你的demo 这样依旧需要把所有分页的后台写在ViewPager中,看来好像没什么好办法了。package com.example.androidtest;
import java.util.ArrayList;
import java.util.List;
import android.annotation.SuppressLint;
import android.app.Activity;
import android.database.DataSetObserver;
import android.os.Bundle;
import android.support.v4.view.PagerAdapter;
import android.support.v4.view.ViewPager;
import android.support.v4.view.ViewPager.PageTransformer;
import android.util.Log;
import android.view.LayoutInflater;
import android.view.View;
import android.view.View.OnClickListener;
import android.view.ViewGroup;
import android.view.animation.AnimationUtils;
import android.widget.BaseAdapter;
import android.widget.Button;
import android.widget.ListAdapter;
import android.widget.ListView;
import android.widget.TextView;
@SuppressLint("NewApi")
public class ViewPagerActivity extends Activity{
private List<String> listData=new ArrayList<String>();
private List<View> listView=new ArrayList<View>();
private List<List<String>> listStations=new ArrayList<List<String>>();
ViewPager viewPager;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_viewpager);
viewPager=(ViewPager)this.findViewById(R.id.viewPager);
viewPager.setPageMargin(10);
viewPager.setPageMarginDrawable(R.drawable.ic_launcher);
viewPager.setPageTransformer(true, new ZoomOutPageTransformer());
this.findViewById(R.id.button1).setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
initData();
}
});
}
@SuppressLint("NewApi")
public class ZoomOutPageTransformer implements ViewPager.PageTransformer {
private static final float MIN_SCALE = 0.85f;
private static final float MIN_ALPHA = 0.5f;
@SuppressLint("NewApi")
public void transformPage(View view, float position)
{
int pageWidth = view.getWidth();
int pageHeight = view.getHeight();
Log.d("dd",view.getTag()+" pageWidth:"+pageWidth+" pageHeight:"+pageHeight+" position:"+position);
if (position < -1) { // [-Infinity,-1) // This page is way off-screen to the left.
view.setAlpha(0);
} else if (position <= 1) { // [-1,1] // Modify the default slide transition to shrink the page as well
float scaleFactor = Math.max(MIN_SCALE, 1 - Math.abs(position));
float vertMargin = pageHeight * (1 - scaleFactor) / 2;
float horzMargin = pageWidth * (1 - scaleFactor) / 2;
if (position < 0) {
view.setTranslationX(horzMargin - vertMargin / 2);
}
else {
view.setTranslationX(-horzMargin + vertMargin / 2);
} // Scale the page down (between MIN_SCALE and 1)
view.setScaleX(scaleFactor);
view.setScaleY(scaleFactor); // Fade the page relative to its size.
view.setAlpha(MIN_ALPHA +(scaleFactor - MIN_SCALE) / (1 - MIN_SCALE) * (1 - MIN_ALPHA));
} else { // (1,+Infinity] // This page is way off-screen to the right.
view.setAlpha(0);
}
}
}
private void initData(){
for(int i=0;i<5;i++){
View view=LayoutInflater.from(this).inflate(R.layout.activity_viewpager_item, null);
view.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
// 在这里添加点击事件
}
});
view.setTag("索引:"+i);
listView.add(view);
List<String> listStation=new ArrayList<String>();
for(int j=0;j<50;j++){
listStation.add("站点:"+j);
}
listStations.add(listStation);
}
viewPager.setAdapter(new PagerAdapter() {
@Override
public boolean isViewFromObject(View arg0, Object arg1) {
return arg0==arg1;
}
@Override
public int getCount() {
return listView.size();
}
@Override
public Object instantiateItem(ViewGroup container, final int position) {
View view=listView.get(position);
ListView lv= (ListView) view.findViewById(R.id.listView1);
lv.setAdapter(new BaseAdapter() {
@Override
public View getView(int p, View convertView, ViewGroup parent) {
if(convertView==null){
convertView=LayoutInflater.from(ViewPagerActivity.this).inflate(android.R.layout.simple_list_item_1, null);
}
((TextView)convertView.findViewById(android.R.id.text1)).setText(listStations.get(position).get(p));
return convertView;
}
@Override
public long getItemId(int p) {
return p;
}
@Override
public Object getItem(int p) {
// TODO Auto-generated method stub
return listStations.get(position).get(p);
}
@Override
public int getCount() {
return listStations.get(position).size();
}
});
container.addView(listView.get(position));
return listView.get(position);
}
@Override
public void destroyItem(ViewGroup container, int position,
Object object) {
container.removeView(listView.get(position));
}
});
viewPager.setCurrentItem(0);
}
}
package com.example.androidtest;
import java.util.ArrayList;
import java.util.List;
import android.annotation.SuppressLint;
import android.app.Activity;
import android.database.DataSetObserver;
import android.os.Bundle;
import android.support.v4.view.PagerAdapter;
import android.support.v4.view.ViewPager;
import android.support.v4.view.ViewPager.PageTransformer;
import android.util.Log;
import android.view.LayoutInflater;
import android.view.View;
import android.view.View.OnClickListener;
import android.view.ViewGroup;
import android.view.animation.AnimationUtils;
import android.widget.BaseAdapter;
import android.widget.Button;
import android.widget.ListAdapter;
import android.widget.ListView;
import android.widget.TextView;
@SuppressLint("NewApi")
public class ViewPagerActivity extends Activity{
private List<String> listData=new ArrayList<String>();
private List<View> listView=new ArrayList<View>();
private List<List<String>> listStations=new ArrayList<List<String>>();
ViewPager viewPager;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_viewpager);
viewPager=(ViewPager)this.findViewById(R.id.viewPager);
viewPager.setPageMargin(10);
viewPager.setPageMarginDrawable(R.drawable.ic_launcher);
viewPager.setPageTransformer(true, new ZoomOutPageTransformer());
this.findViewById(R.id.button1).setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
initData();
}
});
}
@SuppressLint("NewApi")
public class ZoomOutPageTransformer implements ViewPager.PageTransformer {
private static final float MIN_SCALE = 0.85f;
private static final float MIN_ALPHA = 0.5f;
@SuppressLint("NewApi")
public void transformPage(View view, float position)
{
int pageWidth = view.getWidth();
int pageHeight = view.getHeight();
Log.d("dd",view.getTag()+" pageWidth:"+pageWidth+" pageHeight:"+pageHeight+" position:"+position);
if (position < -1) { // [-Infinity,-1) // This page is way off-screen to the left.
view.setAlpha(0);
} else if (position <= 1) { // [-1,1] // Modify the default slide transition to shrink the page as well
float scaleFactor = Math.max(MIN_SCALE, 1 - Math.abs(position));
float vertMargin = pageHeight * (1 - scaleFactor) / 2;
float horzMargin = pageWidth * (1 - scaleFactor) / 2;
if (position < 0) {
view.setTranslationX(horzMargin - vertMargin / 2);
}
else {
view.setTranslationX(-horzMargin + vertMargin / 2);
} // Scale the page down (between MIN_SCALE and 1)
view.setScaleX(scaleFactor);
view.setScaleY(scaleFactor); // Fade the page relative to its size.
view.setAlpha(MIN_ALPHA +(scaleFactor - MIN_SCALE) / (1 - MIN_SCALE) * (1 - MIN_ALPHA));
} else { // (1,+Infinity] // This page is way off-screen to the right.
view.setAlpha(0);
}
}
}
private void initData(){
for(int i=0;i<5;i++){
View view=LayoutInflater.from(this).inflate(R.layout.activity_viewpager_item, null);
view.setTag("索引:"+i);
listView.add(view);
List<String> listStation=new ArrayList<String>();
for(int j=0;j<50;j++){
listStation.add("站点:"+j);
}
listStations.add(listStation);
}
viewPager.setAdapter(new PagerAdapter() {
@Override
public boolean isViewFromObject(View arg0, Object arg1) {
return arg0==arg1;
}
@Override
public int getCount() {
return listView.size();
}
@Override
public Object instantiateItem(ViewGroup container, final int position) {
View view=listView.get(position);
ListView lv= (ListView) view.findViewById(R.id.listView1);
lv.setAdapter(new BaseAdapter() {
@Override
public View getView(int p, View convertView, ViewGroup parent) {
if(convertView==null){
convertView=LayoutInflater.from(ViewPagerActivity.this).inflate(android.R.layout.simple_list_item_1, null);
}
((TextView)convertView.findViewById(android.R.id.text1)).setText(listStations.get(position).get(p));
return convertView;
}
@Override
public long getItemId(int p) {
return p;
}
@Override
public Object getItem(int p) {
// TODO Auto-generated method stub
return listStations.get(position).get(p);
}
@Override
public int getCount() {
return listStations.get(position).size();
}
});
container.addView(listView.get(position));
return listView.get(position);
}
@Override
public void destroyItem(ViewGroup container, int position,
Object object) {
container.removeView(listView.get(position));
}
});
viewPager.setCurrentItem(0);
}
}
myViewPager.setOnPageChangeListener(new OnPageChangeListener() {
@Override
public void onPageSelected(final int arg0) {
View v = mListViews.get(arg0);
final ImageView iv = (ImageView) findViewById(getResources().getIdentifier("imageView"+(arg0+1), "id", "com.android.testPackage"));
iv.setOnClickListener(new View.OnClickListener(){
@Override
public void onClick(View v) {
......//so on