使用ViewFlipper实现图片自动切换,并支持手势滑动切换
2016-03-27 16:59
666 查看
首先来看看项目结构目录:
不好意思,我右开始使用AndroidStudio了 ,开始用不习惯,就特意去搭建了eclipse的开发环境,整了好久,后来发现eclipse还是不如AndroidStudio啊,虽然快捷键那些东西啊用不太习惯,但是相信慢慢都会好的。
首先我们直接看代码吧:
先是activity_main.xml
然后再看看main_activity:
目录结构里还有个关于动画的文件:
left_in.xml
不好意思,我右开始使用AndroidStudio了 ,开始用不习惯,就特意去搭建了eclipse的开发环境,整了好久,后来发现eclipse还是不如AndroidStudio啊,虽然快捷键那些东西啊用不太习惯,但是相信慢慢都会好的。
首先我们直接看代码吧:
先是activity_main.xml
<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:orientation="vertical" android:layout_width="match_parent" android:layout_height="match_parent"> <ViewFlipper android:id="@+id/viewFlipper" android:layout_width="match_parent" android:layout_height="match_parent"></ViewFlipper> </LinearLayout>
然后再看看main_activity:
package com.example.lolli.viewflipper; import android.os.Bundle; import android.support.v7.app.AppCompatActivity; import android.view.MotionEvent; import android.widget.ImageView; import android.widget.ViewFlipper; /** * 使用ViewFlipper自动切换图片并支持手势滑动切换 */ public class MainActivity extends AppCompatActivity { // 定义一个ViewFlipper private ViewFlipper flipper; // 定义一个手指触摸屏幕的x轴坐标 private float startX; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); // 初始化ViewFlipper flipper = (ViewFlipper) findViewById(R.id.viewFlipper); // 给ViewFlipper添加内容。这里添加四个ImageView flipper.addView(getImageView(R.drawable.shi1)); flipper.addView(getImageView(R.drawable.shi2)); flipper.addView(getImageView(R.drawable.shi3)); flipper.addView(getImageView(R.drawable.shi4)); // 设置自动切换时间间隔5秒 flipper.setFlipInterval(5000); // 设置切换动画 flipper.setInAnimation(this, R.anim.left_in); flipper.setOutAnimation(this, R.anim.left_out); // 开始切换 flipper.startFlipping(); } /** * 创建一个ImageView * @param resId * 图片资源Id * @return * ImageView对象 */ private ImageView getImageView(int resId) { ImageView image = new ImageView(this); image.setBackgroundResource(resId); return image; } /** * 屏幕手势 * @param event * @return */ @Override public boolean onTouchEvent(MotionEvent event) { switch (event.getAction()) { // 手指接触屏幕 case MotionEvent.ACTION_DOWN: { startX = event.getX(); // 将手指接触屏幕的X轴的坐标保存下来 break; } // 手指滑动屏幕 case MotionEvent.ACTION_UP: { //向右滑动 if (event.getX() - startX > 100) { flipper.setInAnimation(this, R.anim.right_in); flipper.setOutAnimation(this, R.anim.right_out); flipper.showPrevious(); } //向左滑动 if (startX - event.getX() > 100) { flipper.setInAnimation(this, R.anim.left_in); flipper.setOutAnimation(this, R.anim.left_out); flipper.showNext(); } break; } } return super.onTouchEvent(event); } }
onTouchEvent方法就是实现手势操作的切换的代码了,代码注释也比较详细,不用多说应该能看懂,
在这个方法里面有两个方法 <pre name="code" class="java">flipper.showPrevious(); // 即显示上一页的内容
<pre name="code" class="java">flipper.showNext(); // 显示下一页
目录结构里还有个关于动画的文件:
left_in.xml
<?xml version="1.0" encoding="utf-8"?> <set xmlns:android="http://schemas.android.com/apk/res/android"> <translate android:fromXDelta="100%p" android:toXDelta="0" android:duration="600" /> <alpha android:fromAlpha="0.1" android:toAlpha="1.0" android:duration="600" /> </set>left_out.xml
<?xml version="1.0" encoding="utf-8"?> <set xmlns:android="http://schemas.android.com/apk/res/android"> <translate android:fromXDelta="0" android:toXDelta="-100%p" android:duration="600" /> <alpha android:fromAlpha="1.0" android:toAlpha="0.1" android:duration="600" /> </set>right_in.xml
<?xml version="1.0" encoding="utf-8"?> <set xmlns:android="http://schemas.android.com/apk/res/android"> <translate android:fromXDelta="-100%p" android:toXDelta="0" android:duration="600" /> <alpha android:fromAlpha="0.1" android:toAlpha="1.0" android:duration="600" /> </set>right_out.xml
<?xml version="1.0" encoding="utf-8"?> <set xmlns:android="http://schemas.android.com/apk/res/android"> <translate android:fromXDelta="0" android:toXDelta="100%p" android:duration="600" /> <alpha android:fromAlpha="1.0" android:toAlpha="0.1" android:duration="600" /> </set>
相关文章推荐
- 第五周项目2游戏中的角色类
- 用户代理字符串
- SPFA算法(求最短路径)
- 欢迎使用CSDN-markdown编辑器
- Java条件语句之 switch
- Java_chapter07_多维数组
- 1、网页分页显示
- 页面跳转5中方法
- s5pv210与无线蓝牙模块 HC-06从机通信
- disruptor --神奇的缓存行填充1
- php关于<<<的用法
- 第四周项目5--用递归方法求解(4)
- 轻松入门React和Webpack
- ndk jstring 与cha*相互转换
- 旋转数组的最小数字
- 封装对象类
- iOS开发-UISlider改变图片透明度
- 【Unity3D游戏开发】定制截图截图(三五)
- 手游服务器开发技术详解
- 活动选择