Android 中 ViewFlipper 的简单实例
来源:互联网 发布:淘宝店铺代运营广告 编辑:程序博客网 时间:2024/05/19 14:35
main.xml
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" tools:context=".Main" > <TextView android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_centerHorizontal="true" android:layout_centerVertical="true" android:text="@string/hello_world" /></RelativeLayout>
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<adImages.length; i++){ ImageView image = new ImageView(context); image.setImageResource(adImages[i]); mViewFlipper.addView(image); } addView(mViewFlipper); // 将图片索引点动态加入 for(int i=0; i<adImages.length; i++){ ImageView image = new ImageView(context); if(i == 0){ image.setImageResource(R.drawable.point_selected); }else{ image.setImageResource(R.drawable.point_normal); } image.setPadding(5, 0, 5, 20); mTipLinearLayout.addView(image); } // 放置在左下角 mTipLinearLayout.setGravity(Gravity.BOTTOM | Gravity.CENTER_HORIZONTAL); addView(mTipLinearLayout); } @Override public boolean onTouchEvent(MotionEvent event) { switch (event.getAction()) { case MotionEvent.ACTION_DOWN: startX = event.getX(); break; case MotionEvent.ACTION_UP: endX = event.getX(); // 先保存上一个点 ImageView lastTipImageView = (ImageView) mTipLinearLayout.getChildAt(currentAdImgIndex); if(currentAdImgIndex > 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; }}
0 0
- Android 中 ViewFlipper 的简单实例
- Android中ViewFlipper的简单使用
- Android中ViewFlipper的使用
- Android中ViewFlipper的使用
- Android中ViewFlipper的使用
- Android中ViewFlipper的使用
- Android中ViewFlipper的使用
- android 组件ViewFlipper实例
- Android ViewFlipper控件实例
- android 中的 ViewFlipper 的简单使用
- Android 控件:ViewFlipper的简单使用
- Android之ViewFlipper的简单使用
- Android之ViewFlipper的简单使用
- Android ViewFlipper 简单应用
- 举例说明Android中ViewFlipper的用法
- Android中ViewFlipper的使用详解
- Android中ViewFlipper的使用详解
- android中ViewFlipper的使用升级
- 听Jake Wharton讲如何成为更优秀的开发者与创建一个成功的开源项目
- Daily mood
- Effective C++ 条款01解读: 视C++为一个语言联邦
- 如何让两个div并排同行显示
- 黑马程序员——Java面向对象(三)之内部类、异常、包等
- Android 中 ViewFlipper 的简单实例
- Hadoop的一个变长long编码剖析
- Light OJ 1040 Donation
- 在Servlet Filter中使用Spring容器
- Determining IP Information for eth0
- android http通信
- How to Get App Name and Version
- bootstrap响应式布局的控制原理
- 多线程(初级篇)