使用ViewFlipper实现屏幕切换动画效果

来源:互联网 发布:约瑟夫问题c语言 编辑:程序博客网 时间:2024/05/01 21:48
</pre><pre name="code" class="java"><span style="font-size:18px;"></span>
<span style="font-size:18px;"></span>
<span style="font-size:18px;">第一步:创建动作文件,放在res下的创建的anim文件夹下:这个例子在我的ADT中全是错误,搞不懂。</span>
<set xmls:android="http://schemas.android.com/apk/res/android"><translate    android:duration="2000"    android:fromXDelta="100%p"    android:toXDelta="0" /><alpha    android:fromAlpha="0.5"    android:toAlpha="1"    android:duration="2000"    /></set>


第二步:创建活动的布局文件:里面添加了一个ViewFlipper控件。

<?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:layout_width="match_parent"    android:layout_height="match_parent"android:id="@+id/flipper"    >    </ViewFlipper>    </LinearLayout>
<p>第三步:创建活动<span style="font-family:Arial;">MainActivity</span><span style="font-family:宋体;">。</span></p><pre name="code" class="java">package com.example.viewflipper;import android.os.Bundle;import android.app.Activity;import android.view.Menu;import android.widget.ImageView;import android.widget.ViewFlipper;public class MainActivity extends Activity {private ViewFlipper flipper;private int[] resId = {R.drawable.ic_launcher,R.drawable.ic_launcher,R.drawable.ic_launcher,R.drawable.ic_launcher};    @Override    protected void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        setContentView(R.layout.activity_main);                flipper = (ViewFlipper) findViewById(R.id.flipper);        // 动态导入的方式为ViewFlipper加入子View。        for(int i=0; i<resId.length; i++){        flipper.addView(getImageView(resId[i]));        }        // 设置动画效果:        flipper.setInAnimation(this,R.anim.left_in);        flipper.setOutAnimation(this, R.anim.left_out);        // 设置ViewFlipper视图切换的时间间隔        flipper.setFlipInterval(3000);// 3秒        // 开始播放        flipper.startFlipping();            }          private ImageView getImageView(int resId){    ImageView image = new ImageView(this);    //image.setImageResource(resId);这样不能设置图片宽高    image.setBackgroundResource(resId);// 这样是铺满屏幕    return image;    }}

效果图:就是添加的这几张图片一个一个的切换,呵呵。

4. (知识扩展)支持手势滑动的ViewFlipper

修改Activity文件MainActivity

package com.example.viewflipper;import android.os.Bundle;import android.app.Activity;import android.view.Menu;import android.view.MotionEvent;import android.widget.ImageView;import android.widget.ViewFlipper;public class MainActivity extends Activity {private ViewFlipper flipper;private int[] resId = {R.drawable.ic_launcher,R.drawable.ic_launcher,R.drawable.ic_launcher,R.drawable.ic_launcher};    private float startX;// x轴坐标    @Override    protected void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        setContentView(R.layout.activity_main);                flipper = (ViewFlipper) findViewById(R.id.flipper);        // 动态导入的方式为ViewFlipper加入子View。        for(int i=0; i<resId.length; i++){        flipper.addView(getImageView(resId[i]));        }        // 设置动画效果:        //        flipper.setInAnimation(this,R.anim.left_in);// 手动滑动时取消这四行   //     flipper.setOutAnimation(this, R.anim.left_out);        // 设置ViewFlipper视图切换的时间间隔  //      flipper.setFlipInterval(3000);// 3秒        // 开始播放 //       flipper.startFlipping();            }          // 加入手势滑动事件的处理    @Override    public boolean onTouchEvent(MotionEvent event) {    // TODO Auto-generated method stub    switch(event){    // 手指点到屏幕上    case MotionEvent.ACTION_DOWN:    startX = event.getX();    break;    // 手指滑动    case MotionEvent.ACTION_MOVE:    // 向右滑动看前一页    if(event.getX() - startX > 100){// 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;    // 手指抬起    case MotionEvent.ACTION_UP:    // 没有效果    break;    }        return super.onTouchEvent(event);    }        private ImageView getImageView(int resId){    ImageView image = new ImageView(this);    //image.setImageResource(resId);这样不能设置图片宽高    image.setBackgroundResource(resId);// 这样是铺满屏幕    return image;    }}


 



 


0 0
原创粉丝点击