From 6c6db6d962fac994c8d2a70b96c404d387597b4b Mon Sep 17 00:00:00 2001 From: frendyxzc Date: Mon, 4 Sep 2017 12:17:29 +0800 Subject: [PATCH] first commit --- .gitignore | 8 + app/.gitignore | 1 + app/build.gradle | 38 + app/proguard-rules.pro | 25 + .../demosnack/ExampleInstrumentedTest.java | 26 + app/src/main/AndroidManifest.xml | 21 + .../java/vip/frendy/demosnack/MainActivity.kt | 86 ++ .../res/drawable/ic_android_green_24dp.xml | 9 + app/src/main/res/layout/activity_main.xml | 109 +++ app/src/main/res/mipmap-xhdpi/ic_core.png | Bin 0 -> 13593 bytes app/src/main/res/mipmap-xhdpi/ic_launcher.png | Bin 0 -> 4842 bytes .../res/mipmap-xhdpi/ic_launcher_round.png | Bin 0 -> 6114 bytes .../main/res/mipmap-xxhdpi/ic_launcher.png | Bin 0 -> 7718 bytes .../res/mipmap-xxhdpi/ic_launcher_round.png | Bin 0 -> 10056 bytes .../main/res/mipmap-xxxhdpi/ic_launcher.png | Bin 0 -> 10486 bytes .../res/mipmap-xxxhdpi/ic_launcher_round.png | Bin 0 -> 14696 bytes app/src/main/res/values/colors.xml | 6 + app/src/main/res/values/strings.xml | 3 + app/src/main/res/values/styles.xml | 11 + .../vip/frendy/demosnack/ExampleUnitTest.java | 17 + build.gradle | 27 + gradle.properties | 17 + gradle/wrapper/gradle-wrapper.jar | Bin 0 -> 53636 bytes gradle/wrapper/gradle-wrapper.properties | 6 + gradlew | 160 ++++ gradlew.bat | 90 ++ settings.gradle | 1 + snackbar/.gitignore | 1 + snackbar/build.gradle | 32 + snackbar/proguard-rules.pro | 25 + snackbar/src/main/AndroidManifest.xml | 5 + .../vip/frendy/snackbar/AnimationUtils.java | 42 + .../java/vip/frendy/snackbar/Snackbar.java | 837 ++++++++++++++++++ .../vip/frendy/snackbar/SnackbarManager.java | 238 +++++ snackbar/src/main/res/anim/top_in.xml | 7 + snackbar/src/main/res/anim/top_out.xml | 7 + .../src/main/res/layout/tsnackbar_layout.xml | 22 + .../res/layout/tsnackbar_layout_include.xml | 50 ++ snackbar/src/main/res/values/strings.xml | 3 + 39 files changed, 1930 insertions(+) create mode 100644 .gitignore create mode 100644 app/.gitignore create mode 100644 app/build.gradle create mode 100644 app/proguard-rules.pro create mode 100644 app/src/androidTest/java/vip/frendy/demosnack/ExampleInstrumentedTest.java create mode 100644 app/src/main/AndroidManifest.xml create mode 100644 app/src/main/java/vip/frendy/demosnack/MainActivity.kt create mode 100644 app/src/main/res/drawable/ic_android_green_24dp.xml create mode 100644 app/src/main/res/layout/activity_main.xml create mode 100644 app/src/main/res/mipmap-xhdpi/ic_core.png create mode 100644 app/src/main/res/mipmap-xhdpi/ic_launcher.png create mode 100644 app/src/main/res/mipmap-xhdpi/ic_launcher_round.png create mode 100644 app/src/main/res/mipmap-xxhdpi/ic_launcher.png create mode 100644 app/src/main/res/mipmap-xxhdpi/ic_launcher_round.png create mode 100644 app/src/main/res/mipmap-xxxhdpi/ic_launcher.png create mode 100644 app/src/main/res/mipmap-xxxhdpi/ic_launcher_round.png create mode 100644 app/src/main/res/values/colors.xml create mode 100644 app/src/main/res/values/strings.xml create mode 100644 app/src/main/res/values/styles.xml create mode 100644 app/src/test/java/vip/frendy/demosnack/ExampleUnitTest.java create mode 100644 build.gradle create mode 100644 gradle.properties create mode 100644 gradle/wrapper/gradle-wrapper.jar create mode 100644 gradle/wrapper/gradle-wrapper.properties create mode 100644 gradlew create mode 100644 gradlew.bat create mode 100644 settings.gradle create mode 100644 snackbar/.gitignore create mode 100644 snackbar/build.gradle create mode 100644 snackbar/proguard-rules.pro create mode 100644 snackbar/src/main/AndroidManifest.xml create mode 100644 snackbar/src/main/java/vip/frendy/snackbar/AnimationUtils.java create mode 100644 snackbar/src/main/java/vip/frendy/snackbar/Snackbar.java create mode 100644 snackbar/src/main/java/vip/frendy/snackbar/SnackbarManager.java create mode 100644 snackbar/src/main/res/anim/top_in.xml create mode 100644 snackbar/src/main/res/anim/top_out.xml create mode 100644 snackbar/src/main/res/layout/tsnackbar_layout.xml create mode 100644 snackbar/src/main/res/layout/tsnackbar_layout_include.xml create mode 100644 snackbar/src/main/res/values/strings.xml diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..ae3f416 --- /dev/null +++ b/.gitignore @@ -0,0 +1,8 @@ +*.iml +.gradle +.idea +/local.properties +.DS_Store +/build +/captures +.externalNativeBuild diff --git a/app/.gitignore b/app/.gitignore new file mode 100644 index 0000000..796b96d --- /dev/null +++ b/app/.gitignore @@ -0,0 +1 @@ +/build diff --git a/app/build.gradle b/app/build.gradle new file mode 100644 index 0000000..798f3b5 --- /dev/null +++ b/app/build.gradle @@ -0,0 +1,38 @@ +apply plugin: 'com.android.application' +apply plugin: 'kotlin-android' +apply plugin: 'kotlin-android-extensions' + +android { + compileSdkVersion 25 + buildToolsVersion "25.0.0" + defaultConfig { + applicationId "vip.frendy.demosnack" + minSdkVersion 15 + targetSdkVersion 25 + versionCode 1 + versionName "1.0" + testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner" + } + buildTypes { + release { + minifyEnabled false + proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro' + } + } +} + +dependencies { + compile fileTree(dir: 'libs', include: ['*.jar']) + androidTestCompile('com.android.support.test.espresso:espresso-core:2.2.2', { + exclude group: 'com.android.support', module: 'support-annotations' + }) + compile 'com.android.support:appcompat-v7:25.0.0' + compile 'com.android.support.constraint:constraint-layout:1.0.2' + testCompile 'junit:junit:4.12' + compile "org.jetbrains.kotlin:kotlin-stdlib-jre7:$kotlin_version" + + compile project(':snackbar') +} +repositories { + mavenCentral() +} diff --git a/app/proguard-rules.pro b/app/proguard-rules.pro new file mode 100644 index 0000000..b90fa14 --- /dev/null +++ b/app/proguard-rules.pro @@ -0,0 +1,25 @@ +# Add project specific ProGuard rules here. +# By default, the flags in this file are appended to flags specified +# in C:\Users\iiMedia\AppData\Local\Android\Sdk/tools/proguard/proguard-android.txt +# You can edit the include path and order by changing the proguardFiles +# directive in build.gradle. +# +# For more details, see +# http://developer.android.com/guide/developing/tools/proguard.html + +# Add any project specific keep options here: + +# If your project uses WebView with JS, uncomment the following +# and specify the fully qualified class name to the JavaScript interface +# class: +#-keepclassmembers class fqcn.of.javascript.interface.for.webview { +# public *; +#} + +# Uncomment this to preserve the line number information for +# debugging stack traces. +#-keepattributes SourceFile,LineNumberTable + +# If you keep the line number information, uncomment this to +# hide the original source file name. +#-renamesourcefileattribute SourceFile diff --git a/app/src/androidTest/java/vip/frendy/demosnack/ExampleInstrumentedTest.java b/app/src/androidTest/java/vip/frendy/demosnack/ExampleInstrumentedTest.java new file mode 100644 index 0000000..7d0bab2 --- /dev/null +++ b/app/src/androidTest/java/vip/frendy/demosnack/ExampleInstrumentedTest.java @@ -0,0 +1,26 @@ +package vip.frendy.demosnack; + +import android.content.Context; +import android.support.test.InstrumentationRegistry; +import android.support.test.runner.AndroidJUnit4; + +import org.junit.Test; +import org.junit.runner.RunWith; + +import static org.junit.Assert.*; + +/** + * Instrumentation test, which will execute on an Android device. + * + * @see Testing documentation + */ +@RunWith(AndroidJUnit4.class) +public class ExampleInstrumentedTest { + @Test + public void useAppContext() throws Exception { + // Context of the app under test. + Context appContext = InstrumentationRegistry.getTargetContext(); + + assertEquals("vip.frendy.demosnack", appContext.getPackageName()); + } +} diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml new file mode 100644 index 0000000..1c92de6 --- /dev/null +++ b/app/src/main/AndroidManifest.xml @@ -0,0 +1,21 @@ + + + + + + + + + + + + + + \ No newline at end of file diff --git a/app/src/main/java/vip/frendy/demosnack/MainActivity.kt b/app/src/main/java/vip/frendy/demosnack/MainActivity.kt new file mode 100644 index 0000000..535c663 --- /dev/null +++ b/app/src/main/java/vip/frendy/demosnack/MainActivity.kt @@ -0,0 +1,86 @@ +package vip.frendy.demosnack + +import android.graphics.Color +import android.os.Bundle +import android.support.v7.app.AppCompatActivity +import android.util.Log +import android.view.View +import android.widget.TextView +import kotlinx.android.synthetic.main.activity_main.* +import vip.frendy.snackbar.Snackbar + +class MainActivity : AppCompatActivity() { + + override fun onCreate(savedInstanceState: Bundle?) { + super.onCreate(savedInstanceState) + setContentView(R.layout.activity_main) + + button_example_1.setOnClickListener { + val snackbar = Snackbar.make(relative_layout_main, "Hello from SnackBar 1", Snackbar.LENGTH_LONG) + val snackbarView = snackbar.getView() + snackbarView.setBackgroundColor(Color.parseColor("#4cef5350")) + snackbar.show() + } + + + button_example_2.setOnClickListener { + val snackbar = Snackbar + .make(relative_layout_main, "Had a snack at Snackbar", Snackbar.LENGTH_LONG) + .setAction("Undo", View.OnClickListener { Log.d("Action Button", "onClick triggered") }) + snackbar.setActionTextColor(Color.LTGRAY) + snackbar.addIcon(R.mipmap.ic_core, 200) + val snackbarView = snackbar.getView() + snackbarView.setBackgroundColor(Color.parseColor("#555555")) + (snackbarView.findViewById(R.id.snackbar_text) as TextView).setTextColor(Color.WHITE) + snackbar.show() + } + + + button_example_3.setOnClickListener { + val snackbar = Snackbar + .make(relative_layout_main, "Had a snack at Snackbar", Snackbar.LENGTH_LONG) + .setAction("Action", View.OnClickListener { Log.d("CLICKED Action", "CLIDKED Action") }) + snackbar.setActionTextColor(Color.WHITE) + val snackbarView = snackbar.getView() + snackbarView.setBackgroundColor(Color.parseColor("#0000CC")) + (snackbarView.findViewById(R.id.snackbar_text) as TextView).setTextColor(Color.WHITE) + snackbar.show() + } + + + button_example_4.setOnClickListener { + val snackbar = Snackbar + .make(relative_layout_main, "Had a snack at Snackbar Had a snack at Snackbar Had a snack at Snackbar Had a snack at Snackbar Had a snack at Snackbar Had a snack at Snackbar", Snackbar.LENGTH_LONG) + snackbar.setActionTextColor(Color.WHITE) + val snackbarView = snackbar.getView() + snackbarView.setBackgroundColor(Color.parseColor("#CC00CC")) + (snackbarView.findViewById(R.id.snackbar_text) as TextView).setTextColor(Color.YELLOW) + snackbar.show() + } + + button_example_5.setOnClickListener { + val snackbar = Snackbar + .make(relative_layout_main, "Snacking with VectorDrawable", Snackbar.LENGTH_LONG) + snackbar.setActionTextColor(Color.WHITE) + snackbar.setIconLeft(R.drawable.ic_android_green_24dp, 24F) + val snackbarView = snackbar.getView() + snackbarView.setBackgroundColor(Color.parseColor("#CC00CC")) + (snackbarView.findViewById(R.id.snackbar_text) as TextView).setTextColor(Color.YELLOW) + snackbar.show() + } + + button_example_6.setOnClickListener { + val snackbar = Snackbar + .make(relative_layout_main, "Snacking Left & Right", Snackbar.LENGTH_LONG) + snackbar.setActionTextColor(Color.WHITE) + snackbar.setIconLeft(R.mipmap.ic_core, 24F) //Size in dp - 24 is great! + snackbar.setIconRight(R.drawable.ic_android_green_24dp, 48F) //Resize to bigger dp + snackbar.setIconPadding(8) + snackbar.setMaxWidth(3000) + val snackbarView = snackbar.getView() + snackbarView.setBackgroundColor(Color.parseColor("#CC00CC")) + (snackbarView.findViewById(R.id.snackbar_text) as TextView).setTextColor(Color.YELLOW) + snackbar.show() + } + } +} diff --git a/app/src/main/res/drawable/ic_android_green_24dp.xml b/app/src/main/res/drawable/ic_android_green_24dp.xml new file mode 100644 index 0000000..7773987 --- /dev/null +++ b/app/src/main/res/drawable/ic_android_green_24dp.xml @@ -0,0 +1,9 @@ + + + diff --git a/app/src/main/res/layout/activity_main.xml b/app/src/main/res/layout/activity_main.xml new file mode 100644 index 0000000..74719fd --- /dev/null +++ b/app/src/main/res/layout/activity_main.xml @@ -0,0 +1,109 @@ + + + + + + + + + + + + + +