ViewPager 基本方式加载view

1.新建view_pager.xml

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    >

    <android.support.v4.view.ViewPager
        android:id="@+id/viewpager"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_gravity="center" />
</RelativeLayout>

2.新建ViewPagerAdapter类,用于ViewPager布局的实例加载适配器;

public class ViewPagerAdapter extends PagerAdapter{
    private Context context;
    private List<View> viewlist;
    public ViewPagerAdapter( List<View> views,Context context) {
        this.context = context;
        this.views = views;

    }
//重新4个方法
//getCount()返回List<View>的size:
    @Override
    public int getCount() {
        // TODO Auto-generated method stub
        return views.size();
    }
//instantiateItem():将当前view添加到ViewGroup中,并返回当前View
    @Override
    public Object instantiateItem(ViewGroup container, int position) {
        container.addView(views.get(position));
        return views.get(position);
    }
//destroyItem():删除当前的View;  
  @Override
    public void destroyItem(ViewGroup container, int position, Object object) {
        container.removeView(views.get(position));
    }
//isViewFromObject判断当前的View 和 我们想要的Object(值为View) 是否一样;返回 trun / false;
    @Override
    public boolean isViewFromObject(View arg0, Object arg1) {
        // TODO Auto-generated method stub
        return (arg0 == arg1);
    }

}

3.创建Guide类,获取View对象,再将view对象放在List<view>中,然后用List<view>放在适配器ViewPagerAdapter中,最后获取ViewPager并为其

public class Guide extends Activity{

        private List<View> listView;
        private ViewPager viewPager;
        private ViewPagerAdapter vpAdapter;
        @Override
        protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            requestWindowFeature(Window.FEATURE_NO_TITLE);
            setContentView(R.layout.view_pager);
            init();
        }
        private void init() {

            LayoutInflater inflater = LayoutInflater.from(this);
            listView = new ArrayList<View>();
            //获取View对象
            View view1 = inflater.inflate(R.layout.view_pager_img1, null);
            View view2 = inflater.inflate(R.layout.view_pager_img2, null);
            View view3 = inflater.inflate(R.layout.view_pager_img3, null);
            View view4 = inflater.inflate(R.layout.view_pager_img4, null);
            //view对象放在List<view>中
            listView.add(view1);
            listView.add(view2);
            listView.add(view3);
            listView.add(view4);
            //List<view>放在适配器ViewPagerAdapter中
            vpAdapter = new ViewPagerAdapter(listView, this);
            //获取ViewPage,设置适配器;
            viewPager = (ViewPager) findViewById(R.id.viewpager);
            viewPager.setAdapter(vpAdapter);

        }

    }

4. 创建view_pager_img.xml;

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    >
<ImageView
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:background="@drawable/guide_background2"/>
</LinearLayout>
时间: 2024-12-17 17:02:16

ViewPager 基本方式加载view的相关文章

Android中ViewPager+Fragment懒加载问题解决方案

转载请注明出处:http://blog.csdn.net/linglongxin24/article/details/53205878 本文出自[DylanAndroid的博客] Android中ViewPager+Fragment懒加载问题解决方案 在Android中我们经常会用到ViewPager+Fragment组合.然而,有一个很让人头疼的问题就是,我们去加载数据的时候 由于ViewPager的内部机制所限制,所以它会默认至少预加载一个.这让人很郁闷,所以,我就想到要封装一个Fragme

android Viewpager取消预加载及Fragment方法的学习

1.在使用ViewPager嵌套Fragment的时候,由于VIewPager的几个Adapter的设置来说,都会有一定的预加载.通过设置setOffscreenPageLimit(int number) 来设置预加载的熟练,在V4包中,默认的预加载是1,即使你设置为0,也是不起作用的,设置的只能是大于1才会有效果的.我们需要通过更改V4包中的默认属性才可以. 更改过的V4 包下载地址: 2.限制预加载,会出现滑动过程中卡顿现象.其实Fragment中防止预加载主要是防止数据的预加载,Fragm

post方式加载iframe

最近开发遇到一个问题,数据库某个字段里面存着整个html代码.需求是预览的时候需要可视化,将html直接展示到页面. 那么问题来了: 1.需要展示的html中的样式会与外面的页面冲突. 2.直接加载数据中的html,可能存着一些脚本错误. 首先想到的解决办法是用iframe,但是iframe是直接加载某个页面. 想到的方法是: iframe加载一个空页面,将HTML代码直接填充到空页面,然后显示. 这种方式可以成功.然而因为某些原因html代码不能再次从数据库读取,html代码参数需要传递,然而

能否使用require(&#39;.json&#39;)的方式加载大量JSON文件?

Node.js中推崇非阻塞I/O,但是require一个模块时却是同步调用的,这会带来性能上的开销,但并不是每次require都很耗时,因为在require成功之后会缓存起来,在此加载时直接从缓存读取,并没有额外开销. 当通过.json的方式加载文件时,固然方便,但大量使用时会导致这些数据被缓存.大量数据会驻留在内存中,导致GC频繁和内存泄漏. 摘自:<技术之瞳> 能否使用require('.json')的方式加载大量JSON文件?

android 动态加载View

在布局中动态加载View 1.主布局的funddatail.xml <?xml version="1.0" encoding="UTF-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height=&q

页面第一次加载实现图片淡入方式加载

页面第一次加载实现图片淡入方式加载:图片以淡入方式加载总是让人感觉有一种动态的感觉,可以让用户体验更好,下面就简单介绍一下如何实现此效果.当页面加载的时候,让加载好的图片先隐藏,然后再使用fadeIn()函数实现图片的淡入效果,参考代码如下: <script type="text/javascript"> $("#load img").load(function() { $(this).hide(); $(this).fadeIn("5000&

Unity两中方式加载图片

看到草羊发的图片,也是真懒. 想起来当时写天气预报现在都忘干净了,好记性不如烂笔头,还是应该多记.自己打下来好了 using System; using System.Collections; using System.Collections.Generic; using UnityEngine; using UnityEngine.UI; using System.IO; public class readPictures : MonoBehaviour { private Image ima

java基础-jdbc——三种方式加载驱动建立连接

1 String url = "jdbc:mysql://localhost:3306/student?Unicode=true&characterEncoding=utf-8"; 2 Properties info = new Properties(); 3 info.put("user", "canon"); 4 info.put("password", "123456"); 5 6 /** 7

动态链接库知识点总结之三(如何以显示的方式加载DLL)

总结一下如何显示加载方式加载DLL, 首先,我们新建一个win32项目,选择dll,空项目,再添加一个源文件,一个模块定义文件(.def),具体如下图.(详细方法已经在前两篇文章中讲述,如有不懂,打开链接查看) (1)    新建项目,名称为:dll,添加一个源文件(.cpp),编代码,编译文件 . (2)    为项目添加一个模块定义文件(上一篇文章中详细介绍)(先新建一个文本,再改属性名),编辑代码,如下图 (3)    新建一个DLL测试应用程序(基于对话框的),项目名字:TestDLL,