因为每个页面都有对应的Activity,所以在此就不展示所有的代码了,只展示关键的代码:
package com.example.android08_zhangkai;
import android.app.Activity;
import android.app.LocalActivityManager;
import android.content.Context;
import android.content.Intent;
import android.os.Bundle;
import android.support.annotation.Nullable;
import android.support.v4.view.PagerAdapter;
import android.support.v4.view.ViewPager;
import android.support.v7.app.AppCompatActivity;
import android.view.View;
import android.view.ViewGroup;
import android.view.Window;
import java.util.ArrayList;
import java.util.List;
/**
* Created by Administrator on 2017/6/12 0012.
*/
public class ViewPagerActivity2 extends AppCompatActivity {
private List<View> views=new ArrayList<>();
private LocalActivityManager manager;
private ViewPager vp_view_page_image;
@Override
protected void onCreate(@Nullable Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_view_pager);
vp_view_page_image = (ViewPager) findViewById(R.id.vp_view_page_image);
manager = new LocalActivityManager(this,true);
manager.dispatchCreate(savedInstanceState);//必须写上这一行代码,不然会报错
Intent intentItem = new Intent(getApplicationContext(),ItemActivity.class);//这个类的第一个参数是上下文,第二个参数是你需要转化的Activity
views.add(manager.startActivity("ItemActivity",intentItem).getDecorView());//将Activity转化为View然后放入View集合
Intent intentExpandable =new Intent(getApplicationContext(),ExpandableActivity.class);
views.add(manager.startActivity("ExpandableActivity",intentExpandable).getDecorView());
vp_view_page_image.setAdapter(new MyAdapter());
}
class MyAdapter extends PagerAdapter {
@Override
public int getCount() {
return views.size();
}
@Override
public boolean isViewFromObject(View view, Object object) {
return view==object;
}
@Override
public Object instantiateItem(ViewGroup container, int position) {
View v=views.get(position);
container.addView(v);
return v;
}
@Override
public void destroyItem(ViewGroup container, int position, Object object) {
View v=views.get(position);
container.removeView(v);
}
}
}
另外再提一下:
假如我们只要将布局文件转化为View,不需要将Activity转化为View,可以使用以下方法:
View iv=getLayoutInflater().inflate(R.layout.relativelayout,null);