本文地址:http://www.cnblogs.com/wuyudong/p/5918021.html,轉載請註明源地址。 本文開始實現輪播圖廣告系列,這篇文章首先實現讓圖片滑動起來(ViewPager),效果如下: 首先實現佈局 運行項目,出現下麵錯誤: 09-28 09:08:44.032: E ...
本文地址:http://www.cnblogs.com/wuyudong/p/5918021.html,轉載請註明源地址。
本文開始實現輪播圖廣告系列,這篇文章首先實現讓圖片滑動起來(ViewPager),效果如下:
首先實現佈局
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" tools:context=".MainActivity" > <RelativeLayout android:layout_width="match_parent" android:layout_height="160dp" > <android.support.v4.view.ViewPager android:id="@+id/viewpager" android:layout_width="match_parent" android:layout_height="match_parent" /> <LinearLayout android:layout_width="match_parent" android:layout_height="40dp" android:layout_alignParentBottom="true" android:background="#66000000" android:gravity="center_horizontal" android:orientation="vertical" android:padding="5dp" > <TextView android:layout_width="wrap_content" android:layout_height="wrap_content" android:singleLine="true" android:text="和諧社會,和諧社會,和諧社會,和諧社會" android:textColor="@android:color/white" /> <LinearLayout android:id="@+id/ll_point_container" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_marginTop="5dp" android:orientation="horizontal" > </LinearLayout> </LinearLayout> </RelativeLayout> </RelativeLayout>
運行項目,出現下麵錯誤:
09-28 09:08:44.032: E/AndroidRuntime(5794): java.lang.RuntimeException: Unable to start activity ComponentInfo{com.wuyudong.viewpager/com.wuyudong.viewpager.MainActivity}: android.view.InflateException: Binary XML file line #11: Error inflating class android.support.v4.view.ViewPager
ViewPager是個很好很強大的控制項,很多應用用它來實現很酷的效果,但是很多情況下在運行時會遇到Error inflating class android.support.v4.view.ViewPager這個問題,
這個問題的解決方法很簡單:右鍵項目選擇Build Path ->Configure Build Path,然後選擇Order and export 選項.置頂android-support-v4.jar並且將該選項勾上,然後Clean下項目,重新編譯問題就解決了~
接著編寫邏輯代碼:
package com.wuyudong.viewpager; import java.util.ArrayList; import android.os.Bundle; import android.app.Activity; import android.support.v4.view.PagerAdapter; import android.support.v4.view.ViewPager; import android.view.Menu; import android.view.View; import android.view.ViewGroup; import android.widget.BaseAdapter; import android.widget.ImageView; public class MainActivity extends Activity { private ViewPager viewPager; private int[] imageResIds; private ArrayList<ImageView> imageViewList; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); // 初始化佈局 View 視圖 initViews(); // Model 數據 initData(); // Controller 控制器 initAdapter(); } private void initViews() { viewPager = (ViewPager) findViewById(R.id.viewpager); imageResIds = new int[] { R.drawable.a, R.drawable.b, R.drawable.c, R.drawable.d, R.drawable.e }; imageViewList = new ArrayList<ImageView>(); ImageView imageView; for (int i = 0; i < imageResIds.length; i++) { imageView = new ImageView(this); imageView.setBackgroundResource(imageResIds[i]); imageViewList.add(imageView); } } private void initAdapter() { // } private void initData() { // 初始化要顯示的數據 viewPager.setAdapter(new MyAdapter()); } class MyAdapter extends PagerAdapter { @Override public int getCount() { return imageViewList.size(); } // 3、指定復用的判斷邏輯 @Override public boolean isViewFromObject(View view, Object object) { // 當滑到新的條目,又返回來,view是否可以被覆用 return view == object; } // 1、返回要顯示的條目內容,創建條目 @Override public Object instantiateItem(ViewGroup container, int position) { // container:容器:ViewPager // position:當前要顯示的條目的位置 ImageView imageView = imageViewList.get(position); // a、把view對象添加到container中 container.addView(imageView); // b、把view對象返回給框架,適配器 return imageView; // 必須要重寫,否則拋異常 } // 2、銷毀條目 @Override public void destroyItem(ViewGroup container, int position, Object object) { // object 要銷毀的對象 container.removeView((View) object); } } }
運行項目後效果如下: