天天看點

Android自定義圖檔輪播控件Carousel特性PS

Carousel

http://www.yanwushu.com/post/53.html

一個圖檔輪播控件,效果如下

Android自定義圖檔輪播控件Carousel特性PS

特性

  • 此元件繼承自linearLayout,意味着可以随意嵌入到任何布局檔案中
  • 輪播的幀數(元件下方點數量)随着提供資料量動态指定
  • 使用startup方法啟動此元件,使用shutdown方法停止此元件的輪播動作
  • 使用回調函數指定點選之後的處理邏輯
  • 包括一個使用案例,代碼如下:

activity布局檔案

<?xml version="1.0" encoding="utf-8"?>
<ScrollView xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:scrollbars="none">

    <LinearLayout
        android:layout_width="fill_parent"
        android:layout_height="fill_parent"
        android:background="#FFFFFF"
        android:orientation="vertical">

        <pzh.com.carousel.Carousel
            android:id="@+id/crs"
            android:layout_width="fill_parent"
            android:layout_height="wrap_content" />
    </LinearLayout>
</ScrollView>
           

activity代碼

package pzh.com.carousel;
import android.app.Activity;
import android.os.Bundle;
import android.widget.Toast;
import java.util.ArrayList;
import java.util.List;

public class MainActivity extends Activity {

    private Carousel c;
    private List<CarouselData> data;

    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        initControl();
        //開啟輪播控件
        data = new ArrayList<CarouselData>();
        String[] urls = new String[]{
                "http://7xlwwd.com1.z0.glb.clouddn.com/yanwushu1.jpg",
                "http://7xlwwd.com1.z0.glb.clouddn.com/yanwushu2.jpg",
                "http://7xlwwd.com1.z0.glb.clouddn.com/yanwushu3.jpg"
        };
        for (int i = ; i < urls.length; i++) {
            CarouselData d = new CarouselData();
            d.setImage(urls[i]);
            d.setTitle("測試tile" + i);
            d.setId(i);
            data.add(d);
        }
        c.startup(data);
    }

    private void initControl() {
        c = (Carousel) findViewById(R.id.crs);
        c.setCallback(new Carousel.ClickCallback() {
            @Override
            public void perform(int id, int position) {
                Toast.makeText(MainActivity.this, "id:" + id + "position" + position + "title:" + data.get(position).getTitle(), Toast.LENGTH_LONG).show();
            }
        });
    }

    @Override
    protected void onStop() {
        super.onStop();
        c.shutdown();
    }
}
           

PS

  1. 環境為android studio
  2. 使用

    image-loader:1.8.6

    實作圖檔下載下傳
  3. 代碼位址