Android 中 ViewFlipper 的簡單一實例

來源:互聯網
上載者:User

Android 中 ViewFlipper 的簡單一實例

main.xml<喎?http://www.bkjia.com/kf/ware/vc/" target="_blank" class="keylink">vcD4NCjxwcmUgY2xhc3M9"brush:java;">

Main.java

package com.wty.mydemoviewflipper;import android.app.Activity;import android.os.Bundle;import com.wty.mydemoviewflipper.wiget.ViewFlipperView;public class Main extends Activity {    protected void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        setContentView(new ViewFlipperView(this));    }}

IAdImages.java

package com.wty.mydemoviewflipper.wiget;import com.wty.mydemoviewflipper.R;/** * 圖片資訊介面 * @author vhreal * */public interface IAdImages {    /**     * 廣告圖片     */    int[] adImages = {            R.drawable.img01, R.drawable.img02, R.drawable.img03, R.drawable.img04, R.drawable.img05,            R.drawable.img06, R.drawable.img07, R.drawable.img08, R.drawable.img09, R.drawable.img10    };}

ViewFlipperView.java

package com.wty.mydemoviewflipper.wiget;import android.content.Context;import android.view.Gravity;import android.view.MotionEvent;import android.view.animation.Animation;import android.view.animation.TranslateAnimation;import android.widget.FrameLayout;import android.widget.ImageView;import android.widget.LinearLayout;import android.widget.ViewFlipper;import com.wty.mydemoviewflipper.R;/** * 這是一個類似於ViewFlipper的Wiget。 * @author vhreal * */public class ViewFlipperView extends FrameLayout implements IAdImages {    private Context context;                           // 調用方的上下文    private int currentAdImgIndex;                     // 當前廣告圖片索引    private Animation left2RightInAnimation;           // 廣告圖片從左至右進入螢幕動畫    private Animation left2RightOutAnimation;          // 廣告圖片從左至右出去螢幕動畫    private Animation right2LeftInAnimation;           // 廣告圖片從右至左進入螢幕動畫    private Animation right2LeftOutAnimation;          // 廣告圖片從右至左出去螢幕動畫    private int animationDuration = 300;               // 動畫花費時間1000毫秒    private ViewFlipper mViewFlipper;                  // 滑動頁面控制項    private LinearLayout mTipLinearLayout;             // 下方點點控制項    private float startX = 0;                          // touch action down 時的x座標    private float endX = 0;                            // touch action up 時的x座標    public ViewFlipperView(Context context) {        super(context);        this.context = context;        setView();    }    /**     * 顯示View     */    private void setView(){        // 初始化        int screenWidth = getResources().getDisplayMetrics().widthPixels;        mViewFlipper = new ViewFlipper(context);        mTipLinearLayout = new LinearLayout(context);        // 初始化動畫        left2RightInAnimation = new TranslateAnimation(-screenWidth, 0, 0, 0);        left2RightInAnimation.setDuration(animationDuration);        left2RightOutAnimation = new TranslateAnimation(0, screenWidth, 0, 0);        left2RightOutAnimation.setDuration(animationDuration);        right2LeftInAnimation = new TranslateAnimation(screenWidth, 0, 0, 0);        right2LeftInAnimation.setDuration(animationDuration);        right2LeftOutAnimation = new TranslateAnimation(0, -screenWidth, 0, 0);        right2LeftOutAnimation.setDuration(animationDuration);        // 將廣告圖片加入ViewFlipper        for(int i=0; i 0 && endX > startX){// 查看前一頁的廣告                mViewFlipper.setInAnimation(left2RightInAnimation);                mViewFlipper.setOutAnimation(left2RightOutAnimation);                mViewFlipper.showPrevious();                currentAdImgIndex--;                if(currentAdImgIndex < 0){                    currentAdImgIndex = 0;                }            }            if(currentAdImgIndex < adImages.length-1 && endX < startX){// 查看後一頁的廣告                mViewFlipper.setInAnimation(right2LeftInAnimation);                mViewFlipper.setOutAnimation(right2LeftOutAnimation);                mViewFlipper.showNext();                currentAdImgIndex++;                if(currentAdImgIndex > adImages.length-1){                    currentAdImgIndex = adImages.length-1;                }            }            // 根據currentAdImgIndex改變底部點的狀態            ImageView currTipImageView = (ImageView) mTipLinearLayout.getChildAt(currentAdImgIndex);            lastTipImageView.setImageResource(R.drawable.point_normal);            currTipImageView.setImageResource(R.drawable.point_selected);            break;              }           return true;    }}

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.