0
点赞
收藏
分享

微信扫一扫

Android开发(14)——动画实战:炫酷登录

西特张 2021-09-19 阅读 67

implementation 'io.alterac.blurkit:blurkit:1.1.0'
<io.alterac.blurkit.BlurLayout
        android:id="@+id/blurLayout"
        android:layout_width="0dp"
        android:layout_height="270dp"
        android:layout_marginEnd="20dp"
        app:blk_blurRadius="20"
        app:blk_cornerRadius="10dp"
        app:blk_fps="1"
        app:layout_constraintEnd_toEndOf="parent"
        app:layout_constraintStart_toStartOf="parent"
        app:layout_constraintTop_toBottomOf="@+id/mHead">
    </io.alterac.blurkit.BlurLayout>
 override fun onStart() {
        super.onStart()
        //开始虚化
        blurLayout.startBlur()
    }
override fun onResume() {
        super.onResume()
        //暂停虚化
        blurLayout.pauseBlur()
    }
<shape xmlns:android="http://schemas.android.com/apk/res/android"
    android:shape="rectangle">
    <corners android:radius="5dp"/>
    <stroke android:color="#FFF "  android:width="1dp"/>
</shape>
android:background="@drawable/edit_shape"
 android:drawableStart="@drawable/iconfont_user"
 android:paddingStart="10dp"
 android:drawablePadding="10dp"
android:letterSpacing="0.1"
<selector xmlns:android="http://schemas.android.com/apk/res/android">
    <item android:state_enabled="false"  android:drawable="@color/colorGrey"/>
    <item android:state_enabled="true"  android:drawable="@color/colorBlue"/>
</selector>
<resources>
    <color name="colorPrimary">#6200EE</color>
    <color name="colorPrimaryDark">#3700B3</color>
    <color name="colorAccent">#03DAC5</color>
    <color name="colorBlue">#4496EF</color>
    <color name="colorGrey">#D6D7D7</color>
    <color name="colorBlackGrey">#666</color>
    <color name="colorWhite">#FFF</color>
</resources>
android:background="@drawable/loginbtn_state"
        mName.addTextChangedListener(this)
        mPassword.addTextChangedListener(this)
override fun afterTextChanged(s: Editable?) {
        //当两个输入框都有内容才能点击
        mLogin.isEnabled = mName.text.isNotEmpty() &&mPassword.text.isNotEmpty()
    }
 override fun onTouchEvent(event: MotionEvent?): Boolean {
        if(event?.action==MotionEvent.ACTION_DOWN){
             //隐藏键盘
         hideKeyboard()
        }
        return super.onTouchEvent(event)
    }
private fun hideKeyboard(){
        //取消焦点
        if(mName.hasFocus()){
            mName.clearFocus()
        }
        if(mPassword.hasFocus()){
            mPassword.clearFocus()
        }
       //获取管理输入的Manager
      val inputMethodManager=
          getSystemService(Context.INPUT_METHOD_SERVICE) as InputMethodManager
        inputMethodManager.hideSoftInputFromWindow(mPassword.windowToken,InputMethodManager.HIDE_NOT_ALWAYS)
    }
class MainActivity : AppCompatActivity(),TextWatcher,View.OnFocusChangeListener {
}
override fun onFocusChange(v: View?, hasFocus: Boolean) {
       if(v == mPassword){
         if(hasFocus){
          coverEye()
         }else{
          openEye()
         }
       }
    }
        mName.onFocusChangeListener = this
        mPassword.onFocusChangeListener = this

val leftArmUpAnim:AnimatorSet by lazy {
      val rotate=  ObjectAnimator.ofFloat(mLeftArm,"rotation",140f).apply {
            duration = 500
        }
        //手臂向右移动
      val tx=  PropertyValuesHolder.ofFloat("translationX",dpToPx(48f))
        //手臂向上移动
      val ty=  PropertyValuesHolder.ofFloat("translationY",-dpToPx(40f))
      val translate=  ObjectAnimator.ofPropertyValuesHolder(mLeftArm,tx,ty)

        AnimatorSet().apply {
            playTogether(rotate,translate)
            duration = 500
        }
    }
   val leftArmDownAnim:AnimatorSet by lazy {
      val rotate=  ObjectAnimator.ofFloat(mLeftArm,"rotation",0f).apply {
            duration = 500
        }
        //手臂向左移动
        val tx=  PropertyValuesHolder.ofFloat("translationX",0f)
        //手臂向下移动
        val ty=  PropertyValuesHolder.ofFloat("translationY",0f)
        val translate=  ObjectAnimator.ofPropertyValuesHolder(mLeftArm,tx,ty)

        AnimatorSet().apply {
            playTogether(rotate,translate)
            duration = 500
        }
    }
val rightArmDownAnim:AnimatorSet by lazy {
     val rotate=   ObjectAnimator.ofFloat(mRightArm,"rotation",0f).apply {
            duration = 500
        }
        //手臂向右移动
        val tx=  PropertyValuesHolder.ofFloat("translationX",0f)
        //手臂向下移动
        val ty=  PropertyValuesHolder.ofFloat("translationY",0f)
        val translate=  ObjectAnimator.ofPropertyValuesHolder(mRightArm,tx,ty)

        AnimatorSet().apply {
            playTogether(rotate,translate)
            duration = 500
        }
    }
private fun coverEye(){
           AnimatorSet().apply {
               play(leftHandDownAnim)
                   .with(rightHandDownAnim)
                   .before(leftArmUpAnim)
                   .before(rightArmUpAnim)
               start()
           }
    }
private fun openEye(){
        AnimatorSet().apply {
            play(leftArmDownAnim)
                .with(rightArmDownAnim)
                .before(leftHandUpAnim)
                .before(rightHandUpAnim)
            start()
        }
    }
private fun dpToPx(dp:Float):Float{
        val display= DisplayMetrics()
        windowManager.defaultDisplay.getMetrics(display)
        return display.density*dp
    }
val leftHandDownAnim:ObjectAnimator by lazy {
        ObjectAnimator.ofFloat(mLeftHand,"translationY",mLeftHand.height*0.5f).apply {
            duration = 500
        }
    }
val leftHandUpAnim:ObjectAnimator by lazy {
        ObjectAnimator.ofFloat(mLeftHand,"translationY",0f).apply {
            duration = 500
        }
    }
val rightHandDownAnim:ObjectAnimator by lazy {
        ObjectAnimator.ofFloat(mRighrHand,"translationY",mRighrHand.height*0.5f).apply {
            duration = 500
        }
    }
 val rightHandUpAnim:ObjectAnimator by lazy {
        ObjectAnimator.ofFloat(mRighrHand,"translationY",0f).apply {
            duration = 500
        }
    }
举报

相关推荐

0 条评论