翻翻git之---史上最强的图片选择器 GalleryFinal(顺带附下麦麦,当当的近照)

转载请注明出处:王亟亟的大牛之路

技术内容在P2,P1是废话可以跳过

P1:(开胃菜)

最近手头上工作的事差不多告一段落了,可以把更多的精力花在学习上了,还是会继续翻git这部分的文章(搬运工),然后准备整整一些之前没接触过的知识点(具体学什么没想好,等会看看去)

先上一下家里宝贝的近照


P2:(正菜)

今天上的是一个自称是“史上最强的图片选择器” GalleryFinal

话不多说先看看效果

作者几乎实现了我们平时所需的“皂片”选择器的所有功能,还带有一定的编辑和图片缩放功能。
编辑功能来源于:https://github.com/jdamcd/android-crop
图片缩放来源于:https://github.com/chrisbanes/PhotoView

How to use

Grade:

compile 'cn.finalteam:galleryfinal:1.4.3'
compile 'com.android.support:support-v4:23.1.1'

Eclipse:
。。。。。。。。我不知道怎么说。。。。。。。。。

这边提个醒

本项目是基于SDK 23(6.0)系统编译的请开发者将targetSdkVersion改成23

我这边再来解释下怎么使用这个库,这跟平时我们那些自定义控件不一样,还是需要一些配置的工作(图片加载部分都拿ImageLoader为例)

  1. 因为我们使用的事ImageLoader所以一般要在Application中配置我们的ImageLoader,像这样
public class IApplication extends Application {

    @Override
    public void onCreate() {
        super.onCreate();
        //建议在application中配置
        //设置主题
        ThemeConfig theme = ThemeConfig.CYAN
        ThemeConfig theme = new ThemeConfig.Builder()
                .build();
        //配置功能
        FunctionConfig functionConfig = new FunctionConfig.Builder()
                .setEnableCamera(true)
                .setEnableEdit(true)
//                .setEnableCrop(true)
                .setEnableRotate(true)
                .setCropSquare(true)
                .setEnablePreview(true)
                .build();
        CoreConfig coreConfig = new CoreConfig.Builder(this, new UILImageLoader(), theme)
                .setFunctionConfig(functionConfig)
                .setPauseOnScrollListener(new UILPauseOnScrollListener(false, true))
                .build();
        GalleryFinal.init(coreConfig);
    }
}

当然,你也可以在Activity中配置,像这样

  private void initImageLoader(Context context) {
        // This configuration tuning is custom. You can tune every option, you may tune some of them,
        // or you can create default configuration by
        //  ImageLoaderConfiguration.createDefault(this);
        // method.
        ImageLoaderConfiguration.Builder config = new ImageLoaderConfiguration.Builder(context);
        config.threadPriority(Thread.NORM_PRIORITY - 2);
        config.denyCacheImageMultipleSizesInMemory();
        config.diskCacheFileNameGenerator(new Md5FileNameGenerator());
        config.diskCacheSize(50 * 1024 * 1024); // 50 MiB
        config.tasksProcessingOrder(QueueProcessingType.LIFO);
        config.writeDebugLogs(); // Remove for release app

        // Initialize ImageLoader with configuration.
        ImageLoader.getInstance().init(config.build());
    }

2.配置UI选择器UI等一系列属性

ThemeConfig theme = new ThemeConfig.Builder()
        ...
        .build();
//可以用默认Theme也可以自定义去设置 Icon啊 字体颜色啊什么的,像这样

.setTitleBarBgColor(Color.rgb(0xFF, 0x57, 0x22))
                            .setTitleBarTextColor(Color.BLACK)
                            .setTitleBarIconColor(Color.BLACK)
                            .setFabNornalColor(Color.RED)
                            .setFabPressedColor(Color.BLUE)
                            .setCheckNornalColor(Color.WHITE)
                            .setCheckSelectedColor(Color.BLACK)
                            .setIconBack(R.mipmap.ic_action_previous_item)
                            .setIconRotate(R.mipmap.ic_action_repeat)
                            .setIconCrop(R.mipmap.ic_action_crop)
                            .setIconCamera(R.mipmap.ic_action_camera)

3.功能配置,具体的选择器功能呈现的配置

//配置功能
FunctionConfig functionConfig = new FunctionConfig.Builder()
        ...
        .build();
 //可设置项,如下
setMutiSelect(boolean)//配置是否多选
setMutiSelectMaxSize(int maxSize)//配置多选数量
setEnableEdit(boolean)//开启编辑功能
setEnableCrop(boolean)//开启裁剪功能
setEnableRotate(boolean)//开启选择功能
setEnableCamera(boolean)//开启相机功能
setCropWidth(int width)//裁剪宽度
setCropHeight(int height)//裁剪高度
setCropSquare(boolean)//裁剪正方形
setSelected(List)//添加已选列表,只是在列表中默认呗选中不会过滤图片
setFilter(List list)//添加图片过滤,也就是不在GalleryFinal中显示
takePhotoFolter(File file)//配置拍照保存目录,不做配置的话默认是/sdcard/DCIM/GalleryFinal/
setRotateReplaceSource(boolean)//配置选择图片时是否替换原始图片,默认不替换
setCropReplaceSource(boolean)//配置裁剪图片时是否替换原始图片,默认不替换
setForceCrop(boolean)//启动强制裁剪功能,一进入编辑页面就开启图片裁剪,不需要用户手动点击裁剪,此功能只针对单选操作
setForceCropEdit(boolean)//在开启强制裁剪功能时是否可以对图片进行编辑(也就是是否显示旋转图标和拍照图标)
setEnablePreview(boolean)//是否开启预览功能

4.主要操作配置(拍照,选择相册,剪裁等)

CoreConfig coreConfig = new CoreConfig.Builder(MainActivity.this, imageLoader, themeConfig)
.setFunctionConfig(functionConfig)
 ...
.build();

然后再配置具体操作项

  ActionSheet.createBuilder(MainActivity.this, getSupportFragmentManager())
  ...
 .show();

可配置内容如下:

单选打开相册:
GalleryFinal.openGallerySingle(REQUEST_CODE_GALLERY, mOnHanlderResultCallback);
//带配置
GalleryFinal.openGallerySingle(REQUEST_CODE_GALLERY, functionConfig, mOnHanlderResultCallback);

多选打开相册
GalleryFinal.openGalleryMuti(REQUEST_CODE_GALLERY, mOnHanlderResultCallback);
//带配置
FunctionConfig config = new FunctionConfig.Builder(MainActivity.this)
    .setMutiSelectMaxSize(8)
    .build();
GalleryFinal.openGalleryMuti(REQUEST_CODE_GALLERY, functionConfig, mOnHanlderResultCallback);

拍照
GalleryFinal.openCamera(REQUEST_CODE_CAMERA, mOnHanlderResultCallback);
//带配置
GalleryFinal.openCamera(REQUEST_CODE_CAMERA, functionConfig, mOnHanlderResultCallback);

裁剪
GalleryFinal.openCrop(REQUEST_CODE_CAMERA, mOnHanlderResultCallback);
//带配置
GalleryFinal.openCrop(REQUEST_CODE_CAMERA, functionConfig, mOnHanlderResultCallback);

图片编辑
GalleryFinal.openEdit(REQUEST_CODE_CAMERA, mOnHanlderResultCallback);
//带配置
GalleryFinal.openEdit(REQUEST_CODE_CAMERA, functionConfig, mOnHanlderResultCallback);

再添加一个操作返回的回调

  private GalleryFinal.OnHanlderResultCallback mOnHanlderResultCallback = new GalleryFinal.OnHanlderResultCallback() {
        @Override
        public void onHanlderSuccess(int reqeustCode, List<PhotoInfo> resultList) {
            if (resultList != null) {
                mPhotoList.addAll(resultList);
                mChoosePhotoListAdapter.notifyDataSetChanged();
            }
        }

然后就可以使用了,看上去需要配置的东西很麻烦,但是只要一次设置之后就都可以用了,关键功能强大,配置麻烦也就忍了!!

源码地址:https://github.com/ddwhan0123/GalleryFinal/archive/master.zip

作者git:https://github.com/pengjianbo

时间: 2024-12-20 12:02:56

翻翻git之---史上最强的图片选择器 GalleryFinal(顺带附下麦麦,当当的近照)的相关文章

Webbrowser控件史上最强技巧全集

原文:Webbrowser控件史上最强技巧全集 Webbrowser控件史上最强技巧全集 VB调用webbrowser技巧集 1.获得浏览器信息: Private Sub Command1_Click() WebBrowser1.Navigate "http://www.applevb.com" End Sub Private Sub Command2_Click() Dim oWindow Dim oNav Set oWindow = WebBrowser1.Document.par

史上最强CPU级多因素认证技术解析

本文讲的是 史上最强CPU级多因素认证技术解析,今年1月,芯片制造巨头英特尔披露了一项堪称有史以来最为强悍的身份认证技术:去年九月发布的第六代 Core 处理器家族支持全新的多因素身份验证.但即使到现在,了解此事的人也少之又少.今天,我们就来看看,英特尔处理器的这项安全机制的具体内容及其意义究竟何在? 英特尔验证 这项被称为 "英特尔验证"(Intel Authenticate)的多因素认证技术的目标是部分替代现存的密码技术,属于英特尔在过去多年中推出的多项安全技术的又一补充.它的目标

ARM发布史上最强显示控制器:2.5K/4K屏轻松支持

摘要:ARM今天宣布推出其史上最强性能.最高能效的显示控制器"Mali-DP650",重点强化了对设备屏幕分辨率的支持.Mali-DP650搭配ARM CoreLink MMU-500系统总线,可以支持各种不同分辨率,尤其是优化了对2560 1600(平板机).2560 1440(手机)这种2.5K屏的支持,同时也能轻松支持3840 2160 4K分辨率和60fps帧率,并且能将4K视频从移动设备流传输到 大屏显示器上进行播放. 相比于上代Mali-DP550,它还将AXI总线位宽翻番

史上最强IT女助理 网上风头超芙蓉姐姐

中介交易 SEO诊断 淘宝客 云主机 技术大厅 互联网成名不是什么新鲜事,不管是主动还是被动,只要有人捧,成名就发生在一夜之间.例如史上最强的厚脸皮小姐芙蓉姐姐,史上最牛EMC女秘书瑞贝卡等等,在2007年的初秋,又一个女助理主动"献身",成为了现在网上最热的人物,那就是伊莱克斯(中国)电器有限公司总经理助理石靖. 伊莱克斯(中国)电器有限公司总经理助理石靖 石靖(Jessica),生于1979年,现任伊莱克斯(中国)电器有限公司总经理助理,入职年限4年.在网上现在可以找到很多关于石靖

五一促销商超低调 网商疯狂现史上最强价格战

CFP/图 "五一"假期虽然不及春节和"十一"长,但由于正值换季,成为了一年业绩的晴雨表.记者在走访中发现,不同业态http://www.aliyun.com/zixun/aggregation/24095.html">零售企业在今年"五一"的促销模式大相径庭,商超在促销上力度颇为谨慎,家电卖场和电商的促销声势却异常猛烈. 商场 促销低调进行 往年离"五一"假期还有十多天,京城各大商场就开始促销预热,但在今年却

史上最强的大脑游戏攻略(16关到20关)

[史上最强的大脑攻略第16关] 本关目标:找出真正的主角. 技巧:随意点击一个女生,然后会出现下图的画面,点击在哭的人物即可过关. [史上最强的大脑攻略第17关] 本关目标:给这个游戏打分. 技巧:点击按住调查卷的右侧,然后向左边滑动,连续做两次即可翻页.接着点击"满意"右边的方框,打钩即可过关. [史上最强的大脑攻略第18关] 本关目标:猎杀目标人物. 技巧: 1.点击"前往潜伏地点",进入下一个场景. 2.然后点击左下角的"Back". 3.

史上最强的大脑攻略第8、9、10关

[史上最强的大脑攻略第8关] 本关目标:把蛋糕切开,让小女孩吃. 技巧:用两个手指按住蛋糕,然后各自向两边滑动,这样蛋糕就分开了. [史上最强的大脑攻略第9关] 本关目标:找出纸币的面值是多少. 技巧:把手机或平板屏幕翻转180度即可看到纸币的面值,如下图所示.然后在右边的计算器中输入"216",点击"ok"即可过关. [史上最强的大脑攻略第10关] 本关目标:熄灭一盏灯. 技巧:如下图,把"一"拖动把下方的电池,这样灯就熄灭了.

曾爆红网络的“史上最强太极推手”闫芳被逐出山门

闫芳中发力,弟子被弹了出去.收徒大会上,闫芳现场演示"神功".央视记者(右一)感受不到神力.稍稍轻轻一拍,弟子上蹿下跳. 浙江在线10月12日讯 10月10日,在"太极拳大师李经梧百年诞辰纪念座谈会"上,李经梧后人及众入室弟子正式向社会声明:将闫芳开除出山门.此前,"史上最强的太极推手"闫芳,因一段"出神入化"的"隔空打人"的推手神功视频备受http://www.aliyun.com/zixun/aggre

IBM造史上最强计算机 吞吐数据相当全球互联网2倍

IBM公司正在设计史上最强的计算机.这台计算机将与占地1 900平方英里(约合4920平方公里)的平方公里阵列相连,负责分析望远镜 获取的数据.平方公里阵列能够观测到130亿年前的宇宙景象,当时刚发生大爆炸不久,正是宇宙的黎明时期 平方公里阵列产生的数据相当于整个http://www.aliyun.com/zixun/aggregation/12838.html">互联网流量的两倍,大型强子 对撞机的100倍 在道格拉斯-亚当斯的<银河系漫游指南>中,一个外星文明制造了一台巨型