Android自訂控制項5--輪播圖廣告ViewPager基本實現

來源:互聯網
上載者:User

標籤:

本文地址: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);        }    }}

運行項目後效果如下:

Android自訂控制項5--輪播圖廣告ViewPager基本實現

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.