Android 使用ViewPager+Activity(转化为View)实现页面滑动

因为每个页面都有对应的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);
发布了52 篇原创文章 · 获赞 47 · 访问量 14万+

猜你喜欢

转载自blog.csdn.net/zhangkaidsy/article/details/73289822
今日推荐