Gallery
ImageView
HoverView:图片浮层
AndroidViewHover
ImageView-Loader
Picasso 是一个专门的面向图片任务的 HTTP 库。譬如,可以用一行代码就把网络图片加载到 ImageView 中:
Picasso.with(context).load("http://i.imgur.com/DvpvklR.png").into(imageView);
Picasso 与 Retrofit 都是默认的使用 OkHttpClient 作为底层的 HTTP 客户端,然而,你也可以配置自己的基于 HttpUrlConnection 的客户端。
Glide是一个非常类似于 Picasso 的库,不过它提供了一些额外的功能,譬如 GIF 动画、简略图生成以及视频。
Facebook 开源的它们自己的图片加载库Fresco使用了它们自定义的 Android 客户端。其中它的一个非常优秀的特性在于 Fresco 的面向 Bitmaps 的自定义才存储策略能够避免 JVM 堆顶的垃圾回收的限制。Fresco 是分配了 Android 中被称为 ashmem 部分的内存,同时,它用了一些方法允许同时从 Java 以及 C++代码访问 ashmem 部分,来进行 NDK 级别的 CPU 处理。为了节省数据存储空间以及 CPU 的消耗,Fresco 有三层不同的缓存:两层在内存中,以及一层在内部存储中。
ImageProcess:图片处理
Label(标签)
Sticker(贴纸)
StickerView
Crop(裁剪)
SimpleCropView
Focus(图片缩放浏览)
Pull Back Layout
Pull-Back-Layout 本质上提供了一层对于 ImageView 或者 ViewPager 的封装,允许以下拉方式关闭某个放大的 ImageView 或者 ViewPager。
- Installation
repositories {
// ...
maven { url "https://jitpack.io" }
}
dependencies {
// ... support library ...
// ...
compile 'com.github.oxoooo:pull-back-layout:1.0.0'
}
- Usage
-
Make your Activity translucent by adding these two lines to your theme:
<style name="AppTheme" ...> <!-- ... --> <item name="android:windowBackground">@android:color/transparent</item> <item name="android:windowIsTranslucent">true</item> <!-- also translucent system ui -- suggested but not required --> <item name="android:windowTranslucentStatus">true</item> <item name="android:windowTranslucentNavigation">true</item> </style>
-
Wraps
ooo.oxo.library.widget.PullBackLayout
around yourImageView
orViewPager
:<ooo.oxo.library.widget.PullBackLayout android:id="@+id/puller" android:layout_width="match_parent" android:layout_height="match_parent"> <android.support.v4.view.ViewPager android:id="@+id/pager" android:layout_width="match_parent" android:layout_height="match_parent" /> </ooo.oxo.library.widget.PullBackLayout>
-
Set a callback:
public class ViewerActivity extends AppCompatActivity implements PullBackLayout.Callback { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); /* ... */ puller.setCallback(this); } @Override public void onPullStart() { // fade out Action Bar ... // show Status Bar ... } @Override public void onPull(float progress) { // set the opacity of the window's background } @Override public void onPullCancel() { // fade in Action Bar } @Override public void onPullComplete() { supportFinishAfterTransition(); } }