Convert ViewTransition and BringOutTransition to kotlin

This commit is contained in:
FooIbar authored and tarsin committed 2023-06-22 10:01:41 +08:00
1 parent fce4a2751a
commit fc99c611a6
2 files changed
+86 -116

No files matched your search

@@ -13,42 +13,33 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package com.hippo.ehviewer.ui.legacy
package com.hippo.ehviewer.ui.legacy;
import android.animation.Animator
import android.animation.AnimatorListenerAdapter
import android.view.View
import android.animation.Animator;
import android.animation.AnimatorListenerAdapter;
import android.view.View;
public class BringOutTransition extends ViewTransition {
public BringOutTransition(ContentLayout contentLayout, SearchLayout mSearchLayout) {
super(contentLayout, mSearchLayout);
}
@Override
protected void startAnimations(final View hiddenView, final View shownView) {
mAnimator1 = hiddenView.animate().alpha(0).scaleY(0.7f).scaleX(0.7f);
mAnimator1.setDuration(ANIMATE_TIME).setListener(new AnimatorListenerAdapter() {
@Override
public void onAnimationEnd(Animator animation) {
if (hiddenView != null) {
hiddenView.setVisibility(View.GONE);
class BringOutTransition(contentLayout: ContentLayout, mSearchLayout: SearchLayout) :
ViewTransition(contentLayout, mSearchLayout) {
override fun startAnimations(hiddenView: View, shownView: View) {
mAnimator1 = hiddenView.animate().alpha(0f).scaleY(0.7f).scaleX(0.7f).apply {
setDuration(ANIMATE_TIME).setListener(object : AnimatorListenerAdapter() {
override fun onAnimationEnd(animation: Animator) {
hiddenView.visibility = View.GONE
mAnimator1 = null
}
mAnimator1 = null;
}
}).start();
shownView.setAlpha(0);
shownView.setScaleX(0.7f);
shownView.setScaleY(0.7f);
shownView.setVisibility(View.VISIBLE);
mAnimator2 = shownView.animate().alpha(1f).scaleX(1).scaleY(1);
mAnimator2.setDuration(ANIMATE_TIME).setListener(new AnimatorListenerAdapter() {
@Override
public void onAnimationEnd(Animator animation) {
mAnimator2 = null;
}
}).start();
}).start()
}
shownView.alpha = 0f
shownView.scaleX = 0.7f
shownView.scaleY = 0.7f
shownView.visibility = View.VISIBLE
mAnimator2 = shownView.animate().alpha(1f).scaleX(1f).scaleY(1f).apply {
setDuration(ANIMATE_TIME).setListener(object : AnimatorListenerAdapter() {
override fun onAnimationEnd(animation: Animator) {
mAnimator2 = null
}
}).start()
}
}
}
@@ -13,119 +13,98 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package com.hippo.ehviewer.ui.legacy
package com.hippo.ehviewer.ui.legacy;
import android.animation.Animator
import android.animation.AnimatorListenerAdapter
import android.view.View
import android.view.ViewPropertyAnimator
import android.animation.Animator;
import android.animation.AnimatorListenerAdapter;
import android.view.View;
import android.view.ViewPropertyAnimator;
open class ViewTransition(vararg views: View) {
private val mViews: Array<View>
protected var mAnimator1: ViewPropertyAnimator? = null
protected var mAnimator2: ViewPropertyAnimator? = null
var shownViewIndex = -1
private set
private var mOnShowViewListener: OnShowViewListener? = null
public class ViewTransition {
protected static final long ANIMATE_TIME = 300L;
private final View[] mViews;
protected ViewPropertyAnimator mAnimator1;
protected ViewPropertyAnimator mAnimator2;
private int mShownView = -1;
private OnShowViewListener mOnShowViewListener;
public ViewTransition(View... views) {
if (views.length < 2) {
throw new IllegalStateException("You must pass view to ViewTransition");
}
for (View v : views) {
if (v == null) {
throw new IllegalStateException("Any View pass to ViewTransition must not be null");
}
}
mViews = views;
showView(0, false);
init {
check(views.size >= 2) { "You must pass view to ViewTransition" }
mViews = arrayOf(*views)
showView(0, false)
}
public void setOnShowViewListener(OnShowViewListener listener) {
mOnShowViewListener = listener;
fun setOnShowViewListener(listener: OnShowViewListener?) {
mOnShowViewListener = listener
}
public int getShownViewIndex() {
return mShownView;
}
public boolean showView(int shownView) {
return showView(shownView, true);
}
public boolean showView(int shownView, boolean animation) {
View[] views = mViews;
int length = views.length;
@JvmOverloads
fun showView(shownView: Int, animation: Boolean = true): Boolean {
val views = mViews
val length = views.size
if (shownView >= length || shownView < 0) {
throw new IndexOutOfBoundsException("Only " + length + " view(s) in " +
"the ViewTransition, but attempt to show " + shownView);
throw IndexOutOfBoundsException(
"Only " + length + " view(s) in " +
"the ViewTransition, but attempt to show " + shownView,
)
}
if (mShownView != shownView) {
int oldShownView = mShownView;
mShownView = shownView;
return if (shownViewIndex != shownView) {
val oldShownView = shownViewIndex
shownViewIndex = shownView
// Cancel animation
if (mAnimator1 != null) {
mAnimator1.cancel();
mAnimator1!!.cancel()
}
if (mAnimator2 != null) {
mAnimator2.cancel();
mAnimator2!!.cancel()
}
if (animation) {
startAnimations(views[oldShownView], views[shownView]);
startAnimations(views[oldShownView], views[shownView])
} else {
for (int i = 0; i < length; i++) {
View v = views[i];
for (i in 0 until length) {
val v = views[i]
if (i == shownView) {
v.setAlpha(1f);
v.setVisibility(View.VISIBLE);
v.alpha = 1f
v.visibility = View.VISIBLE
} else {
v.setAlpha(0f);
v.setVisibility(View.GONE);
v.alpha = 0f
v.visibility = View.GONE
}
}
}
if (null != mOnShowViewListener) {
mOnShowViewListener.onShowView(views[oldShownView], views[shownView]);
mOnShowViewListener!!.onShowView(views[oldShownView], views[shownView])
}
return true;
true
} else {
return false;
false
}
}
protected void startAnimations(final View hiddenView, final View shownView) {
mAnimator1 = hiddenView.animate().alpha(0);
mAnimator1.setDuration(ANIMATE_TIME).setListener(new AnimatorListenerAdapter() {
@Override
public void onAnimationEnd(Animator animation) {
if (hiddenView != null) {
hiddenView.setVisibility(View.GONE);
}
mAnimator1 = null;
protected open fun startAnimations(hiddenView: View, shownView: View) {
mAnimator1 = hiddenView.animate().alpha(0f)
mAnimator1!!.setDuration(ANIMATE_TIME).setListener(object : AnimatorListenerAdapter() {
override fun onAnimationEnd(animation: Animator) {
hiddenView.visibility = View.GONE
mAnimator1 = null
}
}).start();
shownView.setAlpha(0);
shownView.setVisibility(View.VISIBLE);
mAnimator2 = shownView.animate().alpha(1);
mAnimator2.setDuration(ANIMATE_TIME).setListener(new AnimatorListenerAdapter() {
@Override
public void onAnimationEnd(Animator animation) {
mAnimator2 = null;
}).start()
shownView.alpha = 0f
shownView.visibility = View.VISIBLE
mAnimator2 = shownView.animate().alpha(1f)
mAnimator2!!.setDuration(ANIMATE_TIME).setListener(object : AnimatorListenerAdapter() {
override fun onAnimationEnd(animation: Animator) {
mAnimator2 = null
}
}).start();
}).start()
}
public interface OnShowViewListener {
void onShowView(View hiddenView, View shownView);
interface OnShowViewListener {
fun onShowView(hiddenView: View, shownView: View)
}
companion object {
const val ANIMATE_TIME = 300L
}
}