All Projects → bilibili → Boxing

bilibili / Boxing

Licence: apache-2.0
Android multi-media selector based on MVP mode.

Programming Languages

java
68154 projects - #9 most used programming language

Projects that are alternatives of or similar to Boxing

Knowledge
DEPRECATED
Stars: ✭ 461 (-85.67%)
Mutual labels:  picture, mvp
Crazydaily
[开源项目] 一款程序员日常放松的App,基于Material Design + MVP-Clean + Weex + Flutter + RxJava2 + Retrofit + Dagger2 + Glide + Okhttp + MTRVA + BRVAH + 炫酷控件 + 炫酷动画
Stars: ✭ 294 (-90.86%)
Mutual labels:  mvp
Imager
Automated image compression for efficiently distributing images on the web.
Stars: ✭ 266 (-91.73%)
Mutual labels:  compression
Variational Dropout Sparsifies Dnn
Sparse Variational Dropout, ICML 2017
Stars: ✭ 278 (-91.36%)
Mutual labels:  compression
Kotlin Android Mvp Starter
Create/Generate your kotlin MVP projects easily
Stars: ✭ 270 (-91.6%)
Mutual labels:  mvp
Cute headers
Collection of cross-platform one-file C/C++ libraries with no dependencies, primarily used for games
Stars: ✭ 3,274 (+1.8%)
Mutual labels:  compression
Python Blosc
A Python wrapper for the extremely fast Blosc compression library
Stars: ✭ 264 (-91.79%)
Mutual labels:  compression
Pocenter
整合多个软件外包平台项目信息,替你筛选优质项目。MVP + RxJava + Retrofit + Material Design
Stars: ✭ 306 (-90.49%)
Mutual labels:  mvp
Simdcompressionandintersection
A C++ library to compress and intersect sorted lists of integers using SIMD instructions
Stars: ✭ 289 (-91.01%)
Mutual labels:  compression
Android Camera2 Secret Picture Taker
Take pictures 📷 secretly (without preview or launching device's camera app) using Android CAMERA2 API
Stars: ✭ 275 (-91.45%)
Mutual labels:  picture
Friendbook
📕 "友书" 小说阅读app
Stars: ✭ 275 (-91.45%)
Mutual labels:  mvp
Zipper
C++ wrapper around minizip compression library
Stars: ✭ 272 (-91.54%)
Mutual labels:  compression
Crunch
Crunch is a tool for lossy PNG image file optimization. It combines selective bit depth, color type, and color palette reduction with zopfli DEFLATE compression algorithm encoding using the pngquant and zopflipng PNG optimization tools. This approach leads to a significant file size gain relative to lossless approaches at the expense of a relatively modest decrease in image quality (see example images below).
Stars: ✭ 3,074 (-4.42%)
Mutual labels:  compression
Smidge
A lightweight runtime CSS/JavaScript file minification, combination, compression & management library for ASP.Net Core
Stars: ✭ 267 (-91.7%)
Mutual labels:  compression
Tinify Nodejs
Node.js client for the Tinify API.
Stars: ✭ 299 (-90.7%)
Mutual labels:  compression
Componentizationarch
Stars: ✭ 265 (-91.76%)
Mutual labels:  mvp
Gozstd
go wrapper for zstd
Stars: ✭ 275 (-91.45%)
Mutual labels:  compression
Avenging
MVP pattern example on Android: no Dagger or RxJava example
Stars: ✭ 279 (-91.32%)
Mutual labels:  mvp
Clean Android Code
MVP + Dagger 2 + RxJava + Retrofit2
Stars: ✭ 311 (-90.33%)
Mutual labels:  mvp
Dmgameapp
⭐️【游戏资讯】一款游戏资讯应用
Stars: ✭ 304 (-90.55%)
Mutual labels:  mvp

boxing


Android multi-media selector based on MVP mode.中文文档 Build Status

boxing Inside:

bili

Feature


  • Custom UI
  • Multiple/single selection, preview and crop function
  • Gif support
  • Video selection
  • Image compression
  • Gif encode(checkout feature/gif-encode to have fun), see Bilibili/BurstLinker

Download


Core version: only contain the core function.

UI version: contain UI implements base on core version.

  • Maven

Core version

<dependency>                       
  	<groupId>com.bilibili</groupId>  
  	<artifactId>boxing</artifactId>  
  	<version>1.0.4</version>
  	<type>pom</type>                
</dependency>                      		

UI version

<dependency>                          
  	<groupId>com.bilibili</groupId>     
  	<artifactId>boxing-impl</artifactId>
  	<version>1.0.4</version>
  	<type>pom</type>                    
</dependency>                         
  • Gradle

Core version

compile 'com.bilibili:boxing:1.0.4'

UI version

compile 'com.bilibili:boxing-impl:1.0.4'

Preview

multi_image single_image_crop video

Getting Started

  • Media loading initialization(required)
BoxingMediaLoader.getInstance().init(new IBoxingMediaLoader()); // a class implements IBoxingMediaLoader 
  • Image cropping initialization(optional)
BoxingCrop.getInstance().init(new IBoxingCrop());  // a class implements IBoxingCrop 
  • Build BoxingConfig Specify the mode(Mode.SINGLE_IMG, Mode.MULTI_IMG, Mode.VIDEO) with camera and gif support.
BoxingConfig config = new BoxingConfig(Mode); // Mode:Mode.SINGLE_IMG, Mode.MULTI_IMG, Mode.VIDEO
config.needCamera(cameraRes).needGif().withMaxCount(9) // camera, gif support, set selected images count
.withMediaPlaceHolderRes(resInt) // set the image placeholder, default 0
.withAlbumPlaceHolderRes(resInt) // set the album placeholder, default 0
.withVideoDurationRes(resInt) // set the video duration resource in video mode, default 0
  • Get Boxing, set Intent and call start
// start thumbnails Activity, need boxing-impl.
Boxing.of(config).withIntent(context, BoxingActivity.class).start(callerActivity, REQUEST_CODE); 
  	
// start view raw image Activity, need boxing-impl.
Boxing.of(config).withIntent(context, BoxingViewActivity.class).start(callerActivity, REQUEST_CODE); 
  	
// call of() use Mode.MULTI_IMG by default.
Boxing.of().withIntent(context, class).start(callerActivity, REQUEST_CODE);
  • Get Result
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
  	List<BaseMedia> medias = Boxing.getResult(data);
  	// avoid null
}

Advanced usage

Media loading and image cropping initialization are the same as Simple Usage.

  • Customize Activity and Fragment Extends AbsBoxingViewActivity and AbsBoxingViewFragment. call Boxing.of(config).withIntent(context, AbsBoxingViewActivity.class).start(callerActivity, REQUEST_CODE); to start.

  • Only customize Fragment Extends AbsBoxingViewFragment,no AbsBoxingViewActivity. call Boxing.of(BoxingConfig).setupFragment(AbsBoxingViewFragment, OnFinishListener); to start.

FileProvider

Use camera in Android N, add this in AndroidManifest.xml

<provider                                                 
	android:name="android.support.v4.content.FileProvider"
	android:authorities="${applicationId}.file.provider" >               
	<meta-data                                            
		android:name="android.support.FILE_PROVIDER_PATHS"
		android:resource="@xml/boxing_file_provider"/>
</provider>                 

Kotlin Support

Stay hungry, stay foolish. checkout feature/kotlin for fun.

TODO

Support different config at the same moment.

License


Copyright 2017 Bilibili Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0 Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.

Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].