Skip to content

Commit 3e53583

Browse files
authored
Merge pull request #77 from rosuH/dev
Bump version to 2.2.0
2 parents 17a5513 + da8c8fa commit 3e53583

51 files changed

Lines changed: 1293 additions & 1036 deletions

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

.idea/codeStyles/codeStyleConfig.xml

Lines changed: 0 additions & 5 deletions
This file was deleted.

README.md

Lines changed: 29 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -39,27 +39,32 @@ Securely, easily add a watermark to your sensitive photos.</br>To prevent them f
3939
> Seriously (pushes up glasses)
4040
4141
- **Security**.
42-
- The code is completely open source and uses a loose MIT protocol, you are free to Fork yourself to modify and remove code you think is problematic ;)
43-
- No network requests, no network request permissions, no fear of your photos being compromised. users with API >= 29 don't even need to request any permissions. (28 and below users need to apply for storage permissions to access and store photos)
44-
- And of course there are no stats, buried points or Device IDs, or even crash reporting (so if you get a crash, please share the crash info with us >_<).
45-
- We're forgoing the convenient third-party collection SDK and various stats just so you can use it with confidence.
46-
**What's yours is yours**.
47-
- **Layout**: support for horizontal and vertical intervals between the watermark, automatically repeat the full picture.
48-
- **Style**: font color, transparency, size and rotation angle can be adjusted.
49-
- **Content**: Support text watermark and image watermark.
42+
- The code is completely open source and feel free to FORK your won, ;)
43+
- Pure offline, no need to worry about your photos being leaked. Users with API >= 29 don't even
44+
need to request any permissions. (28 and below users need to approve for storage permissions to
45+
access and store photos)
46+
- There are no stats, tracking, Device IDs, or even crash reporting (so if you got a crash, please
47+
share the crash info with us >_<).
48+
- We've given up all third-party tracking SDK and various stats just so you can use it with
49+
confidence.
50+
**What's yours is yours**.
51+
- **Layout**: support for horizontal and vertical intervals between the watermark, automatically
52+
repeat the full picture.
53+
- **Style**: font color, font style, transparency, font size, and rotation angle are included.
54+
- **Content**: Support text watermark and image watermark (or says stickers).
5055

5156
## Download
5257

5358
Developer-led download channels:
5459
- [Github Release](https://github.com/rosuH/EasyWatermark/releases): Always stay up to date!
5560
- [Google Play](https://play.google.com/store/apps/details?id=me.rosuh.easywatermark)
56-
- ⚠️Note: this version charges but the code is identical, so if you'd like to buy the author a cup of tea🍵 then go here and download it, otherwise please choose another source :)
61+
- 🍺 Noted: the paid version, the same code. Try it if you want to buy me a cup of tea 🍵.
5762
- [F-Droid](https://f-droid.org/packages/me.rosuh.easywatermark/)
5863
- [Coolapk](https://www.coolapk.com/apk/272743)
5964

6065
All other channels are not developer-driven, so please screen them carefully before downloading and using them.
6166

62-
## Use
67+
## How to ?
6368
You can use it however you want. It is more suitable for situations where you need to submit a photo ID, a hand-held photo ID or a sensitive photo. Example.
6469
- Various real names in the country, uploading front and back photos of ID cards at every turn, even handheld ID photos.
6570
- Pre-project previews, samples, copyrighted or simply spoofed images
@@ -74,21 +79,28 @@ You can turn down the transparency, just don't block the key information.
7479
> Even if it's (probably) useless in the end, at least you can disgust the leaker a bit.
7580
7681
## UI
77-
- Designed by renowned UI guru [@tovi](https://www.figma.com/@tovi) (👏🤪)
78-
- Anything you think doesn't work well is my UI restore that doesn't work, and has nothing to do with the UI draft. xD
82+
83+
- Designed by [@tovi](https://www.figma.com/@tovi) with ❤️.
84+
- Any UI or UX you think doesn't great well is my coding issue, and has nothing to do with the UI
85+
draft. xD
7986

8087
> This app was designed by [@tovi](https://www.figma.com/@tovi), so all rights to the UI and related design resources belong to him and may not be used without permission from any person or organization.
8188
8289
## Credit
90+
8391
- [daniel-stonuk/material-about-library](https://github.com/daniel-stoneuk/material-about-library)
8492
- [skydoves/ColorPickerView](https://github.com/skydoves/ColorPickerView)
8593
- [material-components/material-components-android](https://github.com/material-components/material-components-android)
8694
- [Compressor](https://github.com/zetbaitsu/Compressor/)
87-
- Sample Photo by Deepak Nautiyal on [Unsplash](https://unsplash.com/s/photos/animals?utm_source=unsplash&utm_medium=referral&utm_content=creditCopyText)
95+
- Sample Photo by Deepak Nautiyal
96+
on [Unsplash](https://unsplash.com/s/photos/animals?utm_source=unsplash&utm_medium=referral&utm_content=creditCopyText)
8897

8998
## Feedback and contribution
90-
We welcome your comments and suggestions in the issues section, or you can contribute your code by submitting a PR directly to us.
91-
Of course, you can also contact the developer directly via telegram or email and we'll get back to you shortly.
9299

93-
## Privacy policy
94-
[Privacy policy](https://github.com/rosuH/EasyWatermark/blob/master/PrivacyPolicy.md)
100+
We welcome your comments and suggestions in the issues section, or you can contribute your code by
101+
submitting a PR directly to us. Of course, you can also contact the developer directly via telegram
102+
or email and we'll get back to you shortly.
103+
104+
## [Privacy policy](https://github.com/rosuH/EasyWatermark/blob/master/PrivacyPolicy.md)
105+
106+
If you really need it.

README_zh-CN.md

Lines changed: 11 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -42,21 +42,21 @@
4242
- 当然也没有统计、埋点和 Device ID,甚至没有崩溃上报(所以如果遇到崩溃,麻烦和我们分享一下崩溃信息吧 >_<)。
4343
- 我们放弃方便的第三方采集 SDK 以及各种统计信息,就是为了让你能放心地使用。**你的就是你的。**
4444
- **布局**:支持水印间的横竖间隔,自动重复铺满整张图片。
45-
- **样式**:字体颜色、透明度、大小和旋转角度都可以调节。
45+
- **样式**:字体颜色、文本样式、透明度、大小和旋转角度都可以调节。
4646
- **内容**:支持文字水印和图片水印。
4747

4848
## 下载
4949

5050
开发者所主导的下载渠道:
5151
- [Github Release](https://github.com/rosuH/EasyWatermark/releases):永远保持最新
5252
- [Google Play](https://play.google.com/store/apps/details?id=me.rosuh.easywatermark)
53-
- ⚠️注意:此版本收费,但是代码完全一致,所以如果您愿意请作者喝一杯茶(或者您比较任性),那么请去此下载,否则请选择其他渠道:)
53+
- 🍺 注意:收费版,但代码一致,如果您愿意请作者喝一杯茶(或者您比较任性),那么请去此下载,否则请选择其他渠道:)
5454
- [F-Droid](https://f-droid.org/packages/me.rosuh.easywatermark/)
5555
- [酷安](https://www.coolapk.com/apk/272743)
5656

5757
其他渠道均非开发者所主导,请仔细甄别后下载使用。
5858

59-
## 使用
59+
## 如何使用?
6060
你想怎么用就怎么用。比较适合于需要提交证件照、手持证件照或敏感照片等情况。例如:
6161
- 国内各种实名制,动不动就上传身份证正反照片,甚至是手持证件照。
6262
- 项目前期预览图、小样、版权或单纯的恶搞图片
@@ -78,15 +78,18 @@
7878
7979
## 开源许可
8080
使用到的第三方库:
81+
8182
- [daniel-stoneuk/material-about-library](https://github.com/daniel-stoneuk/material-about-library)
8283
- [skydoves/ColorPickerView](https://github.com/skydoves/ColorPickerView)
8384
- [material-components/material-components-android](https://github.com/material-components/material-components-android)
8485
- [Compressor](https://github.com/zetbaitsu/Compressor/)
85-
- 示例图片来自 Jeremy Bishop on [Unsplash](https://unsplash.com/s/photos/animals?utm_source=unsplash&utm_medium=referral&utm_content=creditCopyText)
86+
- 示例图片来自 Jeremy Bishop
87+
on [Unsplash](https://unsplash.com/s/photos/animals?utm_source=unsplash&utm_medium=referral&utm_content=creditCopyText)
8688

8789
## 反馈与贡献
88-
我们非常欢迎您在 issues 区发表您任何意见与建议,或者直接提交 PR 以贡献您的代码。
89-
当然您也可以直接联系开发者的 Telegram 或邮件,我们将择期回复。
9090

91-
## 隐私政策
92-
[隐私政策](https://github.com/rosuH/EasyWatermark/blob/master/PrivacyPolicy_zh-CN.md)
91+
我们非常欢迎您在 issues 区发表您任何意见与建议,或者直接提交 PR 以贡献您的代码。 当然您也可以直接联系开发者的 Telegram 或邮件,我们将择期回复。
92+
93+
## [隐私政策](https://github.com/rosuH/EasyWatermark/blob/master/PrivacyPolicy_zh-CN.md)
94+
95+
如果你需要的话。

app/build.gradle.kts

Lines changed: 23 additions & 32 deletions
Original file line numberDiff line numberDiff line change
@@ -2,30 +2,26 @@ import ProductFlavors.coolApk
22
import ProductFlavors.github
33
import ProductFlavors.googlePlay
44
import ProductFlavors.others
5-
import org.jetbrains.kotlin.gradle.tasks.KotlinCompile
65

76
plugins {
87
id("com.android.application")
98
id("kotlin-android")
109
id("kotlin-parcelize")
11-
id("com.github.ben-manes.versions")
1210
}
1311

1412
android {
15-
compileSdkVersion(Apps.compileSdk)
16-
buildToolsVersion(Apps.buildTools)
17-
ndkVersion = "21.3.6528147"
13+
compileSdk = (Apps.compileSdk)
14+
buildToolsVersion = (Apps.buildTools)
1815
defaultConfig {
1916
applicationId = "me.rosuh.easywatermark"
20-
minSdkVersion(Apps.minSdk)
21-
targetSdkVersion(Apps.targetSdk)
22-
versionCode = 20100
23-
versionName = "2.1.0"
17+
minSdk = (Apps.minSdk)
18+
targetSdk = (Apps.targetSdk)
19+
versionCode = 20200
20+
versionName = "2.2.0"
2421
testInstrumentationRunner = "androidx.test.runner.AndroidJUnitRunner"
2522
}
2623

2724
buildTypes {
28-
2925
getByName(BuildTypes.Debug) {
3026
isMinifyEnabled = false
3127
applicationIdSuffix = ".${BuildTypes.Debug}"
@@ -41,22 +37,20 @@ android {
4137
"coroutines.pro", "proguard-rules.pro"
4238
)
4339
}
44-
}
45-
46-
flavorDimensions("version")
4740

48-
productFlavors {
49-
create(googlePlay)
50-
create(github)
51-
create(coolApk)
52-
create(others) {
53-
isDefault = true
41+
productFlavors {
42+
flavorDimensions.add("version")
43+
create(googlePlay)
44+
create(github)
45+
create(coolApk)
46+
create(others)
5447
}
5548
}
5649

50+
5751
compileOptions {
58-
sourceCompatibility = JavaVersion.VERSION_1_8
59-
targetCompatibility = JavaVersion.VERSION_1_8
52+
sourceCompatibility(JavaVersion.VERSION_11)
53+
targetCompatibility(JavaVersion.VERSION_11)
6054
}
6155

6256
applicationVariants.all {
@@ -69,16 +63,13 @@ android {
6963
}
7064

7165
packagingOptions {
72-
exclude("DebugProbesKt.bin")
66+
resources.excludes.add("DebugProbesKt.bin")
7367
}
7468

7569
android.buildFeatures.viewBinding = true
7670

77-
}
78-
79-
tasks.withType<KotlinCompile> {
8071
kotlinOptions {
81-
jvmTarget = "1.8"
72+
jvmTarget = "11"
8273
}
8374
}
8475

@@ -88,19 +79,19 @@ dependencies {
8879
implementation("androidx.appcompat:appcompat:1.4.0-alpha02")
8980
implementation("id.zelory:compressor:3.0.1")
9081
implementation("com.github.daniel-stoneuk:material-about-library:3.1.2")
91-
implementation("com.google.android.material:material:1.3.0")
82+
implementation("com.google.android.material:material:1.4.0")
9283
implementation("androidx.fragment:fragment-ktx:1.4.0-alpha02")
93-
implementation("androidx.activity:activity-ktx:1.3.0-beta01")
84+
implementation("androidx.activity:activity-ktx:1.3.1")
9485
implementation("org.jetbrains.kotlinx:kotlinx-coroutines-android:1.5.0")
95-
implementation("org.jetbrains.kotlinx:kotlinx-coroutines-core:1.5.0")
86+
implementation("org.jetbrains.kotlinx:kotlinx-coroutines-core:1.5.1")
9687
implementation("androidx.lifecycle:lifecycle-livedata-ktx:2.3.1")
9788
implementation("androidx.lifecycle:lifecycle-viewmodel-ktx:2.3.1")
9889
implementation("com.github.skydoves:colorpickerview:2.2.3")
9990
implementation("androidx.viewpager2:viewpager2:1.0.0")
10091
implementation("androidx.recyclerview:recyclerview:1.2.1")
101-
implementation("androidx.constraintlayout:constraintlayout:2.1.0-beta02")
102-
implementation("org.jetbrains.kotlin:kotlin-stdlib:1.5.20")
103-
implementation("androidx.exifinterface:exifinterface:1.3.2")
92+
implementation("androidx.constraintlayout:constraintlayout:2.1.0")
93+
implementation("org.jetbrains.kotlin:kotlin-stdlib:1.5.21")
94+
implementation("androidx.exifinterface:exifinterface:1.3.3")
10495
implementation("androidx.palette:palette-ktx:1.0.0")
10596

10697
testImplementation("junit:junit:4.12")

app/src/main/AndroidManifest.xml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -23,6 +23,7 @@
2323
android:configChanges="orientation|keyboardHidden"
2424
android:screenOrientation="portrait"
2525
android:launchMode="singleTask"
26+
android:exported="true"
2627
android:windowSoftInputMode="stateAlwaysHidden|adjustPan">
2728
<intent-filter>
2829
<action android:name="android.intent.action.MAIN" />

app/src/main/java/me/rosuh/easywatermark/MyApp.kt

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@ import android.content.Intent
77
import android.content.SharedPreferences
88
import android.util.Log
99
import androidx.core.content.edit
10+
import kotlinx.coroutines.*
1011
import me.rosuh.easywatermark.model.UserConfig
1112
import me.rosuh.easywatermark.model.WaterMarkConfig
1213
import kotlin.system.exitProcess

app/src/main/java/me/rosuh/easywatermark/adapter/ColorPreviewAdapter.kt

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@ import android.view.View
66
import android.view.ViewGroup
77
import androidx.recyclerview.widget.RecyclerView
88
import me.rosuh.easywatermark.R
9-
import me.rosuh.easywatermark.base.BaseVideHolder
9+
import me.rosuh.easywatermark.base.BaseViewHolder
1010
import me.rosuh.easywatermark.widget.SelectableImageView
1111

1212
class ColorPreviewAdapter(
@@ -57,7 +57,7 @@ class ColorPreviewAdapter(
5757
notifyDataSetChanged()
5858
}
5959

60-
internal class PreviewHolder(root: View) : BaseVideHolder(root) {
60+
internal class PreviewHolder(root: View) : BaseViewHolder(root) {
6161
val siv: SelectableImageView = root.findViewById(R.id.siv_color)
6262
}
6363

app/src/main/java/me/rosuh/easywatermark/adapter/DividerAdapter.kt

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@ import android.view.View
55
import android.view.ViewGroup
66
import androidx.recyclerview.widget.RecyclerView
77
import me.rosuh.easywatermark.R
8-
import me.rosuh.easywatermark.base.BaseVideHolder
8+
import me.rosuh.easywatermark.base.BaseViewHolder
99

1010
class DividerAdapter(
1111
private val dividerSize: Int = 1
@@ -26,5 +26,5 @@ class DividerAdapter(
2626

2727
override fun onBindViewHolder(holder: RecyclerView.ViewHolder, position: Int) {}
2828

29-
internal class DividerHolder(val root: View) : BaseVideHolder(root)
29+
internal class DividerHolder(val root: View) : BaseViewHolder(root)
3030
}

app/src/main/java/me/rosuh/easywatermark/adapter/FuncPanelAdapter.kt

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,7 @@ import android.widget.TextView
88
import androidx.core.content.ContextCompat
99
import androidx.recyclerview.widget.RecyclerView
1010
import me.rosuh.easywatermark.R
11+
import me.rosuh.easywatermark.base.BaseViewHolder
1112
import me.rosuh.easywatermark.model.FuncTitleModel
1213

1314
class FuncPanelAdapter(
@@ -89,7 +90,7 @@ class FuncPanelAdapter(
8990
notifyDataSetChanged()
9091
}
9192

92-
class FuncTitleHolder(view: View) : RecyclerView.ViewHolder(view) {
93+
class FuncTitleHolder(view: View) : BaseViewHolder(view) {
9394
val tvTitle: TextView = view.findViewById(R.id.tv_title)
9495
val ivIcon: ImageView = view.findViewById(R.id.iv_icon)
9596
}

app/src/main/java/me/rosuh/easywatermark/adapter/TextPaintStyleAdapter.kt

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@ import android.widget.TextView
88
import androidx.core.content.ContextCompat
99
import androidx.recyclerview.widget.RecyclerView
1010
import me.rosuh.easywatermark.R
11-
import me.rosuh.easywatermark.base.BaseVideHolder
11+
import me.rosuh.easywatermark.base.BaseViewHolder
1212
import me.rosuh.easywatermark.model.TextPaintStyle
1313

1414
class TextPaintStyleAdapter(
@@ -83,7 +83,7 @@ class TextPaintStyleAdapter(
8383
notifyItemChanged(selectedPos, "Selected")
8484
}
8585

86-
internal class TypefaceHolder(val root: View) : BaseVideHolder(root) {
86+
internal class TypefaceHolder(val root: View) : BaseViewHolder(root) {
8787
val tvPreview: TextView by lazy { root.findViewById(R.id.tv_preview) }
8888
val tvTitle: TextView? by lazy { root.findViewById(R.id.tv_title) }
8989
}

0 commit comments

Comments
 (0)