Android动画、滑动条

一、实现背景从小到大逐渐占满全屏的效果,可以使用ScaleAnimation,这个动画类型允许控制视图的大小变化。

1、首先,定义一个ScaleAnimation对象,并设置其属性。

2、然后,将这个动画应用到你想要改变大小的背景视图上。

Java代码示例:

import androidx.appcompat.app.AppCompatActivity;
import androidx.constraintlayout.widget.ConstraintLayout;

import android.os.Bundle;
import android.view.animation.ScaleAnimation;
import android.widget.ImageView;

public class FinacialLife extends AppCompatActivity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_finacial_life);
        //定义背景视图
        ConstraintLayout backgroundView = findViewById(R.id.body);
        
        // 创建一个从小到大的缩放动画
        ScaleAnimation scaleAnimation = new ScaleAnimation(
                0.1f, 1.0f, // 从0.1倍大小变化到1倍原大小
                0.1f, 1.0f, // 从0.1倍大小变化到1倍原大小
                ScaleAnimation.RELATIVE_TO_SELF, 0.5f, // 相对于自己进行缩放,锚点为视图中心
                ScaleAnimation.RELATIVE_TO_SELF, 0.5f // 相对于自己进行缩放,锚点为视图中心
        );
        
        scaleAnimation.setDuration(3000); // 设置动画持续时间
        scaleAnimation.setFillAfter(true); // 设置动画结束后保持最终状态

        backgroundView.startAnimation(scaleAnimation);
    }
}

Android背景动画

 二、实现图片左右摇晃的效果。可以使用Android中的TranslateAnimation。这种动画可以沿着X轴或Y轴移动视图,从而创建出摇晃的效果。

  1. 首先,定义一个TranslateAnimation对象,设置其属性以实现左右摇晃的效果。

  2. 将这个动画应用到你想要摇晃的图片视图上。

import androidx.appcompat.app.AppCompatActivity;
import androidx.constraintlayout.widget.ConstraintLayout;
import android.os.Bundle;
import android.view.animation.TranslateAnimation;
import android.widget.ImageView;

public class TakeSubway extends AppCompatActivity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_take_subway);

        ImageView imageViewRightTop = findViewById(R.id.imageView75); 

        // 创建一个左右摇晃的动画
        TranslateAnimation shakeAnimation = new TranslateAnimation(
                0, // 动画开始时在X轴的位置(这里是原位置)
                5, // 动画结束时在X轴的位置(向右移动5像素)
                0, // 动画开始时在Y轴的位置
                0  // 动画结束时在Y轴的位置
        );
        shakeAnimation.setDuration(500); // 设置动画持续时间
        shakeAnimation.setRepeatCount(-1); // 设置重复次数,-1为无限重复
        shakeAnimation.setRepeatMode(Animation.REVERSE); // 设置重复模式,使其来回摇晃

        // 应用动画
        imageViewRightTop.startAnimation(shakeAnimation);
    }
}

图片动画

三、滑动条来控制图片大小。通过SeekBar组件来实现。

  1. 在布局文件中添加SeekBar:在布局文件中添加一个SeekBar

  2. 为SeekBar添加监听器:在Activity或Fragment中,为这个SeekBar添加一个OnSeekBarChangeListener监听器。

  3. 更新图片的大小:在监听器的onProgressChanged方法中,根据SeekBar的进度值来更新图片的大小。

 在Activity中添加监听器

public class TiaozhenDaxiao extends AppCompatActivity {

    private ImageView imageView71; 
    private SeekBar seekBar;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.tiaozhen_daxiao);

        imageView71 = findViewById(R.id.imageView71);
        seekBar = findViewById(R.id.seekBar);

        seekBar.setOnSeekBarChangeListener(new SeekBar.OnSeekBarChangeListener() {
            @Override
            public void onProgressChanged(SeekBar seekBar, int progress, boolean fromUser) {
                // 根据progress的值调整图片的大小
                updateImageViewSize(progress);
            }

            @Override
            public void onStartTrackingTouch(SeekBar seekBar) {
            }

            @Override
            public void onStopTrackingTouch(SeekBar seekBar) {
            }
        });
    }

    private void updateImageViewSize(int progress) {
        // 将progress映射到一个尺寸值上
        int imageSize = getImageViewSizeByProgress(progress);
        // 更新ImageView的尺寸
        ViewGroup.LayoutParams layoutParams = imageView71.getLayoutParams();
        layoutParams.width = imageSize;
        layoutParams.height = imageSize;
        imageView71.setLayoutParams(layoutParams);
    }

    private int getImageViewSizeByProgress(int progress) {
        // 假设我们根据SeekBar的进度来决定图片的大小,这里只是一个示例
        // 你需要根据实际情况来计算尺寸
        return Math.max(100, progress * 2); // 基础大小100,每增加1进度增加2像素
    }
}

滑动条

  • 4
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 5
    评论
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值