Android实现广告图片轮播效果

2019-12-10 19:02:49王振洲
这篇文章主要为大家详细介绍了Android实现广告图片轮播效果的相关资料,具有一定的参考价值,感兴趣的小伙伴们可以参考一下  

本文实例介绍了Android广告轮播图效果实现方法,,具体内容如下

首先看下一下布局文件:

<RelativeLayout xmlns:android="http://www.easck.com/apk/res/android"
  xmlns:tools="http://www.easck.com/tools"
  android:layout_width="match_parent"
  android:layout_height="match_parent"
  tools:context=".MainActivity" >

  <!-- 广告条的使用 -->

  <com.xuliugen.viewpager.MyViewPagerTransformerAnim
    android:id="@+id/viewpager"
    android:layout_width="match_parent"
    android:layout_height="200dp" />

  <!-- 广告条下边的文字 -->

  <LinearLayout
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:layout_alignBottom="@id/viewpager"
    android:background="#33000000"
    android:orientation="vertical" >

    <TextView
      android:id="@+id/image_desc"
      android:layout_width="match_parent"
      android:layout_height="wrap_content"
      android:gravity="center"
      android:text="@string/app_name"
      android:textColor="@android:color/white"
      android:textSize="16sp" />

    <LinearLayout
      android:id="@+id/point_group"
      android:layout_width="wrap_content"
      android:layout_height="wrap_content"
      android:layout_gravity="center_horizontal"
      android:layout_marginBottom="5dp"
      android:orientation="horizontal" >
    </LinearLayout>
  </LinearLayout>

</RelativeLayout>

Android实现广告图片轮播效果

效果很简单,从布局文件中我们看到使用了一个自定义的ViewPager动画,代码如下:

package com.xuliugen.viewpager;

import java.util.HashMap;
import java.util.Map;

import android.content.Context;
import android.support.v4.view.ViewPager;
import android.util.AttributeSet;
import android.view.View;

import com.nineoldandroids.view.ViewHelper;

/*
 * 自定义viewpager实现动画切换效果:
 * 
 * 1、需要拿到当前切换的两个view
 * 
 * 2、一个动画的梯度值
 */
public class MyViewPagerTransformerAnim extends ViewPager {

  private View mLeft;
  private View mRight;

  private float mTrans;
  private float mScale;

  private static final float MIN_SCALE = 0.6f;
  private Map<Integer, View> mChildren = new HashMap<Integer, View>();

  /*
   * 要有两个构造方法
   */
  public MyViewPagerTransformerAnim(Context context, AttributeSet attrs) {
    super(context, attrs);
  }

  public MyViewPagerTransformerAnim(Context context) {
    super(context);
  }

  /*
   * 设置put的方法
   */
  public void setViewForPosition(View view, int position) {
    mChildren.put(position, view);
  }

  /*
   * remove的方法
   */
  public void removeViewFromPosition(Integer position) {
    mChildren.remove(position);
  }

  /**
   * 重写的方法
   */
  @Override
  protected void onPageScrolled(int position, float offset, int offsetPixels) {

    // Log.e("TAG", "position =" + position + ",offset = " + offset);
    mLeft = mChildren.get(position);
    mRight = mChildren.get(position + 1);

    animStack(mLeft, mRight, offset, offsetPixels);// 创建动画效果

    super.onPageScrolled(position, offset, offsetPixels);
  }

  private void animStack(View left, View right, float offset, int offsetPixels) {
    if (right != null) {

      // 从0-1页,offset:0`1
      mScale = (1 - MIN_SCALE) * offset + MIN_SCALE;

      mTrans = -getWidth() - getPageMargin() + offsetPixels;

      ViewHelper.setScaleX(right, mScale);
      ViewHelper.setScaleY(right, mScale);

      ViewHelper.setTranslationX(right, mTrans);
    }
    if (left != null) {
      left.bringToFront();
    }
  }
}