发布时间:2025-12-10 19:23:51 浏览次数:4
使用jazzyViewPager 加载assets目录打造炫酷效果MainActivitypackagecom.need88.drawableround;importjava.io.IOException;importjava.io.InputStream;importjava.util.ArrayList;importandroid.app.Activity;importandroid.content.res.AssetManager;imp
package com.need88.drawableround;import java.io.IOException;import java.io.InputStream;import java.util.ArrayList;import android.app.Activity;import android.content.res.AssetManager;import android.graphics.Bitmap;import android.graphics.BitmapFactory;import android.graphics.Matrix;import android.os.Bundle;import android.view.LayoutInflater;import com.jfeinstein.jazzyviewpager.JazzyViewPager;import com.jfeinstein.jazzyviewpager.JazzyViewPager.TransitionEffect;public class MainActivity extends Activity { private JazzyViewPager jazzyViewPager; private LayoutInflater inflater; private ArrayList<Bitmap> bms; private String[] picNamelist; private BitmapFactory bitmapFactory; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main);// 自定义Drawable 圆角图片 // Bitmap bitmap = BitmapFactory.decodeResource(getResources(), R.drawable.a);// RoundImageDrawable drawable = new RoundImageDrawable(bitmap); initView(); initDate(); /** * 添加动画效果,可以设置很多动画效果。如: * Standard * Tablet * CubeIn * CubeOut * FlipVertical * FlipHorizontal * Stack * ZoomIn * ZoomOut * RotateUp * RotateDown * Accordion * * 下面是可以通过字符串来产生动画对象的例子: * TransitionEffect effect = TransitionEffect.valueOf("Tablet"); * setupJazziness(effect); */ jazzyViewPager .setTransitionEffect(TransitionEffect.CubeOut); jazzyViewPager.setPageMargin(40);//两个页面之间的间距 jazzyViewPager.setFadeEnabled(true);//淡入浅出 效果 jazzyViewPager.setAdapter(new MyAdapter(this, bms,jazzyViewPager)); jazzyViewPager.setOnPageChangeListener(null);//可以监听page的改变 } private void initDate() { bitmapFactory = new BitmapFactory(); bms = new ArrayList<Bitmap>(); AssetManager assetManager = getAssets(); Bitmap bitmap; try { picNamelist = assetManager.list(""); for(String picName:picNamelist){ InputStream is = assetManager.open(picName); bitmap = bitmapFactory.decodeStream(is); bitmap = zoomImage(bitmap, 500, 500); bms.add(bitmap); } } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); } } private void initView() { inflater = getLayoutInflater(); jazzyViewPager = (JazzyViewPager) findViewById(R.id.jazzyViewPager); } public static Bitmap zoomImage(Bitmap bgimage, double newWidth, double newHeight) { // 获取这个图片的宽和高 float width = bgimage.getWidth(); float height = bgimage.getHeight(); // 创建操作图片用的matrix对象 Matrix matrix = new Matrix(); // 计算宽高缩放率 float scaleWidth = ((float) newWidth) / width; float scaleHeight = ((float) newHeight) / height; // 缩放图片动作 matrix.postScale(scaleWidth, scaleHeight); Bitmap bitmap = Bitmap.createBitmap(bgimage, 0, 0, (int) width, (int) height, matrix, true); return bitmap; } } 是否还在为Ide开发工具频繁失效而烦恼,来吧关注以下公众号获取最新激活方式。亲测可用!
【正版授权,激活自己账号】:Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛
【官方授权 正版激活】:官方授权 正版激活 自己使用,支持Jetbrains家族下所有IDE…
* 注意mJazzyViewPager.setObjectForPosition(view, position); 一定要加上,否则不会出现效果,其他和普通ViewPager写法一致 *
package com.need88.drawableround;import java.util.ArrayList;import com.jfeinstein.jazzyviewpager.JazzyViewPager;import android.content.Context;import android.graphics.Bitmap;import android.support.v4.view.PagerAdapter;import android.view.View;import android.view.ViewGroup;import android.widget.ImageView;public class MyAdapter extends PagerAdapter{ private Context mContext; private ArrayList<Bitmap> bitmaps; private JazzyViewPager mJazzyViewPager; public MyAdapter(Context context,ArrayList<Bitmap> bms,JazzyViewPager viewPager){ this.mContext = context; this.bitmaps = bms; this.mJazzyViewPager = viewPager; } @Override public int getCount() { return Integer.MAX_VALUE; } @Override public boolean isViewFromObject(View arg0, Object arg1) { /** * true: 表示不去创建,使用缓存 false:去重新创建 * view: 当前滑动的view * object:将要进入的新创建的view,由instantiateItem方法创建 */ return arg0 == arg1; } @Override public Object instantiateItem(ViewGroup container, int position) { View view = View.inflate(mContext, R.layout.list_item, null); ImageView imageView = (ImageView) view.findViewById(R.id.image); imageView.setImageBitmap(bitmaps.get(position%bitmaps.size())); // container.addView(view); //一定不能少,将view加入到viewPager中 //=============================== 实现效果重点 //这句话必须要写,按不同的位置添加视图 mJazzyViewPager.setObjectForPosition(view, position); return view; } @Override public void destroyItem(ViewGroup container, int position, Object object) { container.removeView((View) object); }} activity_main.xml
<LinearLayout android:orientation="horizontal" android:layout_width="fill_parent" android:layout_height="fill_parent" xmlns:andro><com.jfeinstein.jazzyviewpager.JazzyViewPager xmlns:app="http://schemas.android.com/apk/res-auto" android: android:layout_width="match_parent" android:layout_height="match_parent"></com.jfeinstein.jazzyviewpager.JazzyViewPager></LinearLayout> list_item.xml
<?xml version="1.0" encoding="utf-8"?><LinearLayout xmlns:andro android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertical" > <ImageView android: android:layout_width="match_parent" android:layout_height="match_parent" android:scaleType="fitXY" android:src="@drawable/a"/></LinearLayout> asset目录下面放置的图片由于过大,注意压缩一下,否则容易出现 内存溢出