ViewPager 打造 图片幻灯切换

来源:互联网 发布:宁波seo入门教程 编辑:程序博客网 时间:2024/05/16 09:09
package com.example.epcrm.fragment;import java.util.LinkedList;import java.util.List;import com.example.epcrm.R;import com.example.epcrm.activity.SplashActivity;import com.example.epcrm.models.tb_product;import com.example.epcrm.util.Utils;import com.lidroid.xutils.ViewUtils;import com.lidroid.xutils.view.annotation.ViewInject;import com.lidroid.xutils.view.annotation.event.OnClick;import com.nineoldandroids.animation.ObjectAnimator;import android.R.integer;import android.content.Intent;import android.os.AsyncTask;import android.os.Bundle;import android.support.v4.app.Fragment;import android.support.v4.app.FragmentManager;import android.support.v4.app.FragmentStatePagerAdapter;import android.support.v4.view.ViewPager;import android.support.v4.view.ViewPager.OnPageChangeListener;import android.view.LayoutInflater;import android.view.View;import android.view.ViewGroup;import android.widget.ImageView;import android.widget.ScrollView;import android.widget.TextView;import android.widget.Toast;import android.widget.LinearLayout.LayoutParams;import com.handmark.pulltorefresh.library.*;import com.handmark.pulltorefresh.library.PullToRefreshBase.OnRefreshListener;public class Fragment_Home extends Fragment {private View view;@ViewInject(R.id.viewpager_home_banner)private ViewPager mPager;private int[] mBanner = new int[] { R.drawable.img_home_banner1,R.drawable.img_home_banner2, R.drawable.img_home_banner3,R.drawable.img_home_banner4 };private ImageView mImgCover;private int mLastPos;// 记录上一次ViewPager的位置private ImageView mImageView;private boolean isDragging;// 是否被拖拽@Overridepublic View onCreateView(LayoutInflater inflater, ViewGroup container,Bundle savedInstanceState) {// TODO Auto-generated method stubview = inflater.inflate(R.layout.fragment_home, container, false);ViewUtils.inject(this, view);mImgCover = (ImageView)view.findViewById(R.id.img_cover);mImageView = (ImageView)view.findViewById(R.id.img_indicator01);initView();autoScroll();return view;}void initView() {mPager = (ViewPager) view.findViewById(R.id.viewpager_home_banner);FragmentManager fm = getChildFragmentManager();MyPagerAdapter adapter = new MyPagerAdapter(fm);mPager.setAdapter(adapter);mPager.setCurrentItem(1000);mPager.setOnPageChangeListener(new MyPagerListener());}/** * 自动滚动 */private void autoScroll() {mPager.postDelayed(new Runnable() {@Overridepublic void run() {if (!isDragging) {// 若用户没有拖拽,则自动滚动mPager.setCurrentItem(mPager.getCurrentItem() + 1);}mPager.postDelayed(this, 3000);}}, 3000);}class MyPagerAdapter extends FragmentStatePagerAdapter {public MyPagerAdapter(FragmentManager fm) {super(fm);}@Overridepublic Fragment getItem(int position) {BannerItemFragment fragment = new BannerItemFragment();fragment.setResId(mBanner[position % mBanner.length]);// fragment.setGoodsInfo(mInfos[position % mBanner.length]);return fragment;}@Overridepublic int getCount() {return 10000;}}class MyPagerListener implements OnPageChangeListener {@Overridepublic void onPageScrolled(int position, float positionOffset,int positionOffsetPixels) {}@Overridepublic void onPageSelected(int position) {int width = mImgCover.getWidth();LayoutParams layoutParams = (LayoutParams) mImageView.getLayoutParams();int rightMargin = layoutParams.rightMargin;int endPos = (width + rightMargin) * (position % 4);int startPos = 0;if (mLastPos < position) {// 图片向右移动startPos = (width + rightMargin) * (position % 4 - 1);} else {// 图片向左移动startPos = (width + rightMargin) * (position % 4 + 1);}ObjectAnimator.ofFloat(mImgCover, "translationX", startPos, endPos).setDuration(300).start();mLastPos = position;}@Overridepublic void onPageScrollStateChanged(int arg0) {// TODO Auto-generated method stub}}}
前台页面:
<?xml version="1.0" encoding="utf-8"?><RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"    android:layout_width="match_parent"    android:layout_height="match_parent" >    <FrameLayout        android:layout_width="fill_parent"        android:layout_height="130dp" >        <android.support.v4.view.ViewPager            android:id="@+id/viewpager_home_banner"            android:layout_width="fill_parent"            android:layout_height="fill_parent" >        </android.support.v4.view.ViewPager>        <FrameLayout            android:layout_width="wrap_content"            android:layout_height="wrap_content"            android:layout_gravity="center_horizontal|bottom" >            <LinearLayout                android:layout_width="wrap_content"                android:layout_height="wrap_content"                android:layout_gravity="center_horizontal" >                <ImageView                    android:id="@+id/img_indicator01"                    android:layout_width="wrap_content"                    android:layout_height="wrap_content"                    android:layout_marginBottom="5dp"                    android:layout_marginRight="5dp"                    android:src="@drawable/jshop_banner_point_inactive" />                <ImageView                    android:id="@+id/img_indicator02"                    android:layout_width="wrap_content"                    android:layout_height="wrap_content"                    android:layout_marginBottom="5dp"                    android:layout_marginRight="5dp"                    android:src="@drawable/jshop_banner_point_inactive" />                <ImageView                    android:id="@+id/img_indicator03"                    android:layout_width="wrap_content"                    android:layout_height="wrap_content"                    android:layout_marginBottom="5dp"                    android:layout_marginRight="5dp"                    android:src="@drawable/jshop_banner_point_inactive" />                <ImageView                    android:id="@+id/img_indicator04"                    android:layout_width="wrap_content"                    android:layout_height="wrap_content"                    android:layout_marginBottom="5dp"                    android:layout_marginRight="5dp"                    android:src="@drawable/jshop_banner_point_inactive" />            </LinearLayout>            <ImageView                android:layout_width="wrap_content"                android:layout_height="wrap_content"                android:layout_marginBottom="5dp"                android:layout_marginRight="5dp"                android:id="@+id/img_cover"                android:src="@drawable/jshop_banner_point_active" />        </FrameLayout>    </FrameLayout>    </RelativeLayout>

用到的BannerItemFragment类

package com.example.epcrm.fragment;import android.content.Intent;import android.os.Bundle;import android.support.v4.app.Fragment;import android.view.LayoutInflater;import android.view.View;import android.view.ViewGroup;import android.view.View.OnClickListener;import android.widget.ImageView;import com.example.epcrm.R;import com.example.epcrm.models.tb_product;/** * A simple {@link android.support.v4.app.Fragment} subclass. *  */public class BannerItemFragment extends Fragment implements OnClickListener {private int position;private ImageView mImageView;private int imageRes;private tb_product goodsInfo;@Overridepublic View onCreateView(LayoutInflater inflater, ViewGroup container,Bundle savedInstanceState) {View inflate = inflater.inflate(R.layout.fragment_banner_item,container, false);mImageView = (ImageView) inflate.findViewById(R.id.imgView1);mImageView.setImageResource(imageRes);inflate.setOnClickListener(this);return inflate;}public void setResId(int imageRes) {this.imageRes = imageRes;}@Overridepublic void onClick(View v) {}public void setGoodsInfo(tb_product goodsInfo) {this.goodsInfo = goodsInfo;}}


0 0