保姆级【快数学会Android端“动画“】+ 实现补间动画和逐帧动画!!!

目录

补间动画

1.创建资源文件夹

2.设置文件夹类型

3.创建.xml文件

4.样式设计

5.动画设置

6.动画的实现

内容拓展

7.在原基础上继续添加.xml文件

8.xml代码编写

(1)rotate_anim

(2)scale_anim

(3)translate_anim

9.MainActivity.java代码汇总

10.效果展示

逐帧动画

1.在drawable中添加loading_anim文件

2.样式设计

3.MainActivity.java代码

4.效果展示


补间动画

1.创建资源文件夹

2.设置文件夹类型

3.创建.xml文件

4.样式设计

在drawable文件中添加照片

5.动画设置

在alpha_anim.xml中写入渐变代码

<?xml version="1.0" encoding="utf-8"?>
<set xmlns:android="http://schemas.android.com/apk/res/android">
    <alpha
        android:fromAlpha="1.0"
        android:toAlpha="0.0"
        android:duration="1000"
        android:repeatCount="10"
        android:repeatMode="restart"
        android:interpolator="@android:anim/linear_interpolator"
        />
</set>

6.动画的实现

将动画与按钮控件进行绑定

在MainActivity.java中写入代码

以上为实现渐变动画的代码


内容拓展

继续实现缩放、旋转、平移等动画效果

7.在原基础上继续添加.xml文件

8.xml代码编写

(1)rotate_anim
<?xml version="1.0" encoding="utf-8"?>
<set xmlns:android="http://schemas.android.com/apk/res/android">
    <rotate
        android:fromDegrees="0"
        android:toDegrees="360"
        android:duration="1000"
        android:pivotX="50%"
        android:pivotY="50%"
        android:repeatCount="infinite"
        android:repeatMode="reverse"
        />
</set>
(2)scale_anim
<?xml version="1.0" encoding="utf-8"?>
<set xmlns:android="http://schemas.android.com/apk/res/android">
    <scale
        android:fromXScale="1.0"
        android:toXScale="0.5"
        android:fromYScale="1.0"
        android:toYScale="0.5"
        android:pivotX="50%"
        android:pivotY="50%"
        android:repeatMode="reverse"
        android:repeatCount="infinite"
        android:duration="3000"
        />
</set>
(3)translate_anim
<?xml version="1.0" encoding="utf-8"?>
<set xmlns:android="http://schemas.android.com/apk/res/android">
    <translate
        android:fromXDelta="0.0"
        android:toXDelta="100"
        android:fromYDelta="0.0"
        android:toYDelta="0.0"
        android:repeatCount="infinite"
        android:repeatMode="reverse"
        android:duration="3000"
        />
</set>

9.MainActivity.java代码汇总

 //渐变
        ImageView lion_img = findViewById(R.id.imageView );
        Button alpha_btn = findViewById(R.id.button);
        alpha_btn.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                //加载动画
                Animation alpha_animation = AnimationUtils.loadAnimation(getApplicationContext(),R.anim.alpha_anim);
                //在控件上执行动画
                lion_img.startAnimation(alpha_animation);
            }
        });
        //缩放
        Button rotate_anim = findViewById(R.id.button3);
        rotate_anim.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                Animation rotate_animation = AnimationUtils.loadAnimation(getApplicationContext(),R.anim.rotate_anim);
                lion_img.startAnimation(rotate_animation);
            }
        });
        //旋转
        Button scale_anim = findViewById(R.id.button2);
        scale_anim.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                Animation rotate_animation = AnimationUtils.loadAnimation(getApplicationContext(),R.anim.scale_anim);
                lion_img.startAnimation(rotate_animation);
            }
        });
        //平移
        Button translate_anim = findViewById(R.id.button4);
        translate_anim.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                Animation rotate_animation = AnimationUtils.loadAnimation(getApplicationContext(),R.anim.translate_anim);
                lion_img.startAnimation(rotate_animation);
            }
        });

10.效果展示

补间动画效果实现


逐帧动画

1.在drawable中添加loading_anim文件

该文件用于存储导入的多张照片,可视为集合。

创建后代码编写

2.样式设计

导入的imageView图片选用loading_anim集合,而非单张静态照片!!!!!!

3.MainActivity.java代码

4.效果展示

点击start_btn按钮,图片实现轮播效果


感谢各位读者的阅读!希望大家给出一键三连,多多支持原创。有错误和不解的地方,欢迎各位读者在评论区讨论,我也会不断学习不断改进,做出更加优质的作品!!!

相关代码资源(点击跳转)

JWT (Json Web Token) 是一种轻量的身份验证协议,常用于基于 RESTful API 的服务中。在 Spring Boot MongoDB 后环境中,你可以按照以下步骤实现 JWT 登录验证: 1. 添加依赖: 首先,在你的 `pom.xml` 文件中添加 JWT 相关库依赖,例如 `jjwt` `spring-boot-starter-web`。 ```xml <dependency> <groupId>io.jsonwebtoken</groupId> <artifactId>jjwt</artifactId> <version>0.9.1</version> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-security</artifactId> </dependency> ``` 2. 创建 SecretKey(密钥): JWT 需要一个 SecretKey 来对令牌进行签名。在 Application 类中创建并配置一个属性。 ```java @Configuration public class JwtConfig { private static final String SECRET_KEY = "your-secret-key"; // 替换为实际的密钥字符串 @Value("${jwt.header}") private String jwtHeader; public String getJwtSecretKey() { return SECRET_KEY; } public String getJwtHeaderName() { return jwtHeader; } } ``` 3. 用户认证: 实现 UserDetailsService 接口,检查用户凭据是否有效。 ```java @Service public class UserRepositoryService implements UserDetailsService { // 使用MongoTemplate或其他工具查询用户信息 @Autowired private MongoTemplate mongoTemplate; @Override public UserDetails loadUserByUsername(String username) throws UsernameNotFoundException { // 查询数据库,获取用户名对应的用户信息 // 示例:假设有一个 Users collection,包含usernamepassword字段 User user = mongoTemplate.findById(username, User.class); if (user == null) { throw new UsernameNotFoundException("Invalid credentials"); } return new org.springframework.security.core.userdetails.User(user.getUsername(), user.getPassword(), AuthorityUtils.createAuthorityList(user.getRole())); } } ``` 4. 安全配置: 在 `SecurityConfig` 或 `WebSecurityConfigurerAdapter` 中启用 JWT 验证,并设置 Filter。 ```java @Configuration @EnableWebSecurity public class SecurityConfig extends WebSecurityConfigurerAdapter { @Autowired private JwtUtil jwtUtil; @Autowired private UserRepositoryService userRepositoryService; @Override protected void configure(HttpSecurity http) throws Exception { http.authorizeRequests() .antMatchers("/api/**").authenticated() .anyRequest().permitAll(); // 添加 JWT 认证过滤器 http.addFilterBefore(jwtAuthenticationFilter(), UsernamePasswordAuthenticationFilter.class); } @Bean public JwtAuthenticationFilter jwtAuthenticationFilter() { return new JwtAuthenticationFilter(jwtUtil, userRepositoryService); } } ``` 5. JWT Util(处理Token生成、解析校验): 这里可以封装一些方法来创建、签发验证 JWT。 ```java @Component public class JwtUtil { private final String secretKey; private final ObjectMapper objectMapper = new ObjectMapper(); public JwtUtil(JwtConfig jwtConfig) { this.secretKey = jwtConfig.getJwtSecretKey(); } // ...其他方法如generateToken, parseTokenAndCheckExpiration等 } ``` 6. 创建登录API: 在控制器中接收用户输入,调用 `UserService` 对其进行验证,并返回 JWT 令牌。 ```java @RestController @RequestMapping("/api") public class AuthController { @Autowired private UserService userService; @PostMapping("/login") public ResponseEntity<?> authenticate(@RequestBody LoginRequest loginRequest) { // 根据 loginRequest 调用 userRepositoryService 进行验证 try { User authenticatedUser = userService.authenticate(loginRequest.getUsername(), loginRequest.getPassword()); String jwt = jwtUtil.generateToken(authenticatedUser); return ResponseEntity.ok(new JwtResponse(jwt)); } catch (Exception e) { return ResponseEntity.badRequest().body(e.getMessage()); } } } // 假设 JwtResponse 是一个包含 token 的响应模型 ``` 7. 访问控制: 使用 JWT 在每个需要授权的请求头中提供,Spring Security 会自动从 `Authorization` 请求头中提取验证 JWT。 现在,客户发送登录请求时,如果身份验证成功,将获得 JWT 作为响应。在后续的 API 调用中,需在请求头中携带 JWT,服务器通过 `JwtAuthenticationFilter` 进行验证。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

花开月满西楼

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值