Skip to content

Commit 02f7b61

Browse files
author
zhaochunyu
committed
fix bug and make it to lib
1 parent e4756c6 commit 02f7b61

30 files changed

+167
-72
lines changed

.idea/gradle.xml

+1
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

app/build.gradle

+1
Original file line numberDiff line numberDiff line change
@@ -23,6 +23,7 @@ android {
2323
}
2424

2525
dependencies {
26+
implementation project(':fancydialog')
2627
implementation fileTree(dir: 'libs', include: ['*.jar'])
2728
implementation"org.jetbrains.kotlin:kotlin-stdlib-jdk8:$kotlin_version"
2829
implementation 'androidx.appcompat:appcompat:1.1.0-alpha03'

app/src/main/AndroidManifest.xml

-1
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,6 @@
33
xmlns:tools="http://schemas.android.com/tools" package="com.zcy.nidavellir.fancydialog">
44

55
<application
6-
android:name=".MyApp"
76
android:icon="@mipmap/ic_launcher"
87
android:label="@string/app_name"
98
android:roundIcon="@mipmap/ic_launcher_round"

app/src/main/java/com/zcy/nidavellir/fancydialog/MainActivity.kt

+1
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@ import android.view.Gravity
66
import android.view.View
77
import android.widget.Toast
88
import androidx.appcompat.app.AppCompatActivity
9+
import com.zcy.fancydialog.*
910

1011
class MainActivity : AppCompatActivity() {
1112

app/src/main/java/com/zcy/nidavellir/fancydialog/MyApp.kt

-50
This file was deleted.

fancydialog/.gitignore

+1
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
/build

fancydialog/build.gradle

+38
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,38 @@
1+
apply plugin: 'com.android.library'
2+
apply plugin: 'kotlin-android-extensions'
3+
apply plugin: 'kotlin-android'
4+
5+
android {
6+
compileSdkVersion 28
7+
8+
defaultConfig {
9+
minSdkVersion 21
10+
targetSdkVersion 28
11+
versionCode 1
12+
versionName "1.0"
13+
14+
testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
15+
16+
}
17+
18+
buildTypes {
19+
release {
20+
minifyEnabled false
21+
proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro'
22+
}
23+
}
24+
25+
}
26+
27+
dependencies {
28+
implementation fileTree(dir: 'libs', include: ['*.jar'])
29+
implementation 'androidx.appcompat:appcompat:1.1.0-alpha03'
30+
implementation 'com.google.android.material:material:1.0.0'
31+
testImplementation 'junit:junit:4.12'
32+
androidTestImplementation 'com.android.support.test:runner:1.0.2'
33+
androidTestImplementation 'com.android.support.test.espresso:espresso-core:3.0.2'
34+
implementation "org.jetbrains.kotlin:kotlin-stdlib-jdk7:$kotlin_version"
35+
}
36+
repositories {
37+
mavenCentral()
38+
}

fancydialog/proguard-rules.pro

+21
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,21 @@
1+
# Add project specific ProGuard rules here.
2+
# You can control the set of applied configuration files using the
3+
# proguardFiles setting in build.gradle.
4+
#
5+
# For more details, see
6+
# http://developer.android.com/guide/developing/tools/proguard.html
7+
8+
# If your project uses WebView with JS, uncomment the following
9+
# and specify the fully qualified class name to the JavaScript interface
10+
# class:
11+
#-keepclassmembers class fqcn.of.javascript.interface.for.webview {
12+
# public *;
13+
#}
14+
15+
# Uncomment this to preserve the line number information for
16+
# debugging stack traces.
17+
#-keepattributes SourceFile,LineNumberTable
18+
19+
# If you keep the line number information, uncomment this to
20+
# hide the original source file name.
21+
#-renamesourcefileattribute SourceFile
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,26 @@
1+
package com.zcy.fancydialog;
2+
3+
import android.content.Context;
4+
import android.support.test.InstrumentationRegistry;
5+
import android.support.test.runner.AndroidJUnit4;
6+
7+
import org.junit.Test;
8+
import org.junit.runner.RunWith;
9+
10+
import static org.junit.Assert.*;
11+
12+
/**
13+
* Instrumented test, which will execute on an Android device.
14+
*
15+
* @see <a href="http://d.android.com/tools/testing">Testing documentation</a>
16+
*/
17+
@RunWith(AndroidJUnit4.class)
18+
public class ExampleInstrumentedTest {
19+
@Test
20+
public void useAppContext() {
21+
// Context of the app under test.
22+
Context appContext = InstrumentationRegistry.getTargetContext();
23+
24+
assertEquals("com.zcy.fancydialog.test", appContext.getPackageName());
25+
}
26+
}
+4
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,4 @@
1+
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
2+
package="com.zcy.fancydialog">
3+
<application android:name=".MyApp"/>
4+
</manifest>

app/src/main/java/com/zcy/nidavellir/fancydialog/AskDialog.kt fancydialog/src/main/java/com/zcy/fancydialog/AskDialog.kt

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
package com.zcy.nidavellir.fancydialog
1+
package com.zcy.fancydialog
22

33
import android.os.Bundle
44
import android.view.Gravity

app/src/main/java/com/zcy/nidavellir/fancydialog/AskMoreDialog.kt fancydialog/src/main/java/com/zcy/fancydialog/AskMoreDialog.kt

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
package com.zcy.nidavellir.fancydialog
1+
package com.zcy.fancydialog
22

33
import android.os.Bundle
44
import android.view.LayoutInflater

app/src/main/java/com/zcy/nidavellir/fancydialog/BaseFragmentDialog.kt fancydialog/src/main/java/com/zcy/fancydialog/BaseFragmentDialog.kt

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
package com.zcy.nidavellir.fancydialog
1+
package com.zcy.fancydialog
22

33
import android.content.Context
44
import android.graphics.Color

app/src/main/java/com/zcy/nidavellir/fancydialog/EditDialog.kt fancydialog/src/main/java/com/zcy/fancydialog/EditDialog.kt

+28-11
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
1-
package com.zcy.nidavellir.fancydialog
1+
package com.zcy.fancydialog
22

3+
import android.content.Context
34
import android.os.Bundle
45
import android.os.Handler
56
import android.os.Looper
@@ -8,7 +9,8 @@ import android.text.TextWatcher
89
import android.view.LayoutInflater
910
import android.view.View
1011
import android.view.ViewGroup
11-
import android.widget.Toast
12+
import android.view.WindowManager
13+
import android.view.inputmethod.InputMethodManager
1214
import androidx.appcompat.widget.AppCompatEditText
1315
import androidx.appcompat.widget.AppCompatTextView
1416
import androidx.fragment.app.FragmentManager
@@ -18,7 +20,6 @@ import androidx.fragment.app.FragmentManager
1820
* @description: 带输入框的Dialog
1921
* @date: 2019/1/2
2022
*/
21-
2223
inline fun editDialog(fragmentManager: FragmentManager, dsl: DSLEditDialog.() -> Unit) {
2324
DSLEditDialog.newInstance().apply(dsl).show(fragmentManager, "dialog")
2425
}
@@ -40,9 +41,16 @@ class DSLEditDialog : BaseFragmentDialog() {
4041
private var leftClicks: (() -> Unit)? = null
4142
private var rightClicks: ((String) -> Unit)? = null
4243

44+
private lateinit var rootView: View
45+
46+
init {
47+
lowerBackground = true
48+
}
49+
4350
private lateinit var edit: AppCompatEditText
4451
override fun setView(inflater: LayoutInflater, container: ViewGroup?, savedInstanceState: Bundle?): View {
4552
val view = inflater.inflate(R.layout.layout_edit_dialog, container, false)
53+
rootView = view
4654
edit = view.findViewById<AppCompatEditText>(R.id.labelEdit)
4755
edit.setText(mDefault)
4856
mHint?.let {
@@ -53,9 +61,7 @@ class DSLEditDialog : BaseFragmentDialog() {
5361
val sure = view.findViewById<AppCompatTextView>(R.id.sure)
5462
val title = view.findViewById<AppCompatTextView>(R.id.title)
5563
val message = view.findViewById<AppCompatTextView>(R.id.desc)
56-
mTitle?.also {
57-
title.text = mTitle
58-
}
64+
title.text = mTitle
5965
mMessage?.let {
6066
message.isVisibility(true)
6167
message.text = it
@@ -77,13 +83,12 @@ class DSLEditDialog : BaseFragmentDialog() {
7783
sure?.isEnabled = true
7884
sure?.alpha = 1F
7985
if (s.length > mMaxLength) {
80-
Toast.makeText(context, "太多了", Toast.LENGTH_SHORT).show()
81-
edit?.let {
86+
edit.let {
8287
val selectionStart = it.selectionStart
8388
val selectionEnd = it.selectionEnd
8489
s.delete(selectionStart - 1, selectionEnd)
8590
it.text = s
86-
it.setSelection(it.text!!.length)
91+
it.setSelection(it.text.toString().length)
8792
return@TAG
8893
}
8994
}
@@ -105,7 +110,7 @@ class DSLEditDialog : BaseFragmentDialog() {
105110

106111
sure.setOnClickListener {
107112
rightClicks?.let { onClick ->
108-
onClick(edit.text!!.trim().toString())
113+
onClick(edit.text.toString().trim())
109114
}
110115
dismiss()
111116
}
@@ -127,12 +132,24 @@ class DSLEditDialog : BaseFragmentDialog() {
127132
rightClicks = onClick
128133
}
129134

135+
override fun dismiss() {
136+
Handler(Looper.getMainLooper()).post { hintPopInput(rootView) }
137+
super.dismiss()
138+
}
139+
140+
private fun hintPopInput(view: View) {
141+
val imm = mContext.getSystemService(Context.INPUT_METHOD_SERVICE) as? InputMethodManager
142+
imm?.hideSoftInputFromWindow(view.windowToken, 2)
143+
activity?.window?.setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_STATE_ALWAYS_HIDDEN)
144+
}
145+
146+
130147
override fun show(manager: FragmentManager, tag: String?) {
131148
Handler(Looper.getMainLooper()).postDelayed({
132149
if (this::edit.isInitialized) {
133150
edit.showSoft()
134151
}
135-
}, 200)
152+
}, 100)
136153
super.show(manager, tag)
137154
}
138155

app/src/main/java/com/zcy/nidavellir/fancydialog/ListDialog.kt fancydialog/src/main/java/com/zcy/fancydialog/ListDialog.kt

+2-3
Original file line numberDiff line numberDiff line change
@@ -1,13 +1,12 @@
1-
package com.zcy.nidavellir.fancydialog
1+
package com.zcy.fancydialog
22

33
import android.os.Bundle
44
import android.view.LayoutInflater
55
import android.view.View
66
import android.view.ViewGroup
7-
import android.widget.LinearLayout
87
import androidx.recyclerview.widget.LinearLayoutManager
98
import androidx.recyclerview.widget.RecyclerView
10-
import com.zcy.nidavellir.fancydialog.list.ListDialogAdapter
9+
import com.zcy.fancydialog.list.ListDialogAdapter
1110

1211
/**
1312
* @author: zhaochunyu
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,19 @@
1+
package com.zcy.fancydialog
2+
3+
import android.app.Application
4+
5+
/**
6+
* @author: zhaochunyu
7+
* @description: application context
8+
* @date: 2019/1/2
9+
*/
10+
class MyApp : Application() {
11+
override fun onCreate() {
12+
super.onCreate()
13+
instance = this
14+
}
15+
16+
companion object {
17+
lateinit var instance: Application
18+
}
19+
}

app/src/main/java/com/zcy/nidavellir/fancydialog/list/ListDialogAdapter.kt fancydialog/src/main/java/com/zcy/fancydialog/list/ListDialogAdapter.kt

+2-2
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,10 @@
1-
package com.zcy.nidavellir.fancydialog.list
1+
package com.zcy.fancydialog.list
22

33
import android.view.LayoutInflater
44
import android.view.View
55
import android.view.ViewGroup
66
import androidx.recyclerview.widget.RecyclerView
7-
import com.zcy.nidavellir.fancydialog.R
7+
import com.zcy.fancydialog.R
88
import kotlinx.android.synthetic.main.item_list_dialog.view.*
99

1010
/**

app/src/main/java/com/zcy/nidavellir/fancydialog/utils.kt fancydialog/src/main/java/com/zcy/fancydialog/utils.kt

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
package com.zcy.nidavellir.fancydialog
1+
package com.zcy.fancydialog
22

33
import android.app.Activity
44
import android.content.Context
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,6 @@
1+
<?xml version="1.0" encoding="utf-8"?>
2+
<resources>
3+
<color name="colorPrimary">#008577</color>
4+
<color name="colorPrimaryDark">#00574B</color>
5+
<color name="colorAccent">#D81B60</color>
6+
</resources>
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
<resources>
2+
<string name="app_name">FancyDialog</string>
3+
<string name="sure">确定</string>
4+
<string name="cancel">取消</string>
5+
</resources>
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,7 @@
1+
<?xml version="1.0" encoding="utf-8"?>
2+
<resources>
3+
<style name="DialogAnimation">
4+
<item name="android:windowEnterAnimation">@anim/activity_anim_bottom_to_top</item>
5+
<item name="android:windowExitAnimation">@anim/activity_anim_top_to_bottom</item>
6+
</style>
7+
</resources>

settings.gradle

+1-1
Original file line numberDiff line numberDiff line change
@@ -1 +1 @@
1-
include ':app'
1+
include ':app', ':fancydialog'

0 commit comments

Comments
 (0)