【Android】[2] 如何制作启动倒计时页

前言

实现效果

倒计时截图

源码地址

https://github.com/littlecurl/AppProjects

进去找AndroidCountDown或者AndroidCountDown.zip进行下载

前提条件

【红黑联盟】《Android性能优化之Splash页应该这样设计》 主要讲了启动页优化,要把Activity变成Fragment

【深夜网】《App启动页和引导页注意事项》 主要讲了心理学中的七秒理论

【CSDN】《Android CountDownTimer 倒计时器的简单使用》 注意将了避免内存泄漏

正文

本来想直接写出优化后的效果,也就是直接用Fragment来写,但是那样对于第一次接触的人来说,学习曲线过于陡峭,所以我还是花点时间写两份吧,先写一份Activity的,再写一封优化后的Fragment的。

CountDownActivity

制作倒计时页面流程

  1. new一个新坑,在对应包下创建一个EmptyActivity,起名为CountDownActivity

  2. 修改AndroidManifest.xml文件中启动页为CountDownActivity

5850
3. 设置布局activity_count_down.xml,主布局设置背景图片,这里我还是沿用上次的写bug图,布局内只放一个TextView控件即可,内容如下

<?xml version="1.0" encoding="utf-8"?>
<androidx.constraintlayout.widget.ConstraintLayout 
xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:background="@drawable/bug"
    tools:context=".CountDownActivity">

    <!-- android:gravity="center" 使文字在background内居中 -->
    <TextView
        android:id="@+id/tv_count_down"
        android:layout_width="70dp"
        android:layout_height="70dp"
        android:layout_marginTop="16dp"
        android:layout_marginEnd="16dp"
        android:layout_marginRight="16dp"
        android:background="@drawable/bg_circle_countdown"
        android:gravity="center"
        android:text="跳过"
        android:textColor="#2c2c2c"
        android:textSize="16sp"
        app:layout_constraintBottom_toBottomOf="parent"
        app:layout_constraintEnd_toEndOf="parent"
        app:layout_constraintHorizontal_bias="1.0"
        app:layout_constraintStart_toStartOf="parent"
        app:layout_constraintTop_toTopOf="parent"
        app:layout_constraintVertical_bias="0.0" />


</androidx.constraintlayout.widget.ConstraintLayout>

注意TextView也有background,这个background是一个xml文件,放在了drawable目录下(话说自己动手用xml画一个圆形,我还是头一次见)

<?xml version="1.0" encoding="utf-8"?>
<!-- 定义一个半径为50dp的圆形 -->
<shape xmlns:android="http://schemas.android.com/apk/res/android"
    android:shape="oval">
    <solid android:color="#64ffffff" />
    <size
        android:width="50dp"
        android:height="50dp" />
</shape>
  1. 布局设置完毕,就该写CountDownActivity了,内容如下

    package cn.edu.heuet.androidcountdown;
    
    import androidx.appcompat.app.AppCompatActivity;
    import android.
  • 5
    点赞
  • 31
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
以下是在Android Studio中实现启动倒计时的步骤: 1. 在res/layout文件夹下创建一个新的布局文件,例如activity_splash.xml,用于显示启动的UI界面。 2. 在activity_splash.xml中添加一个TextView用于显示倒计时的数字。 3. 在res/values文件夹下创建一个新的xml文件,例如strings.xml,用于存储字符串资源。 4. 在strings.xml中添加一个字符串资源,例如: ```xml <string name="countdown_text">跳过 %d</string> ``` 5. 在res/drawable文件夹下添加一个倒计时按钮的图片,例如ic_countdown_button.png。 6. 在activity_splash.xml中添加一个ImageView用于显示倒计时按钮的图片。 7. 在res/drawable文件夹下添加一个倒计时按钮的selector,例如countdown_button_selector.xml,用于设置倒计时按钮的不同状态。 8. 在countdown_button_selector.xml中添加以下代码: ```xml <selector xmlns:android="http://schemas.android.com/apk/res/android"> <item android:drawable="@drawable/ic_countdown_button_pressed" android:state_pressed="true"/> <item android:drawable="@drawable/ic_countdown_button_normal"/> </selector> ``` 9. 在activity_splash.xml中设置倒计时按钮的背景为countdown_button_selector.xml。 10. 在res/layout文件夹下创建一个新的布局文件,例如fragment_countdown.xml,用于显示倒计时页面的UI界面。 11. 在fragment_countdown.xml中添加一个TextView用于显示倒计时的数字。 12. 在res/layout文件夹下创建一个新的布局文件,例如fragment_countdown_button.xml,用于显示倒计时按钮的UI界面。 13. 在fragment_countdown_button.xml中添加一个Button用于显示倒计时按钮的文字。 14. 在CountDownFragment.java中实现倒计时的逻辑,例如: ```java public class CountDownFragment extends Fragment { private TextView mCountdownTextView; private Button mCountdownButton; private CountDownTimer mCountdownTimer; @Override public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { View view = inflater.inflate(R.layout.fragment_countdown, container, false); mCountdownTextView = (TextView) view.findViewById(R.id.countdown_text_view); mCountdownButton = (Button) view.findViewById(R.id.countdown_button); mCountdownButton.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { // 跳转到主页面 } }); mCountdownTimer = new CountDownTimer(5000, 1000) { @Override public void onTick(long millisUntilFinished) { int seconds = (int) (millisUntilFinished / 1000); String countdownText = getString(R.string.countdown_text, seconds); mCountdownTextView.setText(countdownText); } @Override public void onFinish() { // 倒计时结束,跳转到主页面 } }; mCountdownTimer.start(); return view; } @Override public void onDestroyView() { super.onDestroyView(); mCountdownTimer.cancel(); } } ``` 15. 在SplashActivity.java中添加以下代码,用于启动倒计时页面: ```java public class SplashActivity extends AppCompatActivity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_splash); FragmentManager fragmentManager = getSupportFragmentManager(); FragmentTransaction fragmentTransaction = fragmentManager.beginTransaction(); fragmentTransaction.replace(R.id.fragment_container, new CountDownFragment()); fragmentTransaction.commit(); } } ```
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值