viewpager一屏多个滑动效果
来源:互联网 发布:mac五笔拼音输入法 编辑:程序博客网 时间:2024/06/14 11:21
代码:(内存太小貌似容易溢出,这块没处理,有处理过得大家可以发出来共享下---我的手机跑了20张貌似没啥问题--老中兴)
package com.qiao.viewpager;import java.io.InputStream;import java.util.ArrayList;import java.util.List;import android.content.Context;import android.graphics.Bitmap;import android.graphics.BitmapFactory;import android.graphics.Canvas;import android.graphics.Matrix;import android.os.Bundle;import android.os.Handler;import android.support.v4.app.Fragment;import android.support.v4.app.FragmentActivity;import android.support.v4.app.FragmentManager;import android.support.v4.app.FragmentStatePagerAdapter;import android.view.MotionEvent;import android.view.View;import android.view.View.OnTouchListener;import android.view.Window;import android.widget.ImageView;import android.widget.ImageView.ScaleType;import android.widget.RelativeLayout;import android.widget.TextView;import com.qiao.view.ViewPagerCompat;import com.qiao.view.ZoomOutPageTransformer;import com.qiao.view.ViewPagerCompat.OnPageChangeListener;/** * ViewPager 一屏多个 3D滑动效果。。。。。。 * @author 有点凉了 * QQ群:123869487 * 求基友共同进步,求大神入群指点 * */ public class MainActivity extends FragmentActivity{ private static int TOTAL_COUNT = 3;private RelativeLayout viewPagerContainer;int oneTouch = 0 ;int TwoTouch = 0;int ThrTouch = 0;private ViewPagerCompat mViewPager;private int[] mImgIds = new int[] { R.drawable.image1,R.drawable.image2, R.drawable.image3 ,//R.drawable.image1 ,//R.drawable.image3,//R.drawable.guide_image1,//R.drawable.guide_image2,//R.drawable.guide_image3,//R.drawable.guide_image5,//R.drawable.image1,//R.drawable.image1,//R.drawable.image2, //R.drawable.image3 ,//R.drawable.image1 ,//R.drawable.image3,//R.drawable.guide_image1,//R.drawable.guide_image2,//R.drawable.guide_image3,//R.drawable.guide_image5,//R.drawable.image1};private List<ImageView> mImageViews = new ArrayList<ImageView>();private int current=0;private MyPagerAdapter2 myPagerAdapter;private int[] locationOne = null;private int[] locationTwo = null;private List<Fragment> listFragment = new ArrayList<Fragment>();private List<String> listMessage = new ArrayList<String>();public static MainActivity mActivity;private Handler handler = new Handler(){public void handleMessage(android.os.Message msg) {switch (msg.what) {case 0:break;default:break;}};};@Overrideprotected void onCreate(Bundle savedInstanceState){super.onCreate(savedInstanceState);requestWindowFeature(Window.FEATURE_NO_TITLE);setContentView(R.layout.activity_main);mActivity = this;listMessage.add("拉布");listMessage.add("吉娃娃");listMessage.add("大葱");//listMessage.add("大葱1");//listMessage.add("大葱2");//listMessage.add("大葱11");//listMessage.add("大葱22");//listMessage.add("大葱33");//listMessage.add("大葱44");//listMessage.add("大葱55");//listMessage.add("拉布");//listMessage.add("吉娃娃");//listMessage.add("大葱");//listMessage.add("大葱1");//listMessage.add("大葱2");//listMessage.add("大葱11");//listMessage.add("大葱22");//listMessage.add("大葱33");//listMessage.add("大葱44");//listMessage.add("大葱55");initData();viewPagerContainer = (RelativeLayout) findViewById(R.id.pager_layout);mViewPager = (ViewPagerCompat) findViewById(R.id.id_viewpager);locationOne = new int[2]; locationTwo = new int[2]; mViewPager.setPageTransformer(true, new ZoomOutPageTransformer());//mViewPager.setPageTransformer(true, new DepthPageTransformer());//mViewPager.setPageTransformer(true, new RotateDownPageTransformer());myPagerAdapter = new MyPagerAdapter2(getSupportFragmentManager());mViewPager.setAdapter(myPagerAdapter);//mViewPager.setOffscreenPageLimit(TOTAL_COUNT);mViewPager.setOffscreenPageLimit(20);mViewPager.setPageMargin(10);viewPagerContainer.setOnTouchListener(new OnTouchListener() { @Override public boolean onTouch(View v, MotionEvent event) { // dispatch the events to the ViewPager, to solve the problem that we can swipe only the middle view. /*if (event.getAction() == MotionEvent.ACTION_DOWN) {v.getLocationInWindow(locationTwo);int singPostion = locationTwo[0];if (singPostion>0&&singPostion<oneTouch) {int pos = mViewPager.getCurrentItem();if (pos==0) {}else {mViewPager.setCurrentItem(mViewPager.getCurrentItem()-1);}}}*/ return mViewPager.dispatchTouchEvent(event); } });mViewPager.setOnPageChangeListener(new OnPageChangeListener() {@Overridepublic void onPageSelected(int position) {myPagerAdapter.notifyDataSetChanged();View view = mViewPager.getChildAt(position);ImageView img = (ImageView) view.findViewById(R.id.imageView_show);TextView textView_show = (TextView) view.findViewById(R.id.textView_show);TextView textView_id = (TextView) view.findViewById(R.id.textView_id);img.setPadding(0, 0, 0, 0);//img.setImageResource(mImgIds[position]);img.setImageBitmap(readBitMap(mActivity, mImgIds[position]));textView_show.setText(listMessage.get(position));textView_id.setVisibility(View.VISIBLE);textView_id.setText(listMessage.get(position));int count = mViewPager.getChildCount();for (int i = 0; i < count; i++) {if (i==current) {//View view2 = mViewPager.getChildAt(i);//TextView textView_id2 = (TextView) view2.findViewById(R.id.textView_id);//TextView textView_show2 = (TextView) view2.findViewById(R.id.textView_show);//ImageView img2 = (ImageView) view2.findViewById(R.id.imageView_show);//textView_id2.setVisibility(View.VISIBLE);//textView_id2.setText(listMessage.get(i));//textView_show2.setText(listMessage.get(i));//img2.setPadding(0, 0, 0, 0);//myPagerAdapter.notifyDataSetChanged();}else {View view2 = mViewPager.getChildAt(i);TextView textView_id2 = (TextView) view2.findViewById(R.id.textView_id);TextView textView_show2 = (TextView) view2.findViewById(R.id.textView_show);ImageView img2 = (ImageView) view2.findViewById(R.id.imageView_show);textView_id2.setVisibility(View.GONE);textView_show2.setText(listMessage.get(i));img2.setPadding(5, 5, 5,5);myPagerAdapter.notifyDataSetChanged();}} myPagerAdapter.notifyDataSetChanged(); current = position;}@Overridepublic void onPageScrolled(int position, float positionOffset,int positionOffsetPixels) {// TODO Auto-generated method stubif (viewPagerContainer != null) { viewPagerContainer.invalidate(); }int count = mViewPager.getChildCount();for (int i = 0; i < count; i++) {if (i==current) {View view = mViewPager.getChildAt(i);TextView textView_id2 = (TextView) view.findViewById(R.id.textView_id);TextView textView_show = (TextView) view.findViewById(R.id.textView_show);ImageView img = (ImageView) view.findViewById(R.id.imageView_show);textView_id2.setVisibility(View.VISIBLE);textView_id2.setText(listMessage.get(i));textView_show.setText(listMessage.get(i));img.setPadding(0, 0, 0, 0);myPagerAdapter.notifyDataSetChanged();}else {View view = mViewPager.getChildAt(i);TextView textView_id2 = (TextView) view.findViewById(R.id.textView_id);TextView textView_show = (TextView) view.findViewById(R.id.textView_show);ImageView img = (ImageView) view.findViewById(R.id.imageView_show);textView_id2.setVisibility(View.GONE);textView_show.setText(listMessage.get(i));img.setPadding(5, 5, 5,5);myPagerAdapter.notifyDataSetChanged();}}}@Overridepublic void onPageScrollStateChanged(int state) {// TODO Auto-generated method stub}});}/*class MyPagerAdapter extends PagerAdapter { @Override public int getCount() { return TOTAL_COUNT; } @Override public boolean isViewFromObject(View view, Object object) { return (view == object); } @Override public Object instantiateItem(ViewGroup container, int position) { ImageView imageView = mImageViews.get(position);imageView.setPadding(5, 5, 5, 5);container.addView(imageView);return imageView; } @Override public void destroyItem(ViewGroup container, int position, Object object) { ((ViewPager)container).removeView((View)object); } }*/class MyPagerAdapter2 extends FragmentStatePagerAdapter {public MyPagerAdapter2(FragmentManager fm) {super(fm);// TODO Auto-generated constructor stub}@Overridepublic Fragment getItem(int arg0) {Fragment fragment = new One(mImgIds[arg0],listMessage.get(arg0));listFragment.add(fragment);return fragment;}@Overridepublic int getCount() {// TODO Auto-generated method stubreturn mImgIds.length;}}private void initData(){for (int imgId : mImgIds){ImageView imageView = new ImageView(getApplicationContext());imageView.setScaleType(ScaleType.CENTER_CROP);imageView.setImageResource(imgId);mImageViews.add(imageView);}}@Overrideprotected void onResume() {// TODO Auto-generated method stubsuper.onResume();mViewPager.getLocationInWindow(locationOne);int oneX = locationOne[0];int oneY = locationOne[1];XyLog.v("TAGX", oneX+"");XyLog.v("TAGY", oneY+"");int width = mViewPager.getWidth();int everyWidth = width / 3; oneTouch = everyWidth; TwoTouch = 2*everyWidth; ThrTouch = 3*everyWidth;}/** * 以最省内存的方式读取本地资源的图片 * @param context * @param resId * @return */ public static Bitmap readBitMap(Context context, int resId){ BitmapFactory.Options opt = new BitmapFactory.Options(); opt.inPreferredConfig = Bitmap.Config.RGB_565; opt.inPurgeable = true; opt.inInputShareable = true; //获取资源图片 InputStream is = context.getResources().openRawResource(resId); return BitmapFactory.decodeStream(is,null,opt); } private Bitmap mergeBitmap(Bitmap firstBitmap, Bitmap secondBitmap) { Bitmap bitmap = Bitmap.createBitmap(firstBitmap.getWidth(), firstBitmap.getHeight(), firstBitmap.getConfig()); Canvas canvas = new Canvas(bitmap); canvas.drawBitmap(firstBitmap, new Matrix(), null); canvas.drawBitmap(secondBitmap, 0, 0, null); return bitmap; }}
代码地址:
csdn代码地址
github代码地址
小弟淘宝店,祈求光临
0 0
- viewpager一屏多个滑动效果
- ViewPager左右滑动效果
- ViewPager--滑动效果控制
- ViewPager滑动效果
- ViewPager多页面滑动效果
- viewpager+fragment实现滑动效果
- ViewPager多页面滑动效果
- Android 图片滑动效果: ViewPager
- 禁用ViewPager边界滑动效果
- ViewPager微信滑动效果
- ViewPager滑动动画效果实现
- viewpager滑动加标记动画滑动效果
- ViewPager 取消滑动效果,禁止手指滑动
- Android ViewPager禁止滑动、滑动效果
- ViewPager滑动效果加导航效果
- Android使用ViewPager实现左右滑动效果
- 使用ViewPager实现左右滑动效果
- 53 Android fragment ViewPager 滑动效果
- 安卓高斯模糊特效blur_demo(包含viewpager切换动画)
- input type="checkbox",选中或取消,将value存入隐藏域
- classpath和环境变量设置
- 通过Navicat for MySQL恢复数据 mysql [Err] 2006 - MySQL server has gone away [Err] INSERT INTO错误
- POJ3678:Katu Puzzle 2-SAT
- viewpager一屏多个滑动效果
- Objective-C 关于找到所在的视图控制器
- jQuery中的.bind()、.live()和.delegate()之间区别分析
- mysql的replace into类似于oracle的merge sql语句
- gridview中 编辑列 要点两次才能出现编辑文本框
- 实现打印机的共享
- jsp---DBUtil用法之ResultSetHandler 和 QueryRunner总结
- java基本类型的长度
- ES6学习——类语法:其它