当前位置: 主页 > 开源代码 >

本地图片加载器

分享

介绍:

 

来源:尚硅谷学员分享内容。
本地图片加载器,采用的是异步解析本地图片,单例模式利用getInstance()获取NativeImageLoader实例
调用loadNativeImage()方法加载本地图片,此类可作为一个加载本地图片的工具类
 
 查找
1.扫描本地文件我是从例子源码中找到的,下载这个例子;
(根据自己需求看例子的说明)
2.解压文件,如果是一个demo一般有一个示例,bin中可以找到生成的apk
3.安装到手机种测试

导入工程测试
1.代码导入eclipse或as中
2.在manifest文件中按顺序查看源码
3.跳入每一个函数能完成一个什么样的功能(布局,代码结合)
4.分析完成后看用到哪个类或者库

分析完成
1.复制代码
2.解决报错
3.根据自己需要定义
    扫描本地的图片文件就是一个工具类,每个函数都有说明
    
    
代码演示:

1.Mainfest:
    <activity
        android:name="com.example.imagescan.MainActivity"            

//name="com.example.imagescan.MainActivity"
        android:label="@string/app_name" >
        <intent-filter>
            <action android:name="android.intent.action.MAIN" />

            <category android:name="android.intent.category.LAUNCHER" />
        </intent-filter>
    </activity>

2.Activity
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);            //activity_main查看布局
        
        mGroupGridView = (GridView) findViewById(R.id.main_grid);    //
        
        getImages();
        
        mGroupGridView.setOnItemClickListener(new OnItemClickListener() {

            @Override
            public void onItemClick(AdapterView<?> parent, View view,
                    int position, long id) {
                List<String> childList = mGruopMap.get(list.get(position).getFolderName());
                
                Intent mIntent = new Intent(MainActivity.this, ShowImageActivity.class);
                mIntent.putStringArrayListExtra("data", (ArrayList<String>)childList);
                startActivity(mIntent);
                
            }
        });
        
    }

3.通过此方法来获取NativeImageLoader的实例        getInstance()
4.加载本地图片,对图片不进行裁剪                loadNativeImage(final String path, final

NativeImageCallBack mCallBack)
5.此方法来加载本地图片,这里的mPoint是用来封装ImageView的宽和高,我们会根据ImageView控件的大小来裁剪Bitmap
如果你不想裁剪图片,调用loadNativeImage(final String path, final NativeImageCallBack mCallBack)来加载
    loadNativeImage(final String path, final Point mPoint, final NativeImageCallBack mCallBack)
7.往内存缓存中添加Bitmap
    addBitmapToMemoryCache(String key, Bitmap bitmap)
    
8.根据View(主要是ImageView)的宽和高来获取图片的缩略图
decodeThumbBitmapForFile(String path, int viewWidth, int viewHeight)

9.根据View(主要是ImageView)的宽和高来计算Bitmap缩放比例。默认不缩放
computeScale(BitmapFactory.Options options, int viewWidth, int viewHeight)

10.加载本地图片的回调接口
    interface NativeImageCallBack
系统采用 Hash 算法决定集合元素的存储位置,这样可以保证能快速存、取集合元素;
对于 HashMap 而言,系统 key-value 当成一个整体进行处理,
系统总是根据 Hash 算法来计算 key-value 的存储位置,
这样可以保证能快速存、取 Map 的 key-value 对。

11.//利用NativeImageLoader类加载本地图片
        Bitmap bitmap = NativeImageLoader.getInstance()
        .loadNativeImage(path, mPoint, new NativeImageCallBack()

运行效果: