2019.7.2(实训第二天)
实验目标:本次主要目标是创建启动动画结束后,显示三张介绍该app内容的图片
实验步骤:
步骤一:在layout文件下创建三个xml文件,分别为one,two,three,其作用是放置介绍app内容的图片,其中,three.xml文件中还要在添加一个按钮,当用户点击它时,进入主界面,
布局图片如下:
在activity_main.xml文件中(即主界面)进行如下布局,布局图片如下:
步骤二:
经过上面的步骤后,在包 src.com.example中,创建名为adapter的包,下面创建类DepthPageTransformer和类ViewPagerAdapter,其中,类DepthPageTransformer的作用是使用户可以进行滑动介绍app内容的图片的操作。
在类ViewPagerAdapter中,创建四个抽象方法,分别为instantiateItem(ViewGroup container, int position),destroyItem(ViewGroup container, int position, Object object),getCount(),isViewFromObject(View view, Object object)
以上四个方法的作用如下:
getCount():返回当前有效的视图;
instantiateItem(ViewGroup container,int position):该方法的功能是创建指定位置的页面视图。适配器有责任增加即将创建的 View 视图到这里给定的 container 中;
isViewFromObject(View view, Object object):该函数用来判断 instantiateItem() 函数所返回来的 Key 与一个页面视图是否是代表的同一个视图(即它俩是否是对应的,对应的表示同一个 View);
destroyItem(ViewGroup container, int position, Object object):该方法的功能是移除一个给定位置的页面。适配器有责任从容器中删除这个视图,这是为了确保在 finishUpdate(viewGroup) 返回时视图能够被移除;
步骤三:该程序的定位是类似淘宝客户端,故要使用ListView控件,用于每个页面所要显示的多条信息,该控件以列表的形式显示具体数据内容,并且能够根据数据的长度自适应屏幕显示,使用时需对其进行数据适配,步骤二中的类ViewPagerAdapter的作用正是如此。
在类ViewPagerActivity中,定义一个以List为数据源的view变量,ViewPagerAdapter的类变量vpAdapter及控件Button的变量start_btn;
在函数onCreate中,为变量views创建一个ArrayList<View>()对象,用于存放one.xml,two.xml和three.xml三个布局文件,代码如下:
views = new ArrayList<View>();
views.add(inflater.inflate(R.layout.one, null));
views.add(inflater.inflate(R.layout.two, null));
views.add(inflater.inflate(R.layout.three, null));
然后初始化vpAdapter,并将views对象传递给它,再调用DepthPageTransformer()方法,并为start_btn创建一个点击监听器OnClickListener(),代码如下:
vpAdapter=new ViewPagerAdapter(views, this);
vp=(ViewPager) findViewById(R.id.viewpager);
vp.setPageTransformer(true, new DepthPageTransformer());
vp.setAdapter(vpAdapter);
start_btn=(Button) views.get(2).findViewById(R.id.start_btn);
start_btn.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View arg0) {
// TODO Auto-generated method stub
Intent it=new Intent(ViewPagerActivity.this,MainActivity.class);
startActivity(it);
finish();
}
});
}
在监听器下的onClick()函数中有如下述代码段:
Intent it=new Intent(ViewPagerActivity.this,MainActivity.class);
startActivity(it);
finish();
其作用是使用intent将ViewPagerActivity的数据传递给MainActivity,并启动activity。
结果图如上的四个布局图片。