小弟我作为一名入行不到一年的的android开发人员,多多少积累了些开发方面的经验,希望通过这个平台既可以巩固自己的经验,也可以和各位同行、大神们相互交流。
在以后的日子里,我将带领大家从设计一个最简单的app开始,慢慢深化、丰富它的内容,不断介绍自己在开发中遇到的问题和方法。同时欢迎大家和我交流
作为第一讲,就给大家介绍一下客户端开发常用控件:ViewPager+Fragment。ViewPager和Fragement 都是在android 3.0以上版本才可使用的控件,其中Viewpager可以实现多界面的切换,即实现所谓的滑屏效果,Fragment是google专门针对平板开发的视图控件,相对于View而言,Fragment不仅卖相好,而且功能强大,完全适应于大屏幕的保证页面差异的需要,且支持在不同的Activity中使用并处理自己的输入输出事件和生命周期,一个Fragment对象和一个Activity对象的生命周期基本一样,唯一区别在于Fragment在onCreate()之后,会调用onCreateView()方法,来创建只属于当前页面的图像。当然,在使用Fragement作为视图控件时,Activity类需换成FragmentActivity。下面我将以代码的形式,展示滑屏效果的实现。
首先是主Activity类:我们今天要做的就是一个首页和分页的切换
package com.teach.demo;
/**
* @author Arthur Lee
* @time 04/08/2014
* */
import java.util.ArrayList;
import android.os.Bundle;
import android.app.Activity;
import android.support.v4.app.Fragment;
import android.support.v4.app.FragmentActivity;
import android.support.v4.app.FragmentManager;
import android.support.v4.app.FragmentPagerAdapter;
import android.support.v4.view.PagerAdapter;
import android.support.v4.view.ViewPager;
import android.support.v4.view.ViewPager.OnPageChangeListener;
import android.view.Menu;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.LinearLayout;
import android.widget.RadioButton;
//要想使用Fragment,必须继承FragmentActivity
public class MainActivity extends FragmentActivity implements OnPageChangeListener{
ArrayList<Fragment> fragment;
public static ViewPager viewpager;
public static ArrayList<RadioButton> rb ;
LinearLayout lLayout;
//ViewPager的适配器,但为了和Fragment相结合,这里要设置一个继承与FragmentPagerAdapter的自定义适配器
PagerAdapter adapter;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
//一定要先initView(),否则会报空
initView();
initAdapter();
initButton();
}
//初始化页卡
public void initView(){
viewpager = (ViewPager)findViewById(R.id.main_viewpager);
lLayout = (LinearLayout)findViewById(R.id.zone_rbt);
//当前layout区域为隐藏的
lLayout.setVisibility(View.INVISIBLE);
fragment = new ArrayList<Fragment>();
fragment.add(new IndexFragment());//0号
fragment.add(new FirstFragment());//1号
fragment.add(new SecondFragment());//2号
fragment.add(new ThirdFragment());//3号
fragment.add(new FourthFragment());//4号
}
//初始化适配器
public void initAdapter(){
adapter = new MyAdapter(getSupportFragmentManager(),fragment);
viewpager.setAdapter(adapter);
viewpager.setOnPageChangeListener(this);
//默认起始页卡为0号页卡
viewpager.set