android程序启动动画,Android设置软件启动动画(以及初次安装的几张引导图)
Android设置软件启动动画(以及初次安装的几张引导图)
设置软件启动动画
1 创建一个启动Activity 这里叫做QiDongActivity
它的XML中设置一个matchparent的背景图
2 在Manifest.xml文件中:
3 在java文件中 设置延时
private final int DISPLAY_LENGHT = 1000; //延迟1秒
//用子线程做延时操作再跳转到你要的主界面
new Handler().postDelayed(new Runnable(){
@Override
public void run() {
Intent mainIntent = new Intent(QiDongActivity.this,LoginActivity.class);
QiDongActivity.this.startActivity(mainIntent);
QiDongActivity.this.finish();
}
},DISPLAY_LENGHT);//延时1秒
设置初次下载时的软件使用提示
在启动Activity中,setContentView之前,通过SharedPreference来进行
public class QiDongActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
// 先判断是否为第一次安装启动软件
SharedPreferences firstShared = getSharedPreferences("isFristDownLoad", MODE_PRIVATE);
boolean isFirst = firstShared.getBoolean("isFristDownLoad", true); // 当不存在 即首启动时 则设置为true
SharedPreferences.Editor editor = firstShared.edit();
if (isFirst) {
Intent intent = new Intent(QiDongActivity.this, GuideActivity.class);
startActivity(intent);
finish();
editor.putBoolean("isFristDownLoad", false);
editor.apply();
} else {
setContentView(R.layout.activity_qi_dong);
StatusBarUtil.setTransparent(QiDongActivity.this);
//申请权限
getPhoneState();
}
}
启动界面:
public class GuideActivity extends AppCompatActivity{
// 引导页图片资源
private static final int[] pics = { R.layout.guide_pic1, R.layout.guide_pic2};
private ImageView imageView0,imageView1;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
StatusBarUtil.setTransparent(GuideActivity.this);
setContentView(R.layout.activity_guide);
ViewPager viewPager = findViewById(R.id.view_pager);
imageView0 = findViewById(R.id.imageview0);
imageView1 = findViewById(R.id.imageview1);
imageView0.setImageResource(R.drawable.guide_white_circle);
imageView1.setImageResource(R.drawable.guide_transparent_circle);
List views = new ArrayList<>();
// 初始化引导页视图列表
for (int i = 0; i < pics.length; i++) {
View view = LayoutInflater.from(this).inflate(pics[i], null);
if (i == pics.length - 1) {
Button startBtn = view.findViewById(R.id.btn_enter);
startBtn.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
Intent intent = new Intent(GuideActivity.this, QiDongActivity.class);
startActivity(intent);
}
});
}
views.add(view);
}
GuideViewPagerAdapter adapter = new GuideViewPagerAdapter(views);
viewPager.setAdapter(adapter);
viewPager.addOnPageChangeListener(new PageChangeListener());
}
private class PageChangeListener implements ViewPager.OnPageChangeListener {
@Override
public void onPageScrollStateChanged(int position) {
}
@Override
public void onPageScrolled(int position, float arg1, int arg2) {
}
@Override
public void onPageSelected(int position) {
if(position == 0){
imageView0.setImageResource(R.drawable.guide_white_circle);
imageView1.setImageResource(R.drawable.guide_transparent_circle);
}else {
imageView1.setImageResource(R.drawable.guide_white_circle);
imageView0.setImageResource(R.drawable.guide_transparent_circle);
}
}
}
@Override
protected void onResume() {
super.onResume();
}
@Override
protected void onPause() {
super.onPause();
finish();
}
@Override
protected void onStop() {
super.onStop();
}
@Override
protected void onDestroy() {
super.onDestroy();
}
}
GuideAdapter
public class GuideViewPagerAdapter extends PagerAdapter {
private List mListViews;
public GuideViewPagerAdapter(List mListViews) {
this.mListViews = mListViews;
}
//直接继承PagerAdapter,至少必须重写下面的四个方法,否则会报错
@Override
public void destroyItem(ViewGroup container, int position, Object object) {
container.removeView(mListViews.get(position));//删除页卡
}
@Override
public Object instantiateItem(ViewGroup container, int position){
//这个方法用来实例化页卡
container.addView(mListViews.get(position), 0);//添加页卡
return mListViews.get(position);
}
@Override
public int getCount() {
return mListViews.size();//返回页卡的数量
}
@Override
public boolean isViewFromObject(View arg0, Object arg1) {
return arg0==arg1;//官方提示这样写
}
}
activity_guide.xml
android:layout_width="match_parent"
android:layout_height="match_parent"
/>
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:orientation="horizontal"
android:layout_alignParentBottom="true"
android:layout_marginBottom="5dp"
android:layout_centerHorizontal="true"
>
android:layout_width="10dp"
android:layout_height="10dp"
/>
android:layout_width="10dp"
android:layout_height="10dp"
android:layout_marginLeft="2dp"
android:layout_marginStart="2dp" />
选中的点和未选中的点样式:
android:topRightRadius="5dp"
android:bottomRightRadius="5dp"
android:bottomLeftRadius="5dp"/>
android:topRightRadius="5dp"
android:bottomRightRadius="5dp"
android:bottomLeftRadius="5dp"/>
guide_pic1 和 guide_pic2
android:layout_width="match_parent" android:layout_height="match_parent">
android:layout_width="match_parent"
android:layout_height="match_parent"
android:src="@mipmap/guide_01"
android:scaleType="fitXY"
/>
问题:
一、明明设置了高度和宽度都matchparent 但是还是不能覆盖全屏
解决:
1 可能是你的图片本身大小不够 所以即使控件matchparent 但是 图片却只有这么大 所以改图片大小
2 图片够大,还是不能覆盖。将 ImageView加一个属性
android:scaleType="fitXY"
就可以了
android程序启动动画,Android设置软件启动动画(以及初次安装的几张引导图)相关推荐
- C# 将应用程序通过注册表设置开机启动项
转载自C# 将当前应用程序写入到注册表开机启动项中 //设置开机启动 private void AutoRunAfterStart(){//获取当前应用程序的路径string localPath = ...
- java写一个android程序_【Android开发笔记】3.编写第一个Android程序
前言 上一节我们通过一个Demo熟悉了Eclipse的基本使用.如何在模拟器和手机中运行以及如何打包成APK,但没具体编写代码,相信很多同学已经按耐不住了吧,这一节我们会动手编写代码来熟悉Androi ...
- Qt设置软件启动动画(开屏动画、欢迎界面)
启动动画的相关接口为QSplashScreen. 版本1:显示图片+延时 代码很简单,只需要在main.cpp中添加几行代码即可实现: #include "pclvisualizer.h&q ...
- 计算机任务管理器设置软件启动,电脑软件开机自动启动,教你一招禁止启动,能够有效提升开机速度...
往往在我们的理论观念里,电脑有了固态硬盘运行速度就会加速,所以以为无论是什么时候都是一样的运行速度. 其实不然,就有一个网友与我说,他自己的电脑是固态硬盘的,却不知道为什么大原因,电脑怎么启动的没有以 ...
- android程序如何联网,如何判断软件程序是否联网 联网状态提示信息Android实现
在项目中,经常需要判断是否有网络连接.最近学习了如何判断软件是否联网,如果没有联网,弹出提示信息,连接网络. 效果: (1)联网情况下: (2)不联网情况下: (3)点击"检测设置" ...
- 电脑桌面云便签敬业签怎么设置软件启动时显示超时提醒弹窗?
一.打开已登录的敬业签Windows电脑桌面云便签,点击左上方用户头像,或按下默认快捷键Alt+Z,也可以在云便签右上方找到"设置">"设置",进入系统设 ...
- 拼图android程序,可视化开发Android应用程序:拼图开发模式App Inventor
可视化开发Android应用程序:拼图开发模式App Inventor 作 者:王向辉 等编著 出版时间:2013 内容简介 <可视化开发Android应用程序:拼图开发模式App Invent ...
- 简述Android 程序执行流程,Android系统启动流程简述
Android的启动从长按电源键开始,先加载ROM中的引导程序Bootloader.Linux内核到RAM中:然后执行第一个用户级进程Init,Init进程分析和运行init.rc文件,运行Zygot ...
- 简单的Android程序多少钱,Android简单程序利息计算器
我在编程Android的第一课,并为我的第一次尝试,我试图开发一个利息计算器.该应用程序启动,但然后崩溃.代码如下:Android简单程序利息计算器 package com.example.vitor ...
最新文章
- Java开发中的23种设计模式详解(转)
- SpringMVC如何是使用自动注入@autowrid
- 【挑战极限】最短AJAX创建代码
- 零基础入门人工智能有门槛吗?学会这些就够了
- Android 解析AsyncTask(一)
- boost::coroutine模块实现不对称echo的测试程序
- 2018 ACM ICPC Asia Regional - Seoul B.Cosmetic Survey
- Redis学习总结(10)——缓存雪崩、缓存穿透、缓存并发、缓存预热、缓存更新、缓存降级、缓存算法的概念及解决思路总结
- elupload获取文件名与路径_Python检查word文件中的特殊“标记”词是否与文件名中的一致(实例59)...
- 电脑办公技巧:他做了9小时的工作,我5秒就做完了
- HTML点击按钮弹出颜色选择器,css如何实现按钮点击与松开颜色不同?
- 三星S7edge刷极光ROM的总结
- 科学计算机的平均数在哪,平均数
- IC、FPGA验证学习
- python 爬取整部漫画(简单的图片爬取)
- vs2015已停止工作,事件名称APPCRASH 故障模块KERNELBASE.dll
- 缠论中枢的判断以及应用(完整版)
- 计算机网络——数字数据的数字编码
- 【xquic】ubuntu20.04: libevent ( Event notification library )构建
- C# LiveUpdate.exe实现文件在线更新(原理说明,使用指南一)
热门文章
- UDP通讯接收案例(组播方式)
- SwiftUI3.0用户登录输入非空校验经典案例
- IOS开发基础之微博项目第1天-OC版
- 怎么用计算机弹出soldout,SOLDOUT2游戏新手攻略玩法全面介绍
- 混合app用百分比还是rem_如何用平板APP和手机APP控制混合音视频矩阵切换器
- html5 js保存token,vue生成token并保存到本地存储中
- Qt VS Tools用不了解决方法
- f12控制台如何查看consul_基于 Consul 的 Go Micro 客户端服务发现是如何实现的
- 苹果通知推送服务(APNS)关键特性摘要
- sqlserver 库服务器导数据