Skip to content

Commit

Permalink
发布v1.2.0
Browse files Browse the repository at this point in the history
  • Loading branch information
jenly1314 committed Dec 5, 2024
1 parent f115bad commit 6e2950d
Show file tree
Hide file tree
Showing 43 changed files with 775 additions and 787 deletions.
21 changes: 15 additions & 6 deletions .editorconfig
Original file line number Diff line number Diff line change
@@ -1,11 +1,20 @@
root = true

[*]
end_of_line=lf
charset=utf-8
indent_style = space
indent_size = 4
charset = utf-8
trim_trailing_whitespace = true
insert_final_newline = true
indent_size=4
insert_final_newline=true
trim_trailing_whitespace=true

[*.{kt, kts}]
ij_kotlin_imports_layout = *
[*.{kt,kts}]
ij_kotlin_allow_trailing_comma=true
ij_kotlin_allow_trailing_comma_on_call_site=true
ij_kotlin_imports_layout=*

[*.yaml]
indent_style = space

[*.md]
indent_style = space
8 changes: 8 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
@@ -1,5 +1,13 @@
## 版本日志

#### v1.2.0:2024-12-6
* 代码全部改为使用`kotlin`
* 更新Gradle至v8.0
* 更新compileSdk至32
* 提升minSdk至21
* 新增`CoilImageLoader`
* 新增全局设置图片加载器函数 `ImageViewer.setGlobalDefaultImageLoader(imageLoader)`

#### v1.1.0:2023-9-16
* 更新Gradle至v7.3.3
* 更新compileSdk至30
Expand Down
58 changes: 37 additions & 21 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@
[![MavenCentral](https://img.shields.io/maven-central/v/com.github.jenly1314/imageviewer)](https://repo1.maven.org/maven2/com/github/jenly1314/imageviewer)
[![JitPack](https://jitpack.io/v/jenly1314/ImageViewer.svg)](https://jitpack.io/#jenly1314/ImageViewer)
[![CircleCI](https://circleci.com/gh/jenly1314/ImageViewer.svg?style=svg)](https://circleci.com/gh/jenly1314/ImageViewer)
[![API](https://img.shields.io/badge/API-16%2B-blue.svg?style=flat)](https://android-arsenal.com/api?level=16)
[![API](https://img.shields.io/badge/API-21%2B-blue.svg?style=flat)](https://android-arsenal.com/api?level=21)
[![License](https://img.shields.io/badge/license-MIT-blue.svg)](https://opensource.org/licenses/mit-license.php)

ImageViewer for Android 是一个图片查看器,一般用来查看图片详情或查看大图时使用。
Expand Down Expand Up @@ -34,7 +34,7 @@ ImageViewer for Android 是一个图片查看器,一般用来查看图片详
2. 在Module的 **build.gradle** 里面添加引入依赖项
```gradle
implementation 'com.github.jenly1314:imageviewer:1.1.0'
implementation 'com.github.jenly1314:imageviewer:1.2.0'
```
## 使用
Expand All @@ -43,42 +43,50 @@ ImageViewer for Android 是一个图片查看器,一般用来查看图片详
* 使用 **ImageViewer** 时,必须配置一个实现的 **ImageLoader**。
* **ImageViewer** 一次可以查看多张图片或单张图片,支持的类型可以是 **Uri**、 **url** 、 **path** 、 **File**、 **DrawableRes**、 **ImageDataSource** 等。
* **ImageViewer** 一次可以查看多张图片或单张图片,支持的类型可以是 **Uri**、 **url** 、 **filePath** 、 **File**、 **DrawableRes**、 **ImageDataSource** 等。
* 目前内置默认实现 **ImageLoader** 的有 **GlideImageLoader** 和 **PicassoImageLoader** ,二者选其一即可,如果二者不满足您的需求,您也可以自己实现一个 **ImageLoader** 。
* 目前内置默认实现 **ImageLoader** 的有 **CoilImageLoader** 、 **GlideImageLoader** 和 **PicassoImageLoader** ,三者选其一即可,如果以上都不满足您的需求,您也可以自己实现一个 **ImageLoader** 。
* 为了保证 **ImageViewer** 体积最小化,让用户有更多选择的可能性, **ImageViewer** 仅编译时用到了 **Glide** 和 **Picasso** 。
* 为了保证 **ImageViewer** 体积最小化,让用户有更多选择的可能性, **ImageViewer** 仅编译时用到了 **coil** 、**Glide** 和 **Picasso** 。
> 当你使用了 **GlideImageLoader** 时,则需依赖[ **Glide** ](https://github.com/bumptech/glide)库。
> 当你使用了 **CoilImageLoader** 时,则需依赖[coil](https://github.com/coil-kt/coil)库 (v1.2.0新增)
> 当你使用了 **PicassoImageLoader** 时,则需依赖[ **Picasso** ](https://github.com/square/picasso)库。
> 当你使用了 **GlideImageLoader** 时,则需依赖[ **Glide** ](https://github.com/bumptech/glide)库
> 当你使用了 **PicassoImageLoader** 时,则需依赖[ **Picasso** ](https://github.com/square/picasso)库
### 代码示例
示例一:简单调用
```Java
```kotlin
// data 可以多张图片List或单张图片,支持的类型可以是{@link Uri}, {@code url}, {@code path},{@link File}, {@link DrawableRes resId}…等
ImageViewer.load(data)//要加载的图片数据,单张或多张
.imageLoader(new GlideImageLoader())//加载器,imageLoader必须配置,目前内置的有GlideImageLoader或PicassoImageLoader,也可以自己实现
.start(activity,sharedElement);//activity or fragment, 跳转时的共享元素视图
ImageViewer.load(model)//要加载的图片数据,单张或多张
.imageLoader(GlideImageLoader())// 图片加载器,目前内置的有CoilImageLoader、GlideImageLoader和PicassoImageLoader,也可以自己实现
.start(activity,sharedElement)//activity or fragment, 跳转时的共享元素视图
```

示例二:根据需要修改一些配置
```Java
```kotlin

ImageViewer.load(model)//要加载的图片数据,单张或多张
.imageLoader(GlideImageLoader())// 图片加载器,目前内置的有CoilImageLoader、GlideImageLoader和PicassoImageLoader,也可以自己实现
.selection(position)//当前选中位置,默认:0
.showIndicator(true)//是否显示指示器,默认不显示
.theme(R.style.ImageViewerTheme)//设置主题风格,默认:R.style.ImageViewerTheme
.orientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT)//设置屏幕方向,默认:ActivityInfo.SCREEN_ORIENTATION_BEHIND
.start(activity,sharedElement)//activity or fragment, 跳转时的共享元素视图

```

// data 可以多张图片List或单张图片,支持的类型可以是{@link Uri}, {@code url}, {@code path},{@link File}, {@link DrawableRes resId}…等
ImageViewer.load(data)//要加载的图片数据,单张或多张
.selection(position)//当前选中位置,默认:0
.indicator(true)//是否显示指示器,默认不显示
.imageLoader(new GlideImageLoader())//加载器,imageLoader必须配置,目前内置的有GlideImageLoader或PicassoImageLoader,也可以自己实现
.theme(R.style.ImageViewerTheme)//设置主题风格,默认:R.style.ImageViewerTheme
.orientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT)//设置屏幕方向,默认:ActivityInfo.SCREEN_ORIENTATION_BEHIND
.start(activity,sharedElement);//activity or fragment, 跳转时的共享元素视图
特别说明:全局设置默认的图片加载器(v1.2.0新增)

```kotlin
ImageViewer.setGlobalDefaultImageLoader(imageLoader)
```
> 当设置了全局默认的图片加载器后,就可以在使用`ImageViewer`实例时,不用再单独调用`ImageViewer.imageLoader(imageLoader)`去设置图片加载器了。

更多使用详情,请查看[app](app)中的源码使用示例或直接查看 [API帮助文档](https://jenly1314.github.io/ImageViewer/api/)

Expand All @@ -90,6 +98,14 @@ ImageViewer.load(data)//要加载的图片数据,单张或多张

## 版本日志

#### v1.2.0:2024-12-6
* 代码全部改为使用`kotlin`
* 更新Gradle至v8.0
* 更新compileSdk至32
* 提升minSdk至21
* 新增`CoilImageLoader`
* 新增全局设置图片加载器函数 `ImageViewer.setGlobalDefaultImageLoader(imageLoader)`

#### v1.1.0:2023-9-16
* 更新Gradle至v7.3.3
* 更新compileSdk至30
Expand Down
17 changes: 13 additions & 4 deletions app/build.gradle
Original file line number Diff line number Diff line change
@@ -1,4 +1,7 @@
apply plugin: 'com.android.application'
plugins {
id 'com.android.application'
id 'org.jetbrains.kotlin.android'
}

android {
namespace 'com.king.imageviewer.app'
Expand All @@ -24,6 +27,9 @@ android {
sourceCompatibility JavaVersion.VERSION_1_8
targetCompatibility JavaVersion.VERSION_1_8
}
kotlinOptions {
jvmTarget = JavaVersion.VERSION_1_8.toString()
}

lintOptions {
abortOnError false
Expand All @@ -32,16 +38,19 @@ android {
}

dependencies {
testImplementation "junit:junit:$versions.junit"
androidTestImplementation "androidx.test.ext:junit:$versions.android_ext_junit"
androidTestImplementation "androidx.test.espresso:espresso-core:$versions.espresso"

implementation "androidx.appcompat:appcompat:$versions.appcompat"
implementation "androidx.constraintlayout:constraintlayout:$versions.constraintlayout"
testImplementation "junit:junit:$versions.junit"
androidTestImplementation "androidx.test:runner:$versions.runner"
androidTestImplementation "androidx.test.espresso:espresso-core:$versions.espressoCore"

implementation "com.github.bumptech.glide:glide:$versions.glide"
annotationProcessor "com.github.bumptech.glide:compiler:$versions.glide"

implementation "com.squareup.picasso:picasso:$versions.picasso"

implementation "io.coil-kt:coil:$versions.coil"

implementation project(path: ':imageviewer')
}
Binary file modified app/release/app-release.apk
Binary file not shown.
4 changes: 2 additions & 2 deletions app/release/output-metadata.json
Original file line number Diff line number Diff line change
Expand Up @@ -11,8 +11,8 @@
"type": "SINGLE",
"filters": [],
"attributes": [],
"versionCode": 6,
"versionName": "1.1.0",
"versionCode": 7,
"versionName": "1.2.0",
"outputFile": "app-release.apk"
}
],
Expand Down
Original file line number Diff line number Diff line change
@@ -1,27 +1,24 @@
package com.king.imageviewer.app;
package com.king.imageviewer.app

import android.content.Context;
import androidx.test.ext.junit.runners.AndroidJUnit4
import androidx.test.platform.app.InstrumentationRegistry

import androidx.test.platform.app.InstrumentationRegistry;
import androidx.test.ext.junit.runners.AndroidJUnit4;
import org.junit.Test
import org.junit.runner.RunWith

import org.junit.Test;
import org.junit.runner.RunWith;

import static org.junit.Assert.*;
import org.junit.Assert.*

/**
* Instrumented test, which will execute on an Android device.
*
* @see <a href="http://d.android.com/tools/testing">Testing documentation</a>
* See [testing documentation](http://d.android.com/tools/testing).
*/
@RunWith(AndroidJUnit4.class)
public class ExampleInstrumentedTest {
@RunWith(AndroidJUnit4::class)
class ExampleInstrumentedTest {
@Test
public void useAppContext() {
fun useAppContext() {
// Context of the app under test.
Context appContext = InstrumentationRegistry.getInstrumentation().getTargetContext();

assertEquals("com.king.imageviewer.app", appContext.getPackageName());
val appContext = InstrumentationRegistry.getInstrumentation().targetContext
assertEquals("com.king.imageviewer.app", appContext.packageName)
}
}
19 changes: 13 additions & 6 deletions app/src/main/AndroidManifest.xml
Original file line number Diff line number Diff line change
Expand Up @@ -5,28 +5,35 @@
<uses-permission android:name="android.permission.INTERNET" />

<application
android:name=".App"
android:allowBackup="true"
android:icon="@mipmap/ic_launcher"
android:label="@string/app_name"
android:roundIcon="@mipmap/ic_launcher_round"
android:supportsRtl="true"
android:theme="@style/AppTheme">
<activity android:name=".MainActivity">
<activity
android:name=".MainActivity"
android:exported="true">
<intent-filter>
<action android:name="android.intent.action.MAIN" />

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

<activity android:name=".PhotoActivity"
<activity
android:name=".PhotoActivity"
android:configChanges="keyboardHidden|orientation|screenSize"
android:screenOrientation="portrait"/>
android:screenOrientation="portrait"
android:exported="false"/>

<activity android:name=".PhotoListActivity"
<activity
android:name=".PhotoListActivity"
android:configChanges="keyboardHidden|orientation|screenSize"
android:screenOrientation="portrait"/>
android:screenOrientation="portrait"
android:exported="false"/>

</application>

</manifest>
</manifest>
20 changes: 20 additions & 0 deletions app/src/main/java/com/king/imageviewer/app/App.kt
Original file line number Diff line number Diff line change
@@ -0,0 +1,20 @@
package com.king.imageviewer.app

import android.app.Application
import com.king.image.imageviewer.ImageViewer
import com.king.image.imageviewer.loader.GlideImageLoader

/**
* @author <a href="mailto:jenly1314@gmail.com">Jenly</a>
* <p>
* <a href="https://github.com/jenly1314">Follow me</a>
*/
class App : Application() {

override fun onCreate() {
super.onCreate()

// 设置全局默认的图片加载器
ImageViewer.setGlobalDefaultImageLoader(GlideImageLoader())
}
}
62 changes: 22 additions & 40 deletions app/src/main/java/com/king/imageviewer/app/MainActivity.kt
Original file line number Diff line number Diff line change
@@ -1,54 +1,36 @@
package com.king.imageviewer.app;
package com.king.imageviewer.app

import android.content.Intent;
import android.net.Uri;
import android.os.Bundle;
import android.view.View;

import com.king.image.imageviewer.ImageViewer;
import com.king.image.imageviewer.loader.GlideImageLoader;
import com.king.image.imageviewer.loader.ImageLoader;
import com.king.image.imageviewer.loader.PicassoImageLoader;

import java.io.File;

import androidx.annotation.DrawableRes;
import androidx.appcompat.app.AppCompatActivity;
import android.content.Intent
import android.os.Bundle
import android.view.View
import androidx.appcompat.app.AppCompatActivity
import com.king.image.imageviewer.ImageViewer
import com.king.image.imageviewer.ImageViewerSpec
import com.king.image.imageviewer.loader.GlideImageLoader

/**
* ImageViewer 是一个图片查看器。一般用来查看图片详情或查看大图时使用。
*
* {@link ImageViewer} 支持加载{@link Uri}, {@code url}, {@code path},{@link File}, {@link DrawableRes resId}…等
* 如果使用{@link GlideImageLoader}会支持的类型会更多。
* 使用{@link ImageViewer}时,必须配置一个实现的{@link ImageLoader}。
* 目前内置默认实现的{@link ImageLoader}有{@link GlideImageLoader} 和{@link PicassoImageLoader}
* 如果不满足您的需求,您也可以自己实现一个{@link ImageLoader}
* ImageViewer 示例
*
* @author <a href="mailto:jenly1314@gmail.com">Jenly</a>
* <p>
* <a href="https://github.com/jenly1314">Follow me</a>
*/
public class MainActivity extends AppCompatActivity {

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
class MainActivity : AppCompatActivity() {

override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_main)
}

private void startActivity(Class<?> cls){
Intent intent = new Intent(this,cls);
startActivity(intent);
private fun startActivity(cls: Class<*>) {
val intent = Intent(this, cls)
startActivity(intent)
}

public void onClick(View v){
switch (v.getId()){
case R.id.btn1:
startActivity(PhotoActivity.class);
break;
case R.id.btn2:
startActivity(PhotoListActivity.class);
break;
fun onClick(v: View) {
when (v.id) {
R.id.btn1 -> startActivity(PhotoActivity::class.java)
R.id.btn2 -> startActivity(PhotoListActivity::class.java)
}

}
}
Loading

0 comments on commit 6e2950d

Please sign in to comment.