افزودن شمارنده صفحه به  ViewPager + سورس

به نام خدا،در جلسه قبل اموزش برنامه نویسی اندروید با  ViewPager آشنا شدیم.در این آموزش با نحوه استایل دادن و نمایش شمارهر پیج آشنا خواهیم شد.

برای شروع کار یک پروژه جدید ایجا می کنیم.ویجت مربوط به ViewPager رو در لایه اصلی یا Activity_main تعریف می کنیم.

  <?xml version="1.0" encoding="utf-8"?>
<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:background="@color/white"
    android:orientation="vertical" >
    <!-- ViewPager -->
    <android.support.v4.view.ViewPager
    android:layout_width="fill_parent" android:layout_height="fill_parent"
    android:id="@+id/viewPager" />
  <!-- Footer -->
  <include layout="@layout/footer"  />
</FrameLayout>

در قسمت بعدی باید برای استایل هامون از شیپ ها (Shape) استفاده کنیم.در پوشه drawable یک فایل xml جدید به نام rounded_cell.xml ایجاد کرده و کدهای زیر رو بهش اضافه می کنیم.

<?xml version="1.0" encoding="utf-8"?>
<inset xmlns:android="http://schemas.android.com/apk/res/android"
    >
    <shape android:shape="rectangle">
        <gradient
    android:startColor="@color/white"
    android:endColor="@color/white"
    android:angle="0"
    />
         <corners android:bottomLeftRadius="10dp"  android:topLeftRadius="10dp" android:topRightRadius="10dp" android:bottomRightRadius="10dp"/>
        <stroke android:color="@color/l_blue" android:width="1dp" />
    </shape>
</inset>

در ادامه برای نمایش دادن شمارنده صفحه نیاز به یک فوتر یا زیرصفحه داریم،یک فایل xml جدید به عنوان لایه اصلی فوتر به نام footer.xml ایجاد می کنیم.

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    android:padding="15dip"
    android:background="@color/d_blue"
    android:layout_gravity="bottom"
    android:orientation="vertical" >
 
    <Button android:layout_height="wrap_content" android:layout_width="wrap_content"
    android:id="@+id/btn1"
    android:layout_centerHorizontal="true"
    android:layout_centerVertical="true"
 
    android:background="@drawable/rounded_celll" />
 
     <Button android:layout_height="wrap_content" android:layout_width="wrap_content"
    android:id="@+id/btn2"
    android:layout_toRightOf="@id/btn1"
    android:layout_marginLeft="5dip"
    android:layout_centerHorizontal="true"
    android:layout_centerVertical="true"
    android:background="@drawable/rounded_celll" />
 
</RelativeLayout>

در قدم بعدی باید برای هر صفحه از view pager دوتا لایه ایجاد کنیم  در پوشه Layout تا بتونیم محتوای مدنظر رو نشون بدیم.

کدهای لایه اول به نام layout_one.xml

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:background="@color/white"
    android:gravity="center|center"
    android:orientation="vertical" >
 
    <TextView
        android:id="@+id/textView1"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="First Layout" />
 
</LinearLayout>

کدهای لایه دوم به نام layout_two.xml

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:background="@color/white"
    android:gravity="center|center"
    android:orientation="vertical" >

    <TextView
        android:id="@+id/textView1"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="Second Layout" />

</LinearLayout>

 

 

سپس برای هرکدام از لایه های layout_one  و  layout_two یک کلاس Java ایجاد میکنم تا بتونیم  در ویجت viewpager نمایش بدیم.

کدهای جاوا  layout_one   در کلاس LayoutOne.java

public class LayoutOne extends Fragment {
 
    public static Fragment newInstance(Context context) {
        LayoutOne f = new LayoutOne();
 
        return f;
    }
 
    @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container,Bundle savedInstanceState) {
        ViewGroup root = (ViewGroup) inflater.inflate(R.layout.layout_one, null);
        return root;
    }
 
}

 کدهای جاوا layout_two در کلاس  LayoutTwo.java

public class LayoutTwo extends Fragment {
 
    public static Fragment newInstance(Context context) {
        LayoutTwo f = new LayoutTwo();
 
        return f;
    }
 
    @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container,Bundle savedInstanceState) {
        ViewGroup root = (ViewGroup) inflater.inflate(R.layout.layout_two, null);
        return root;
    }
 
}

 در ادامه باید یک کلاس جدید به عنوان آداپتر ایجاد کنیم تا بتوینم  viewpager رو مدیریت کنیم (ViewPagerAdapter.java)

کدهای کلاس ViewPagerAdapter.java

public class ViewPagerAdapter extends FragmentPagerAdapter {
    private Context _context;
    public static int totalPage=2;
    public ViewPagerAdapter(Context context, FragmentManager fm) {
        super(fm);
        _context=context;
 
        }
    @Override
    public Fragment getItem(int position) {
        Fragment f = new Fragment();
        switch(position){
        case 0:
            f=LayoutOne.newInstance(_context);
            break;
        case 1:
            f=LayoutTwo.newInstance(_context);
            break;
        }
        return f;
    }
    @Override
    public int getCount() {
        return totalPage;
    }
 
}

و در نهایت  نوشتن کدهای کلاس MainActivity.java در این کلاس  در متد setUpView ویجت view pager و کلاس adapter رو معرفی و سپس به هم متصل می کنم.از رویداد setOnPageChangeListener هم برای باخبر شدن برنامه از تغییر صفحه (page) استفاده می کنیم.(کدهای کامل کلاس MainActivity.java).

public class ViewPagerStyle1Activity extends FragmentActivity {
    private ViewPager _mViewPager;
    private ViewPagerAdapter _adapter;
    private Button _btn1,_btn2;
    /** Called when the activity is first created. */
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
        setUpView();
        setTab();
    }
    private void setUpView(){
     _mViewPager = (ViewPager) findViewById(R.id.viewPager);
     _adapter = new ViewPagerAdapter(getApplicationContext(),getSupportFragmentManager());
     _mViewPager.setAdapter(_adapter);
     _mViewPager.setCurrentItem(0);
     initButton();
    }
    private void setTab(){
            _mViewPager.setOnPageChangeListener(new OnPageChangeListener(){
 
                        @Override
                        public void onPageScrollStateChanged(int position) {}
                        @Override
                        public void onPageScrolled(int arg0, float arg1, int arg2) {}
                        @Override
                        public void onPageSelected(int position) {
                            // TODO Auto-generated method stub
                            btnAction(position);
                        }
 
                    });
 
    }
    private void btnAction(int action){
        switch(action){
          case 0: setButton(_btn1,"1",40,40); setButton(_btn2,"",20,20);break;
 
          case 1: setButton(_btn2,"2",40,40); setButton(_btn1,"",20,20); break;
        }
    }
    private void initButton(){
        _btn1=(Button)findViewById(R.id.btn1);
        _btn2=(Button)findViewById(R.id.btn2);
        setButton(_btn1,"1",40,40);
        setButton(_btn2,"",20,20);
    }
    private void setButton(Button btn,String text,int h, int w){
        btn.setWidth(w);
        btn.setHeight(h);
        btn.setText(text);
    }
}

 

سورس آماده این آموزش را از فایل ضمیمه دانلود کنید.


فایلهای ضمیمه
توجه! برای مشاهده فایلهای ضمیمه با ید وارد سایت شوید

نظرات شما نظر جدید
سایر مقالات این دسته