viewflipper動畫切換畫面,viewflipper動畫切換

來源:互聯網
上載者:User

viewflipper動畫切換畫面,viewflipper動畫切換

 

整個項目的

package com.example.viewflipper;import android.R.integer;import android.app.Activity;import android.os.Bundle;import android.util.Log;import android.view.GestureDetector.OnDoubleTapListener;import android.view.Menu;import android.view.MenuItem;import android.view.MotionEvent;import android.view.Window;import android.widget.ImageView;import android.widget.ViewFlipper;public class MainActivity extends Activity{    private ViewFlipper flipper;    private float startX;    private int resId[] = { R.drawable.ic_girl2, R.drawable.ic_girl3,            R.drawable.ic_girl4, R.drawable.ic_girl5, };    @Override    protected void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        requestWindowFeature(Window.FEATURE_NO_TITLE);        setContentView(R.layout.main);        flipper = (ViewFlipper) findViewById(R.id.viewflipper);                // 動態匯入的方式為ViewFlipper加入子VIEW        for (int i = 0; i < resId.length; i++) {            flipper.addView(getImageView(resId[i]));        }        // overridePendingTransition(R.anim.left_in, R.anim.left_out);        // flipper.setFlipInterval(3000); flipper.startFlipping();        // 這樣的會實作類別似投影片的效果        // 為viewFlipper去添加動畫效果        // flipper.setInAnimation(this, R.anim.left_in);        // flipper.setOutAnimation(this, R.anim.left_out);        // 設定ViewFlipper的時間間隔        // flipper.setFlipInterval(3000);        // 開始播放        // flipper.startFlipping();    }    private ImageView getImageView(int resId) {        ImageView imageView = new ImageView(this);        // imageView.setImageResource(resId);寬高完全取決於圖片大小        imageView.setBackgroundResource(resId);// 這樣就可以自適應        return imageView;    }    @Override    public boolean onTouchEvent(MotionEvent event) {        // TODO Auto-generated method stub        switch (event.getAction()) {        // 手指落下        case MotionEvent.ACTION_DOWN:        // 剛開始手指落下的座標,獲得橫向座標的x        {              startX = event.getX();            break;        }// 手指移動        case MotionEvent.ACTION_MOVE:        {            Log.i("Main", "調動次數");            break;        }// 手指離開        case MotionEvent.ACTION_UP: {                          if (event.getX() - startX > 100) { // 向右滑動                flipper.setInAnimation(this, R.anim.left_in);                flipper.setOutAnimation(this, R.anim.left_out);                flipper.showPrevious();// 顯示前一頁;            }            if (startX - event.getX() > 100) {// 向左滑動                flipper.setInAnimation(this, R.anim.right_in);                flipper.setOutAnimation(this, R.anim.right_out);                flipper.showNext();// 顯示後一頁;            }            break;        }        }        return super.onTouchEvent(event);    }        }
<?xml version="1.0" encoding="utf-8"?><set xmlns:android="http://schemas.android.com/apk/res/android" >    <translate        android:duration="2000"        android:fromXDelta="-100%p"        android:toXDelta="0" />    </set>
<?xml version="1.0" encoding="utf-8"?><set xmlns:android="http://schemas.android.com/apk/res/android" >    <translate        android:duration="2000"        android:fromXDelta="0"        android:toXDelta="100%p" />  </set>
<?xml version="1.0" encoding="utf-8"?><set xmlns:android="http://schemas.android.com/apk/res/android" >    <translate        android:duration="2000"        android:fromXDelta="100%p"        android:toXDelta="0" />  </set>
<?xml version="1.0" encoding="utf-8"?><set xmlns:android="http://schemas.android.com/apk/res/android" >    <translate        android:duration="2000"        android:fromXDelta="0"        android:toXDelta="-100%p" /></set>
<?xml version="1.0" encoding="utf-8"?><LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"    android:layout_width="match_parent"    android:layout_height="match_parent"    android:orientation="vertical" >    <ViewFlipper        android:id="@+id/viewflipper"        android:layout_width="match_parent"        android:layout_height="match_parent">    </ViewFlipper></LinearLayout>

 

感悟:ViewFlipper貌似可以做成新下載的應用 ,使用者第一次進入的大概描述。。最後再做個button,進入應用。 

1.先在main.xml檔案中添加viewflipper,然後在MainActivity中執行個體化,setContext布局要改掉,通過動態匯入資料來源的方法。

通過一個resId.length的for迴圈匯入。   建立一個ImageView 對象的ImageView getImageView(int resId)函數

裡面

// imageView.setImageResource(resId);寬高完全取決於圖片大小
imageView.setBackgroundResource(resId);// 這樣就可以自適應

要用第二個好點。 然後返回一個對象。

在res/anim下分別建立4個xml 檔案, left_in,left_out,right_in,right_out;

 

例:left_in 即如偏從左邊進來

<translate
android:duration="2000" //期間為2s
android:fromXDelta="-100%p"//
android:toXDelta="0" />

這裡有2種實現方式

(1)overridePendingTransition(R.anim.left_in, R.anim.left_out);

//設定時間間隔 

flipper.setFlipInterval(3000);

flipper.startFlipping();
//這樣的會實作類別似投影片的效果

 


 (2)flipper.setInAnimation(this, R.anim.left_in);
 flipper.setOutAnimation(this, R.anim.left_out);
// 設定ViewFlipper的時間間隔
flipper.setFlipInterval(3000);
// 開始播放
// flipper.startFlipping();

 

然後載入一個boolean onTouchEvent(MotionEvent event)

設定一個全域變數private Float startX;//手指落下時的位置

通過event.getAction()擷取  

case MotionEvent.ACTION_DOWN://手指落下時的

{startX = event.getX();  }-->獲得剛開始的橫座標

 

 

case MotionEvent.ACTION_UP://手指離開

{通過判斷event.getX()-startX>100判斷向右滑動,然後實現動畫,並顯示前一面

startX-event.getX()<100判斷向左滑動,然後實現動畫,並顯示後一面
}

//手勢操作要在up中,若在down中會發生圖層摺疊的問題。 通過Log.i("Main","次數");

可以看出手指稍微一動就會出現很多。

case MotionEvent.ACTION_MOVE://手指滑動時

。。。。。。。。。。。。。。。

OK。

 

聯繫我們

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