diff --git a/.idea/caches/build_file_checksums.ser b/.idea/caches/build_file_checksums.ser
index 8d68dff..31c05ff 100644
Binary files a/.idea/caches/build_file_checksums.ser and b/.idea/caches/build_file_checksums.ser differ
diff --git a/.idea/codeStyles/Project.xml b/.idea/codeStyles/Project.xml
deleted file mode 100644
index 30aa626..0000000
--- a/.idea/codeStyles/Project.xml
+++ /dev/null
@@ -1,29 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
\ No newline at end of file
diff --git a/.idea/encodings.xml b/.idea/encodings.xml
new file mode 100644
index 0000000..15a15b2
--- /dev/null
+++ b/.idea/encodings.xml
@@ -0,0 +1,4 @@
+
+
+
+
\ No newline at end of file
diff --git a/apng_library/build.gradle b/apng_library/build.gradle
index 8060cfd..f8bfbf2 100644
--- a/apng_library/build.gradle
+++ b/apng_library/build.gradle
@@ -1,11 +1,12 @@
apply plugin: 'com.android.library'
apply plugin: 'kotlin-android'
+apply plugin: 'kotlin-android-extensions'
android {
- compileSdkVersion 27
+ compileSdkVersion 28
defaultConfig {
minSdkVersion 21
- targetSdkVersion 27
+ targetSdkVersion 28
versionCode 1
versionName "1.0.9"
@@ -22,16 +23,15 @@ android {
sourceCompatibility JavaVersion.VERSION_1_8
targetCompatibility JavaVersion.VERSION_1_8
}
- productFlavors {
- }
}
dependencies {
- implementation 'com.android.support:appcompat-v7:27.1.1'
+ implementation 'com.android.support:appcompat-v7:28.0.0'
+ implementation "org.jetbrains.kotlin:kotlin-stdlib-jdk7:$kotlin_version"
testImplementation 'junit:junit:4.12'
androidTestImplementation 'com.android.support.test:runner:1.0.2'
androidTestImplementation 'com.android.support.test.espresso:espresso-core:3.0.2'
- implementation "org.jetbrains.kotlin:kotlin-stdlib-jdk7:$kotlin_version"
+
implementation "org.jetbrains.anko:anko:$anko_version"
}
diff --git a/apng_library/src/main/java/oupson/apng/APNGDisassembler.kt b/apng_library/src/main/java/oupson/apng/APNGDisassembler.kt
index bfffd30..35f70ecf 100644
--- a/apng_library/src/main/java/oupson/apng/APNGDisassembler.kt
+++ b/apng_library/src/main/java/oupson/apng/APNGDisassembler.kt
@@ -111,8 +111,8 @@ class APNGDisassembler {
throw BadApng("`y_offset` + `height` must be <= `IHDR` height")
}
- png!!.addAll(pngSignature.toList())
- png!!.addAll(generateIhdr(ihdr, width, height).toList())
+ png?.addAll(pngSignature.toList())
+ png?.addAll(generateIhdr(ihdr, width, height).toList())
plte?.let {
png!!.addAll(it.toList())
}
diff --git a/apng_library/src/main/java/oupson/apng/Apng.kt b/apng_library/src/main/java/oupson/apng/Apng.kt
index 179d86e..a5b61cb 100644
--- a/apng_library/src/main/java/oupson/apng/Apng.kt
+++ b/apng_library/src/main/java/oupson/apng/Apng.kt
@@ -147,8 +147,8 @@ class Apng {
res.addAll(generateACTL())
// Get max height and max width
- val maxHeight = frames.sortedByDescending { it.height }[0].height
- val maxWitdh = frames.sortedByDescending { it.width }[0].width
+ maxHeight = frames.sortedByDescending { it.height }[0].height
+ maxWidth = frames.sortedByDescending { it.width }[0].width
if (cover == null) {
val framesByte = ArrayList()
@@ -171,24 +171,8 @@ class Apng {
fcTL.addAll(to4Bytes(frames[0].width).toList())
fcTL.addAll(to4Bytes(frames[0].height).toList())
- // Calculate offset
- if (frames[0].x_offsets == null) {
- if (frames[0].width < maxWitdh) {
- val xOffset = (maxWitdh / 2) - (frames[0].width / 2)
- fcTL.addAll(to4Bytes(xOffset).toList())
- } else {
- fcTL.addAll(to4Bytes(0).toList())
- }
- if (frames[0].height < maxHeight) {
- val xOffset = (maxHeight / 2) - (frames[0].height / 2)
- fcTL.addAll(to4Bytes(xOffset).toList())
- } else {
- fcTL.addAll(to4Bytes(0).toList())
- }
- } else {
- fcTL.addAll(to4Bytes(frames[0].x_offsets).toList())
- fcTL.addAll(to4Bytes(frames[0].y_offsets).toList())
- }
+ fcTL.addAll(to4Bytes(frames[0].x_offsets).toList())
+ fcTL.addAll(to4Bytes(frames[0].y_offsets).toList())
// Set frame delay
fcTL.addAll(to2Bytes(frames[0].delay.toInt()).toList())
@@ -255,24 +239,9 @@ class Apng {
fcTL.addAll(to4Bytes(frames[0].width).toList())
fcTL.addAll(to4Bytes(frames[0].height).toList())
- // Calculate offset
- if (frames[0].x_offsets == null) {
- if (frames[0].width < maxWitdh) {
- val xOffset = (maxWitdh / 2) - (frames[0].width / 2)
- fcTL.addAll(to4Bytes(xOffset).toList())
- } else {
- fcTL.addAll(to4Bytes(0).toList())
- }
- if (frames[0].height < maxHeight) {
- val xOffset = (maxHeight / 2) - (frames[0].height / 2)
- fcTL.addAll(to4Bytes(xOffset).toList())
- } else {
- fcTL.addAll(to4Bytes(0).toList())
- }
- } else {
- fcTL.addAll(to4Bytes(frames[0].x_offsets!!).toList())
- fcTL.addAll(to4Bytes(frames[0].y_offsets!!).toList())
- }
+
+ fcTL.addAll(to4Bytes(frames[0].x_offsets).toList())
+ fcTL.addAll(to4Bytes(frames[0].y_offsets).toList())
// Set frame delay
fcTL.addAll(to2Bytes(frames[0].delay.toInt()).toList())
@@ -326,23 +295,8 @@ class Apng {
fcTL.addAll(to4Bytes(frames[i].width).toList())
fcTL.addAll(to4Bytes(frames[i].height).toList())
- if (frames[i].x_offsets == null) {
- if (frames[i].width < maxWitdh) {
- val xOffset = (maxWitdh / 2) - (frames[i].width / 2)
- fcTL.addAll(to4Bytes(xOffset).toList())
- } else {
- fcTL.addAll(to4Bytes(0).toList())
- }
- if (frames[i].height < maxHeight) {
- val xOffset = (maxHeight / 2) - (frames[i].height / 2)
- fcTL.addAll(to4Bytes(xOffset).toList())
- } else {
- fcTL.addAll(to4Bytes(0).toList())
- }
- } else {
- fcTL.addAll(to4Bytes(frames[i].x_offsets!!).toList())
- fcTL.addAll(to4Bytes(frames[i].y_offsets!!).toList())
- }
+ fcTL.addAll(to4Bytes(frames[i].x_offsets).toList())
+ fcTL.addAll(to4Bytes(frames[i].y_offsets).toList())
// Set frame delay
fcTL.addAll(to2Bytes(frames[i].delay.toInt()).toList())
@@ -504,9 +458,9 @@ class Apng {
val pnn = PnnQuantizer(btm)
val btmOptimised = pnn.convert(maxColor, false)
if (sizePercent != null) {
- apng.addFrames(btmOptimised, it.delay, ((it.x_offsets ?: 0).toFloat() * sizePercent.toFloat() / 100f).toInt(), ((it.y_offsets ?: 0).toFloat() * sizePercent.toFloat() / 100f).toInt(), it.dispose_op, it.blend_op)
+ apng.addFrames(btmOptimised, it.delay, (it.x_offsets.toFloat() * sizePercent.toFloat() / 100f).toInt(), (it.y_offsets.toFloat() * sizePercent.toFloat() / 100f).toInt(), it.dispose_op, it.blend_op)
} else {
- apng.addFrames(btmOptimised, it.delay, it.x_offsets ?: 0, it.y_offsets ?: 0, it.dispose_op, it.blend_op)
+ apng.addFrames(btmOptimised, it.delay, it.x_offsets, it.y_offsets, it.dispose_op, it.blend_op)
}
}
frames = apng.frames
@@ -520,6 +474,7 @@ class Apng {
it.maxHeight = maxHeight
}
val drawedFrame = ApngAnimator(null).draw(frames)
+ File(Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_DOCUMENTS), "frame0.png").writeBytes(PngEncoder.encode(drawedFrame[0]))
for (i in 1 until frames.size) {
val diffCalculator = BitmapDiffCalculator(drawedFrame[i - 1], drawedFrame[i])
File(Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_DOCUMENTS), "frame$i.png").writeBytes(PngEncoder.encode(diffCalculator.res, true))
diff --git a/app-test/build.gradle b/app-test/build.gradle
index 6f75aa5..c51d110 100644
--- a/app-test/build.gradle
+++ b/app-test/build.gradle
@@ -5,11 +5,11 @@ apply plugin: 'kotlin-android'
apply plugin: 'kotlin-android-extensions'
android {
- compileSdkVersion 27
+ compileSdkVersion 28
defaultConfig {
applicationId "oupson.apngcreator"
minSdkVersion 24
- targetSdkVersion 26
+ targetSdkVersion 28
versionCode 1
versionName "1.0"
testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
@@ -48,6 +48,7 @@ dependencies {
implementation 'com.android.support:design:27.1.1' // where X.X.X version
implementation "org.jetbrains.anko:anko-appcompat-v7:$anko_version"
implementation "org.jetbrains.anko:anko-design:$anko_version"
+ implementation "org.jetbrains.anko:anko-constraint-layout:$anko_version"
}
kotlin {
experimental {
diff --git a/app-test/src/androidTest/java/oupson/apngcreator/ExampleInstrumentedTest.kt b/app-test/src/androidTest/java/oupson/apngcreator/ExampleInstrumentedTest.kt
index 3991700..2d70ec6 100644
--- a/app-test/src/androidTest/java/oupson/apngcreator/ExampleInstrumentedTest.kt
+++ b/app-test/src/androidTest/java/oupson/apngcreator/ExampleInstrumentedTest.kt
@@ -2,12 +2,10 @@ package oupson.apngcreator
import android.support.test.InstrumentationRegistry
import android.support.test.runner.AndroidJUnit4
-
+import org.junit.Assert.assertEquals
import org.junit.Test
import org.junit.runner.RunWith
-import org.junit.Assert.*
-
/**
* Instrumented test, which will execute on an Android device.
*
diff --git a/app-test/src/main/java/oupson/apngcreator/CreatorActivity.kt b/app-test/src/main/java/oupson/apngcreator/CreatorActivity.kt
index a601be4..73c441c 100644
--- a/app-test/src/main/java/oupson/apngcreator/CreatorActivity.kt
+++ b/app-test/src/main/java/oupson/apngcreator/CreatorActivity.kt
@@ -2,14 +2,19 @@ package oupson.apngcreator
import android.app.Activity
import android.content.Intent
+import android.content.res.ColorStateList
import android.graphics.Bitmap
import android.graphics.BitmapFactory
+import android.graphics.Color
import android.os.Bundle
import android.os.Environment
import android.support.design.widget.FloatingActionButton
import android.support.v7.app.AppCompatActivity
+import android.text.Html
+import android.view.View
import android.widget.ListView
import org.jetbrains.anko.*
+import org.jetbrains.anko.design.appBarLayout
import org.jetbrains.anko.design.floatingActionButton
import org.jetbrains.anko.sdk27.coroutines.onClick
import oupson.apng.Apng
@@ -22,6 +27,7 @@ class CreatorActivity : AppCompatActivity() {
var bitmapAdapter : AnkoAdapter? = null
val PICK_IMAGE = 999
var view = CreatorActivityLayout()
+
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
view.setContentView(this)
@@ -38,7 +44,7 @@ class CreatorActivity : AppCompatActivity() {
startActivityForResult(chooserIntent, PICK_IMAGE)
}
view.createButton.onClick {
- var apngCreated = Apng()
+ val apngCreated = Apng()
items.forEach { bitmap ->
apngCreated.addFrames(bitmap)
@@ -54,23 +60,16 @@ class CreatorActivity : AppCompatActivity() {
a.load(apngCreated.toByteArray())
a.onLoaded { anim ->
alert {
- customView {
- imageView {
- /**anim.anim?.let {cu ->
- for (i in 0 until cu.numberOfFrames) {
- val vt = Bitmap.createBitmap(cu.getFrame(i).intrinsicWidth, cu.getFrame(i).intrinsicHeight, Bitmap.Config.ARGB_8888)
- val canvas = Canvas(vt)
- cu.getFrame(i).draw(canvas)
- File(Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_DOCUMENTS), "frameCreated$i.png").writeBytes(PngEncoder.encode(vt))
- }
- }
- */
- this.setImageDrawable(anim.anim)
- }
+ customView {
+ ctx.setTheme(R.style.AppTheme_DarkDialog)
+ imageView {
+ this.setImageDrawable(anim.anim)
}
- }.show()
- }
+
+ }
+ }.show()
}
+ }
bitmapAdapter = AnkoAdapter({items}) {index, items, view ->
with(items[index]) {
verticalLayout {
@@ -112,13 +111,39 @@ class CreatorActivityLayout : AnkoComponent {
override fun createView(ui: AnkoContext) = with(ui) {
relativeLayout {
+ backgroundColor = Color.BLACK
+ var bar = verticalLayout {
+ id = View.generateViewId()
+ backgroundColor = Color.DKGRAY
+ appBarLayout {
+ backgroundColor = Color.BLACK
+ toolbar {
+ id = View.generateViewId()
+ title = Html.fromHtml("Create APNG")
+ }.lparams {
+ width = matchParent
+ height = wrapContent
+ }
+ }.lparams {
+ width = matchParent
+ height = wrapContent
+ bottomMargin = 1
+ }
+ }.lparams {
+ width = matchParent
+ height = wrapContent
+ }
+
listView = listView {
+ id = View.generateViewId()
}.lparams {
width = matchParent
height = matchParent
+ below(bar)
}
addFrameButton = floatingActionButton {
- imageResource = R.drawable.ic_add_white_24dp
+ imageResource = R.drawable.ic_add_black_24dp
+ backgroundTintList = ColorStateList.valueOf(Color.WHITE)
isClickable = true
}.lparams {
width = wrapContent
@@ -128,7 +153,8 @@ class CreatorActivityLayout : AnkoComponent {
alignParentEnd()
}
createButton = floatingActionButton {
- imageResource = R.drawable.ic_play_arrow_white_24dp
+ imageResource = R.drawable.ic_play_arrow_black_24dp
+ backgroundTintList = ColorStateList.valueOf(Color.WHITE)
isClickable = true
}.lparams {
width = wrapContent
diff --git a/app-test/src/main/java/oupson/apngcreator/Main2Activity.kt b/app-test/src/main/java/oupson/apngcreator/Main2Activity.kt
index 4a09bca..a00d3c8 100644
--- a/app-test/src/main/java/oupson/apngcreator/Main2Activity.kt
+++ b/app-test/src/main/java/oupson/apngcreator/Main2Activity.kt
@@ -2,21 +2,35 @@ package oupson.apngcreator
import android.Manifest
import android.content.pm.PackageManager
+import android.graphics.Color
import android.os.Bundle
import android.support.v4.app.ActivityCompat
import android.support.v4.content.ContextCompat
import android.support.v7.app.AppCompatActivity
import android.view.View
-import kotlinx.android.synthetic.main.activity_main2.*
+import android.widget.ImageView
+import org.jetbrains.anko.backgroundColor
+import org.jetbrains.anko.imageView
+import org.jetbrains.anko.matchParent
import org.jetbrains.anko.sdk27.coroutines.onClick
+import org.jetbrains.anko.verticalLayout
import oupson.apng.ApngAnimator
class Main2Activity : AppCompatActivity() {
-
+ lateinit var imageView : ImageView
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
- setContentView(R.layout.activity_main2)
+
+ verticalLayout {
+ imageView = imageView {
+
+ }.lparams {
+ width = matchParent
+ height = matchParent
+ }
+ backgroundColor = Color.parseColor("#323232")
+ }
window.decorView.systemUiVisibility = (View.SYSTEM_UI_FLAG_LAYOUT_STABLE
or View.SYSTEM_UI_FLAG_LAYOUT_HIDE_NAVIGATION
or View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN
@@ -38,10 +52,10 @@ class Main2Activity : AppCompatActivity() {
}
fun load() {
- val animator = ApngAnimator(applicationContext).loadInto(imageView3)
+ val animator = ApngAnimator(applicationContext).loadInto(imageView)
val uri = intent.data
animator.load(uri, null)
- imageView3.onClick {
+ imageView.onClick {
try {
if (animator.isPlaying) {
animator.pause()
diff --git a/app-test/src/main/java/oupson/apngcreator/MainActivity.kt b/app-test/src/main/java/oupson/apngcreator/MainActivity.kt
index 05cecba..3806231 100644
--- a/app-test/src/main/java/oupson/apngcreator/MainActivity.kt
+++ b/app-test/src/main/java/oupson/apngcreator/MainActivity.kt
@@ -1,75 +1,181 @@
package oupson.apngcreator
-import android.content.Intent
+import android.graphics.Color
+import android.graphics.drawable.GradientDrawable
import android.os.Bundle
+import android.support.constraint.ConstraintLayout
import android.support.v7.app.AppCompatActivity
+import android.text.Html
import android.util.Log
-import android.view.Menu
-import android.view.MenuItem
-import android.widget.SeekBar
+import android.view.View
+import android.widget.Toolbar
import com.squareup.picasso.Picasso
-import kotlinx.android.synthetic.main.activity_main.*
+import org.jetbrains.anko.*
+import org.jetbrains.anko.constraint.layout.ConstraintSetBuilder
+import org.jetbrains.anko.constraint.layout.applyConstraintSet
+import org.jetbrains.anko.constraint.layout.constraintLayout
+import org.jetbrains.anko.constraint.layout.matchConstraint
+import org.jetbrains.anko.design.appBarLayout
+import org.jetbrains.anko.sdk27.coroutines.onClick
+import org.jetbrains.anko.sdk27.coroutines.onMenuItemClick
+import org.jetbrains.anko.sdk27.coroutines.onSeekBarChangeListener
import oupson.apng.ApngAnimator
class MainActivity : AppCompatActivity() {
- lateinit var animator: ApngAnimator
+
+
+ lateinit var animator: ApngAnimator
+ lateinit var tool : Toolbar
// val imageUrl = "http://oupson.oupsman.fr/apng/bigApng.png"
// val imageUrl = "https://metagif.files.wordpress.com/2015/01/bugbuckbunny.png"
val imageUrl = "http://orig06.deviantart.net/7812/f/2012/233/7/5/twilight_rapidash_shaded_and_animated_by_tamalesyatole-d5bz7hd.png"
// val imageUrl = "https://raw.githubusercontent.com/tinify/iMessage-Panda-sticker/master/StickerPackExtension/Stickers.xcstickers/Sticker%20Pack.stickerpack/panda.sticker/panda.png"
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
- setContentView(R.layout.activity_main)
- animator = ApngAnimator(this).loadInto(imageView).apply {
- load(imageUrl)
- onLoaded {
- setOnAnimationLoopListener {
- // Log.e("app-test", "onLoop")
+ val buttonDrawable = GradientDrawable().apply {
+ shape = GradientDrawable.RECTANGLE
+ cornerRadius = dip(5).toFloat()
+ setStroke(2, Color.WHITE)
+ }
+ verticalLayout {
+ backgroundColor = Color.BLACK
+ verticalLayout {
+ backgroundColor = Color.DKGRAY
+ appBarLayout {
+ backgroundColor = Color.BLACK
+ tool = toolbar {
+ id = View.generateViewId()
+ title = Html.fromHtml("MainActivity")
+ inflateMenu(R.menu.main_menu)
+ onMenuItemClick { item ->
+ Log.e("lll", "Click")
+ when (item!!.itemId) {
+ R.id.action_open_create_activity -> {
+ Log.e("lll", "Click")
+ startActivity()
+ finish()
+ true
+ }
+ else -> false
+ }
+ }
+ }.lparams {
+ width = matchParent
+ height = wrapContent
+ }
+ }.lparams {
+ width = matchParent
+ height = wrapContent
+ bottomMargin = 1
}
+ }.lparams {
+ width = matchParent
+ height = wrapContent
}
+
+
+ constraintLayout {
+ val pauseButton = button("pause") {
+ id = View.generateViewId()
+ background = buttonDrawable
+ onClick {
+ animator.pause()
+ }
+ }.lparams(
+ width = wrapContent,
+ height = wrapContent
+ )
+ val playButton = button("play") {
+ background = buttonDrawable
+ id = View.generateViewId()
+ onClick {
+ animator.play()
+ }
+ }.lparams(
+ width = wrapContent,
+ height = wrapContent
+ )
+ val seekBar = themedSeekBar(R.style.AppTheme_SeekBar){
+ id = View.generateViewId()
+ max = 200
+ progress = 10
+ onSeekBarChangeListener {
+ onProgressChanged { seekBar, progressValue, fromUser -> }
+ onStartTrackingTouch { seekBar -> }
+ onStopTrackingTouch { seekBar ->
+ Log.e("TAG", (seekBar!!.progress.toFloat() / 100f).toString())
+ animator.speed = (seekBar!!.progress.toFloat() / 100f)
+ }
+ }
+ }.lparams(
+ width = matchConstraint,
+ height = wrapContent
+ )
+ val imageView2 = imageView {
+ id = View.generateViewId()
+ Picasso.get().load(imageUrl).into(this)
+ }.lparams(
+ width = matchConstraint,
+ height = matchConstraint
+ )
+ val imageView = imageView {
+ id = View.generateViewId()
+ animator = ApngAnimator(this@MainActivity).loadInto(this).apply {
+ load(imageUrl)
+ onLoaded {
+ setOnAnimationLoopListener {
+ // Log.e("app-test", "onLoop")
+ }
+ }
+ }
+ }.lparams(
+ width = matchConstraint,
+ height = matchConstraint
+ )
+ applyConstraintSet {
+ pauseButton {
+ connect(
+ ConstraintSetBuilder.Side.BOTTOM to ConstraintSetBuilder.Side.TOP of seekBar margin dip(8),
+ ConstraintSetBuilder.Side.END to ConstraintSetBuilder.Side.END of ConstraintLayout.LayoutParams.PARENT_ID margin dip(8)
+ )
+ }
+ playButton {
+ connect(
+ ConstraintSetBuilder.Side.BOTTOM to ConstraintSetBuilder.Side.TOP of seekBar margin dip(8),
+ ConstraintSetBuilder.Side.START to ConstraintSetBuilder.Side.START of ConstraintLayout.LayoutParams.PARENT_ID margin dip(8)
+ )
+ }
+ seekBar {
+ connect(
+ ConstraintSetBuilder.Side.BOTTOM to ConstraintSetBuilder.Side.BOTTOM of ConstraintLayout.LayoutParams.PARENT_ID margin dip(8),
+ ConstraintSetBuilder.Side.END to ConstraintSetBuilder.Side.END of ConstraintLayout.LayoutParams.PARENT_ID margin dip(8),
+ ConstraintSetBuilder.Side.START to ConstraintSetBuilder.Side.START of ConstraintLayout.LayoutParams.PARENT_ID margin dip(8)
+ )
+ }
+ imageView2 {
+ connect(
+ ConstraintSetBuilder.Side.BOTTOM to ConstraintSetBuilder.Side.TOP of playButton margin dip(8),
+ ConstraintSetBuilder.Side.END to ConstraintSetBuilder.Side.END of ConstraintLayout.LayoutParams.PARENT_ID margin dip(8),
+ ConstraintSetBuilder.Side.START to ConstraintSetBuilder.Side.START of ConstraintLayout.LayoutParams.PARENT_ID margin dip(8),
+ ConstraintSetBuilder.Side.TOP to ConstraintSetBuilder.Side.BOTTOM of imageView
+ )
+ }
+ imageView {
+ connect(
+ ConstraintSetBuilder.Side.BOTTOM to ConstraintSetBuilder.Side.TOP of imageView2 margin dip(8),
+ ConstraintSetBuilder.Side.END to ConstraintSetBuilder.Side.END of ConstraintLayout.LayoutParams.PARENT_ID margin dip(8),
+ ConstraintSetBuilder.Side.START to ConstraintSetBuilder.Side.START of ConstraintLayout.LayoutParams.PARENT_ID margin dip(8),
+ ConstraintSetBuilder.Side.TOP to ConstraintSetBuilder.Side.TOP of ConstraintLayout.LayoutParams.PARENT_ID margin dip(8)
+ )
+ }
+ }
+ }.lparams {
+ width = matchParent
+ height = matchParent
+ }
+
}
-
- this.seekBar.setOnSeekBarChangeListener(object : SeekBar.OnSeekBarChangeListener {
-
- override fun onProgressChanged(seekBar: SeekBar, progressValue: Int, fromUser: Boolean) {
- }
-
- override fun onStartTrackingTouch(seekBar: SeekBar) {
- }
-
- override fun onStopTrackingTouch(seekBar: SeekBar) {
- Log.e("TAG" , (seekBar.progress.toFloat() / 100f).toString())
- animator.speed = (seekBar.progress.toFloat() / 100f)
-
- }
- })
-
- Picasso.get().load(imageUrl).into(imageView2)
-
- play.setOnClickListener {
- animator.play()
- }
-
- pause.setOnClickListener {
- animator.pause()
- }
- }
-
- override fun onCreateOptionsMenu(menu: Menu?): Boolean {
- menuInflater.inflate(R.menu.main_menu, menu)
- return super.onCreateOptionsMenu(menu)
- }
-
- override fun onOptionsItemSelected(item: MenuItem?): Boolean {
- when(item?.itemId) {
- R.id.action_open_create_activity -> {
- val intent = Intent(this, CreatorActivity::class.java)
- startActivity(intent)
- finish()
- }
- }
- return super.onOptionsItemSelected(item)
}
}
diff --git a/app-test/src/main/res/drawable/ic_add_white_24dp.xml b/app-test/src/main/res/drawable/ic_add_black_24dp.xml
similarity index 51%
rename from app-test/src/main/res/drawable/ic_add_white_24dp.xml
rename to app-test/src/main/res/drawable/ic_add_black_24dp.xml
index e3979cd..9f27772 100644
--- a/app-test/src/main/res/drawable/ic_add_white_24dp.xml
+++ b/app-test/src/main/res/drawable/ic_add_black_24dp.xml
@@ -1,5 +1,5 @@
-
-
+
diff --git a/app-test/src/main/res/drawable/ic_play_arrow_white_24dp.xml b/app-test/src/main/res/drawable/ic_play_arrow_black_24dp.xml
similarity index 88%
rename from app-test/src/main/res/drawable/ic_play_arrow_white_24dp.xml
rename to app-test/src/main/res/drawable/ic_play_arrow_black_24dp.xml
index 1f75805..1a1c9f2 100644
--- a/app-test/src/main/res/drawable/ic_play_arrow_white_24dp.xml
+++ b/app-test/src/main/res/drawable/ic_play_arrow_black_24dp.xml
@@ -4,6 +4,6 @@
android:viewportWidth="24.0"
android:viewportHeight="24.0">
diff --git a/app-test/src/main/res/layout/activity_main.xml b/app-test/src/main/res/layout/activity_main.xml
deleted file mode 100644
index da92bb7..0000000
--- a/app-test/src/main/res/layout/activity_main.xml
+++ /dev/null
@@ -1,68 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
\ No newline at end of file
diff --git a/app-test/src/main/res/layout/activity_main2.xml b/app-test/src/main/res/layout/activity_main2.xml
deleted file mode 100644
index 28ac928..0000000
--- a/app-test/src/main/res/layout/activity_main2.xml
+++ /dev/null
@@ -1,24 +0,0 @@
-
-
-
-
-
\ No newline at end of file
diff --git a/app-test/src/main/res/values/styles.xml b/app-test/src/main/res/values/styles.xml
index 144751e..cda9474 100644
--- a/app-test/src/main/res/values/styles.xml
+++ b/app-test/src/main/res/values/styles.xml
@@ -3,9 +3,31 @@
+
+
+
+
diff --git a/app-test/src/test/java/oupson/apngcreator/ExampleUnitTest.kt b/app-test/src/test/java/oupson/apngcreator/ExampleUnitTest.kt
index 6ef8924..ac1b477 100644
--- a/app-test/src/test/java/oupson/apngcreator/ExampleUnitTest.kt
+++ b/app-test/src/test/java/oupson/apngcreator/ExampleUnitTest.kt
@@ -1,9 +1,8 @@
package oupson.apngcreator
+import org.junit.Assert.assertEquals
import org.junit.Test
-import org.junit.Assert.*
-
/**
* Example local unit test, which will execute on the development machine (host).
*
diff --git a/build.gradle b/build.gradle
index 6a54904..8dc83dd 100644
--- a/build.gradle
+++ b/build.gradle
@@ -1,14 +1,14 @@
// Top-level build file where you can add configuration options common to all sub-projects/modules.
buildscript {
- ext.kotlin_version = '1.3.11'
+ ext.kotlin_version = '1.3.31'
ext.anko_version = '0.10.8'
repositories {
google()
jcenter()
}
dependencies {
- classpath 'com.android.tools.build:gradle:3.2.1'
+ classpath 'com.android.tools.build:gradle:3.4.1'
classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version"
// NOTE: Do not place your application dependencies here; they belong
diff --git a/gradle.properties b/gradle.properties
index 743d692..b2b3bb2 100644
--- a/gradle.properties
+++ b/gradle.properties
@@ -10,4 +10,4 @@ org.gradle.jvmargs=-Xmx1536m
# When configured, Gradle will run in incubating parallel mode.
# This option should only be used with decoupled projects. More details, visit
# http://www.gradle.org/docs/current/userguide/multi_project_builds.html#sec:decoupled_projects
-# org.gradle.parallel=true
+# org.gradle.parallel=true
\ No newline at end of file
diff --git a/gradle/wrapper/gradle-wrapper.properties b/gradle/wrapper/gradle-wrapper.properties
index 38d69a6..d7ad314 100644
--- a/gradle/wrapper/gradle-wrapper.properties
+++ b/gradle/wrapper/gradle-wrapper.properties
@@ -1,6 +1,6 @@
-#Tue Sep 25 21:36:02 CEST 2018
+#Fri May 17 18:01:19 CEST 2019
distributionBase=GRADLE_USER_HOME
distributionPath=wrapper/dists
zipStoreBase=GRADLE_USER_HOME
zipStorePath=wrapper/dists
-distributionUrl=https\://services.gradle.org/distributions/gradle-4.6-all.zip
+distributionUrl=https\://services.gradle.org/distributions/gradle-5.1.1-all.zip