一、前言
本文所实现的功能类似APP开屏广告(有计时和跳过),之前找过不少博客看,但是感觉写的不够详细,对于初学者来说感觉还是较难理解,所以为了更好的理解和加深理解,特写此篇,希望可以帮助你!
二、实现步骤
2.1 新建项目
选择 “Empty Views Activity” 点击下一步
填入项目名称,注意编程语言要选 “Java”
点击完成后,再等一会项目就建好了
2.2 新建活动文件
按图片操作
选择 “Empty Views Activity” 点击下一步
填入Activity名字,注意要勾选 “Generate a Layout File”,点击完成
把文件展开就可看到新建的活动页
2.3 代码编写
①activiy_splash.xml
虽然可以通过代码来增加文本控件,不过我推荐通过拖拽的方式添加
直接拖 “TextView” 就可以把文本框控件拿出来,接下来就是定位
通过拉取定位线,把文本框定在想要显示的位置上,通过点击定位线边上的圆圈变成 “%”,可以保证按比例显示文本框
点击文本框,会出现四个小白点,然后拉点到边和点位线上。被吸附的小白点会变成蓝点,再在右边修改 “layout_width” 和 “layout_height” 改为0dp即可,文本框的大小就被限制在定位线范围了
设置文本框居中
点击图中+号,在多出的内输入“gravity” 中选择 center
设置文本框文字
因为显示内容与设定的时间有关,如果是想设定5秒,那就需要改为 “跳过5s”
原本控件显示 “TextView”,通过修改text里的内容就可以修改文本框显示的内容,改为“跳过5s”,因为这里的定时就是5s
最终效果
②SplashActivity.java
这个代码分为两个部分,一个是时间到了就跳转到主界面,另一个点击文本框跳过进入主界面
其实刚开始学习的时候,我也不知道代码应该写在哪里。不要管这一大坨东西,代码写在 “return insets;” ,变量一般定义在 “protected void onCreate()” 外面
public class SplashActivity extends AppCompatActivity {
//定义变量
private int secondsRemaining = 5; // 倒计时初始值
private TextView countdownTextView;
private Handler handler;
private Runnable runnable;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
EdgeToEdge.enable(this);
setContentView(R.layout.activity_splash);
ViewCompat.setOnApplyWindowInsetsListener(findViewById(R.id.main), (v, insets) -> {
Insets systemBars = insets.getInsets(WindowInsetsCompat.Type.systemBars());
v.setPadding(systemBars.left, systemBars.top, systemBars.right, systemBars.bottom);
//获取显示时间的文本框对象
countdownTextView = findViewById(R.id.textView);
handler = new Handler();
runnable = new Runnable() {
@Override
public void run() {
secondsRemaining--;
//更新文本框显示内容
countdownTextView.setText("跳过"+secondsRemaining+"s");
if(secondsRemaining > 0){
handler.postDelayed(this,1000);
}else{
//倒计时结束,跳转到主活动
Intent intent = new Intent(SplashActivity.this, MainActivity.class);
startActivity(intent);
finish();
}
}
};
//调用线程
handler.postDelayed(runnable, 1000);
//给文本框添加点击事件:点击跳过功能
countdownTextView.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
//结束倒计时跳转的线程,如果不介绍,直接跳转页面会出现跳两次页的问题
handler.removeCallbacks(runnable);
//切换页面
Intent intent = new Intent(SplashActivity.this, MainActivity.class);
startActivity(intent);
finish();
}
});
return insets;
});
}
}
③设置默认起始页
点开 “AndroidMainifest.xml”
把图片圈的地方互换就OK了
三、功能完善建议
这个实现是最简单的功能,只显示文字,可以增加图片→视频→广告,甚至是其他形式的开屏广告(摇一摇广告),其核心都是页面的切换。