首页 > 代码库 > Android 引导页公共方法LeaderPager
Android 引导页公共方法LeaderPager
SimpAndroidFarme是近期脑子突然发热想做的android快速开发的框架,目标是模块化
常用的控件,方便新手学习和使用。也欢迎老鸟来一起充实项目:项目地址
引导页是我们开发app很常用的功能,但是一般都是第一此运行才会执行,每写个项目
都要为这种一次性的东西写那么多重复代码太讨厌啦~
现在再也不用担心这个问题了!
一般引导有两种图片源 , 本地图片/ 网络图片
目标使用方法:
使用本地提供的图片 id
参数一: viewpager
参数二: 图片url集合(使用本地则传null)
参数三: 图片id 集合(使用url则传null)
参数四: 引导完成后 跳转到的页面
new LeaderPager(Second.this).LeaderPagerAdapter(viewPager , null , imgid , MainActivity.class);
是不是看上去使用很方便啊~!!
上代码:
LeaderPager:
package com.wbnq.simpleandroidframe.plugs;import android.app.Activity;import android.content.Context;import android.content.Intent;import android.graphics.Bitmap;import android.support.v4.view.PagerAdapter;import android.support.v4.view.ViewPager;import android.util.Log;import android.view.View;import android.view.ViewGroup;import android.widget.ImageView;import java.util.ArrayList;import java.util.List;/** * Created by guwei on 16-11-4. */public class LeaderPager { Context mContext; List<ImageView> mImageViews = new ArrayList<>(); private static final String TAG = "LeaderPager"; public LeaderPager(Context context) { this.mContext = context; } /** * 参数二 三 可选填入 * <p> * 参数二 不为空时 使用bitmap图片 否则使用 mipmap内图片 **/ public void LeaderPagerAdapter(ViewPager viewPager, final List<String> imgs_url, final List<Integer> imgs_id , final Class nextpage) { viewPager.setAdapter(new PagerAdapter() { @Override public Object instantiateItem(ViewGroup container, int position) { ImageView imageView = new ImageView(mContext); if (imgs_url != null) { imageView.setTag(imgs_url.get(position)); new ImageLoader().showImageByThread(imageView , imgs_url.get(position)); //imageView.setImageBitmap(); } else if (imgs_id != null) { imageView.setImageResource(imgs_id.get(position)); } else { Log.e(TAG, "banner方法: 未传入图片参数 , 请检查参数是否填写正确!"); } imageView.setScaleType(ImageView.ScaleType.CENTER_CROP); container.addView(imageView); mImageViews.add(imageView); return imageView; } //移除imageview @Override public void destroyItem(ViewGroup container, int position, Object object) { Log.e(TAG, "destroyItem: position = " + position ); container.removeView(mImageViews.get(position)); if(position == 0){ Intent intent = new Intent(mContext , nextpage); mContext.startActivity(intent); } } @Override public int getCount() { int count; if(imgs_url != null){ count = imgs_url.size(); }else{ count = imgs_id.size(); } return count; } @Override public boolean isViewFromObject(View view, Object object) { return view == object; } }); }}
就是一般viewpager的使用方法不多说
如果想要使用网络图片功能先需要配合imageLoader一起使用哦!
ImageLoader:
package com.wbnq.simpleandroidframe.plugs;import android.graphics.Bitmap;import android.graphics.BitmapFactory;import android.os.Handler;import android.os.Message;import android.util.Log;import android.util.LruCache;import android.widget.ImageView;import java.io.BufferedInputStream;import java.io.IOException;import java.io.InputStream;import java.net.HttpURLConnection;import java.net.MalformedURLException;import java.net.URL;/** * Created by guwei on 16-4-13. */public class ImageLoader { private ImageView mImageView; private String mUrl; //创建cache private LruCache<String, Bitmap> mCaches; private static final String TAG = "ImageLoader"; public ImageLoader() { //获得最大可用内存 int maxMemory = (int) Runtime.getRuntime().maxMemory(); int cacheSize = maxMemory / 3; mCaches = new LruCache<String, Bitmap>(cacheSize) { @Override protected int sizeOf(String key, Bitmap value) { //在每次存入缓存的时候调用,返回的是bitmap的大小 return value.getByteCount(); } }; } //添加图片到缓存中 (cache类似map) public void addBitmapToCache(String url, Bitmap bitmap) { //如果缓存没有这张图片就将图片存到缓存中 if (getBitmapFormCache(url) == null) { mCaches.put(url, bitmap); } } //从缓存中取出图片 public Bitmap getBitmapFormCache(String url) { return mCaches.get(url); } private Handler handler = new Handler() { @Override public void handleMessage(Message msg) { super.handleMessage(msg); if (mImageView.getTag().equals(mUrl)) { mImageView.setImageBitmap((Bitmap) msg.obj); } } }; //在线程中通过url 加载图片 public void showImageByThread(final ImageView image, final String url) { mImageView = image; mUrl = url; Bitmap bitmap = getBitmapFormCache(url); if (bitmap == null) { new Thread() { @Override public void run() { super.run(); Bitmap bitmap = getBitmapFormURL(url); Message msg = Message.obtain(); msg.obj = bitmap; handler.sendMessage(msg); //Log.i("xyz", "1"); } }.start(); } else { image.setImageBitmap(bitmap); } } public Bitmap getBitmapFormURL(String urlString) { Bitmap bitmap = null; InputStream is = null; try { URL url = new URL(urlString); try { HttpURLConnection connection = (HttpURLConnection) url.openConnection(); is = new BufferedInputStream(connection.getInputStream()); bitmap = BitmapFactory.decodeStream(is); connection.disconnect(); addBitmapToCache(urlString, bitmap); Log.e(TAG, "getBitmapFormURL: 网络方法内部 获取图片 并将图片放入缓存 "+bitmap); } catch (IOException e) { e.printStackTrace(); } } catch (MalformedURLException e) { e.printStackTrace(); } finally { try { is.close(); } catch (IOException e) { e.printStackTrace(); } } return bitmap; }}
注释的也比较到位,还有缓存功能哦!图片加载方法来自慕课大神--徐大神
就这样啦~~
都来看看女帝和露琪亚吧~还有一张是雏田哦!
Android 引导页公共方法LeaderPager
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。