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;
}
}

注释的也比较到位,还有缓存功能哦!图片加载方法来自慕课大神--徐大神

就这样啦~~

都来看看女帝和露琪亚吧~还有一张是雏田哦!

最新文章

  1. C#开源实现MJPEG流传输
  2. saltstack(主机改名)
  3. angular的$scope
  4. servlet(二)
  5. SqlServer性能优化 自定义动化性能收集(四)
  6. ViewPager+Fragment实现页面的切换
  7. 纯Shading Language绘制飞机火焰效果
  8. 2034-人见人爱A-B(c++实现)
  9. 【linux】vim的一些快捷键
  10. centos6.4.yum-lamp环境设置
  11. mysql性能监控工具Innotop
  12. linux signal之初学篇
  13. Android学习笔记之Intent
  14. Cocos2dx热更新遇到的那些坑
  15. java 分解质因数
  16. JavaScript(第二十八天)【Cookie与存储】
  17. 基本 SQL 之增删改查(二)
  18. 在centos7 上安装Python3
  19. c++ 引用犯的一个错
  20. JCP与JSR

热门文章

  1. scikit-learn一般实例之四:使用管道和GridSearchCV选择降维
  2. 联想 Thinkpad X230 SLIC 2.1 Marker
  3. 在浏览器标签显示网站logo图标
  4. Github pages + jekyll 博客快速搭建
  5. Sql常用语句(3)
  6. Debian的软件包管理工具命令 (dpkg,apt-get)详解
  7. CentOS7安装NodeJS6.9
  8. SpringMVC + mybatis + Druid insert 数据库中文乱码,查询无乱码
  9. 使用gulp解决RequireJS项目前端缓存问题(一)
  10. JavaScript线程机制