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设置软件启动动画(以及初次安装的几张引导图)相关推荐

  1. C# 将应用程序通过注册表设置开机启动项

    转载自C# 将当前应用程序写入到注册表开机启动项中 //设置开机启动 private void AutoRunAfterStart(){//获取当前应用程序的路径string localPath = ...

  2. java写一个android程序_【Android开发笔记】3.编写第一个Android程序

    前言 上一节我们通过一个Demo熟悉了Eclipse的基本使用.如何在模拟器和手机中运行以及如何打包成APK,但没具体编写代码,相信很多同学已经按耐不住了吧,这一节我们会动手编写代码来熟悉Androi ...

  3. Qt设置软件启动动画(开屏动画、欢迎界面)

    启动动画的相关接口为QSplashScreen. 版本1:显示图片+延时 代码很简单,只需要在main.cpp中添加几行代码即可实现: #include "pclvisualizer.h&q ...

  4. 计算机任务管理器设置软件启动,电脑软件开机自动启动,教你一招禁止启动,能够有效提升开机速度...

    往往在我们的理论观念里,电脑有了固态硬盘运行速度就会加速,所以以为无论是什么时候都是一样的运行速度. 其实不然,就有一个网友与我说,他自己的电脑是固态硬盘的,却不知道为什么大原因,电脑怎么启动的没有以 ...

  5. android程序如何联网,如何判断软件程序是否联网 联网状态提示信息Android实现

    在项目中,经常需要判断是否有网络连接.最近学习了如何判断软件是否联网,如果没有联网,弹出提示信息,连接网络. 效果: (1)联网情况下: (2)不联网情况下: (3)点击"检测设置" ...

  6. 电脑桌面云便签敬业签怎么设置软件启动时显示超时提醒弹窗?

    一.打开已登录的敬业签Windows电脑桌面云便签,点击左上方用户头像,或按下默认快捷键Alt+Z,也可以在云便签右上方找到"设置">"设置",进入系统设 ...

  7. 拼图android程序,可视化开发Android应用程序:拼图开发模式App Inventor

    可视化开发Android应用程序:拼图开发模式App Inventor 作 者:王向辉 等编著 出版时间:2013 内容简介 <可视化开发Android应用程序:拼图开发模式App Invent ...

  8. 简述Android 程序执行流程,Android系统启动流程简述

    Android的启动从长按电源键开始,先加载ROM中的引导程序Bootloader.Linux内核到RAM中:然后执行第一个用户级进程Init,Init进程分析和运行init.rc文件,运行Zygot ...

  9. 简单的Android程序多少钱,Android简单程序利息计算器

    我在编程Android的第一课,并为我的第一次尝试,我试图开发一个利息计算器.该应用程序启动,但然后崩溃.代码如下:Android简单程序利息计算器 package com.example.vitor ...

最新文章

  1. Java开发中的23种设计模式详解(转)
  2. SpringMVC如何是使用自动注入@autowrid
  3. 【挑战极限】最短AJAX创建代码
  4. 零基础入门人工智能有门槛吗?学会这些就够了
  5. Android 解析AsyncTask(一)
  6. boost::coroutine模块实现不对称echo的测试程序
  7. 2018 ACM ICPC Asia Regional - Seoul B.Cosmetic Survey
  8. Redis学习总结(10)——缓存雪崩、缓存穿透、缓存并发、缓存预热、缓存更新、缓存降级、缓存算法的概念及解决思路总结
  9. elupload获取文件名与路径_Python检查word文件中的特殊“标记”词是否与文件名中的一致(实例59)...
  10. 电脑办公技巧:他做了9小时的工作,我5秒就做完了
  11. HTML点击按钮弹出颜色选择器,css如何实现按钮点击与松开颜色不同?
  12. 三星S7edge刷极光ROM的总结
  13. 科学计算机的平均数在哪,平均数
  14. IC、FPGA验证学习
  15. python 爬取整部漫画(简单的图片爬取)
  16. vs2015已停止工作,事件名称APPCRASH 故障模块KERNELBASE.dll
  17. 缠论中枢的判断以及应用(完整版)
  18. 计算机网络——数字数据的数字编码
  19. 【xquic】ubuntu20.04: libevent ( Event notification library )构建
  20. C# LiveUpdate.exe实现文件在线更新(原理说明,使用指南一)

热门文章

  1. UDP通讯接收案例(组播方式)
  2. SwiftUI3.0用户登录输入非空校验经典案例
  3. IOS开发基础之微博项目第1天-OC版
  4. 怎么用计算机弹出soldout,SOLDOUT2游戏新手攻略玩法全面介绍
  5. 混合app用百分比还是rem_如何用平板APP和手机APP控制混合音视频矩阵切换器
  6. html5 js保存token,vue生成token并保存到本地存储中
  7. Qt VS Tools用不了解决方法
  8. f12控制台如何查看consul_基于 Consul 的 Go Micro 客户端服务发现是如何实现的
  9. 苹果通知推送服务(APNS)关键特性摘要
  10. sqlserver 库服务器导数据