日期:2018.9.11


最近在做的这个项目里使用了欢迎页,只显示一张图片太过于单调,没有服务器(编程小白,没钱买服务器)也不能调用服务器的资源,于是想到是不是可以获取其他网站的图片,便想到Bing每日一图的图片能不能获取到手机上作为欢迎界面,网上查了一下,果然有很多教程,于是自己也做了一下,不废话,直接上代码。


第一部分:欢迎页代码

新建一个SplashActivity并自动生成一个activity_splash.xml布局文件,布局文件代码如下:一个ImageView用于显示背景图片,注意这里的scaleType属性,设置为centerCrop,之前在《每日一记—ImageView的scaleType属性和获取当前手机日期、时间的方法》已经介绍过,这个属性值的意思是按比例扩大图片的size居中显示,使得图片长 (宽)等于或大于View的长(宽)(图片会发生正常的裁剪);一个TextView用于显示软件版本号

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"android:layout_width="match_parent"android:layout_height="match_parent"><ImageViewandroid:id="@+id/iv_background1"android:layout_width="match_parent"android:layout_height="match_parent"android:scaleType="centerCrop"android:src="#ff00aaff"/><TextViewandroid:id="@+id/tv_version"android:layout_width="wrap_content"android:layout_height="wrap_content"android:layout_centerInParent="true"android:textColor="@android:color/white"android:textSize="20sp"android:text="V1.0"/>
</RelativeLayout>

SplashActivity.java中的代码如下:代码中AnalysisUtils.isFolderExists用于判断文件夹是否存在,如果不存在就直接创建一个,AnalysisUtils.fileIsExists用于判断文件是否存在,这里如果不存在的话,跳转到获取being每日一图的代码,cutPictureUtils.decodeUriAsBitmap用于将图片的URL转换为bitmap;接下来就是获取程序包信息;最后就是运用Timer和TimerTask配合实现眼石3秒的作用,延时结束后直接跳转到登录界面,另外在跳转时我加入了一个自动登录判断,将登录状态isLogin保存在了SharedPreferences中。

    private TextView tv_version;private ImageView iv_background;private ProgressDialog progressDialog;@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_splash);//设置为此界面为竖屏(因为是欢迎界面)setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT);init();}private void init(){tv_version= findViewById(R.id.tv_version);iv_background=findViewById(R.id.iv_background1);SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy年MM月dd日");// 如果想加入时分秒,pattern设为"yyyy年MM月dd日 HH:mm:ss"Date date = new Date(System.currentTimeMillis());String fileName = simpleDateFormat.format(date) + ".jpg";Uri imgUri= Uri.parse("file:///sdcard/crazystudy/"+ fileName);if(AnalysisUtils.isFolderExists("/sdcard/crazystudy/")){if (AnalysisUtils.fileIsExists(imgUri.getPath())){// 显示出来CutPictureUtils cutPictureUtils=new CutPictureUtils(SplashActivity.this,"");iv_background.setImageBitmap(cutPictureUtils.decodeUriAsBitmap(imgUri));}else {//获取bing背景图片}}try{//获取程序包信息PackageInfo info=getPackageManager().getPackageInfo(getPackageName(),0);tv_version.setText("V"+info.versionName);}catch (PackageManager.NameNotFoundException e){tv_version.setText("V");}//让此界面延迟3秒后再跳转,timer中有一个线程,这个线程不断执行taskTimer timer = new Timer();//TimerTask类表示一个在指定时间内执行的taskTimerTask task = new TimerTask() {@Overridepublic void run() {//打开后判断是否是登录状态,如果是,则自动登录SharedPreferences sp = getSharedPreferences("loginInfo",MODE_PRIVATE);boolean isLogin=sp.getBoolean("isLogin",false);Intent intent;if (isLogin){Intent data = new Intent();data.putExtra("isLogin",true);setResult(RESULT_OK,data);intent=new Intent(SplashActivity.this,MainActivity.class);}else {intent=new Intent(SplashActivity.this,LoginActivity.class);}startActivity(intent);SplashActivity.this.finish();}};timer.schedule(task,3000);      //设置这个task在延迟2秒之后自动执行}

使用到的两个Utils文件代码如下:

AnalysisUtils.java

/*** 判断文件夹是否存在,不存在则创建这个文件夹* @param strFolder* @return*/public static boolean isFolderExists(String strFolder) {File file = new File(strFolder);if (!file.exists()) {if (file.mkdir()) {return true;} elsereturn false;}return true;}/*** 判断文件是否存在(可以是文件夹或者是文件)* @param strFile* @return*/public static boolean fileIsExists(String strFile){try{File f=new File(strFile);if(!f.exists()){return false;}}catch (Exception e){return false;}return true;}

cutPictureUtils.java

/*** 通过URL获得图片* @param uri* @return 返回图片*/public Bitmap decodeUriAsBitmap(Uri uri){Bitmap bitmap = null;try {bitmap = BitmapFactory.decodeStream(activity.getContentResolver().openInputStream(uri));} catch (FileNotFoundException e) {e.printStackTrace();return null;}return bitmap;}

每日一记—获取Bing每日一图实现Android欢迎页(一)相关推荐

  1. 每日一记—获取Bing每一日一图实现Android欢迎页(二)

    日期2018.9.12 第二部分:获取bing每日一图 通过访问   http://www.bing.com/HPImageArchive.aspx?format=js&idx=0&n ...

  2. flask 自动换背景,使用python获取bing每日壁纸当作登陆背景图片

    欢迎关注原创视频教程 Python微信订餐小程序课程视频 https://edu.csdn.net/course/detail/36074 Python实战量化交易理财系统 https://edu.c ...

  3. 获取bing壁纸php,php获取bing每日壁纸的示例

    php获取bing每日壁纸的示例 这篇文章主要介绍了使用php获取bing每日壁纸的示例,需要的朋友可以参考下 代码如下: $str=file_get_contents('http://cn.bing ...

  4. 获取bing壁纸php,php获取bing每日壁纸示例分享

    php获取bing每日壁纸示例分享 复制代码 代码如下: $str=file_get_contents('http://cn.bing.com/HPImageArchive.aspx?idx=0&am ...

  5. C#获取bing每日一图的图片及图片故事(IDE为VS Code .net core)

    BingImage 获取必应每日一图及故事 获取图片api:http://cn.bing.com/HPImageArchive.aspx?format=js&idx=0&n=1 idx ...

  6. 获取Bing每日图片API接口

    bing图片每日更新,对于这一点感觉挺不错的,如果能够把bing每日图片作为博客背景是不是很不错呢?首先我们进入Bing首页,会发现自动转到中国版.不过这没关系,中国版更符合国情,速度也比国际版快一些 ...

  7. 【JetPack+Retrofit+Rxjava】获取Bing每日一图并显示ViewModel+LiveData+DataBinding+MVVM 补充笔记

    扉: 原文来自:Android官方架构组件ViewModel+LiveData+DataBinding架构属于自己的MVVM 很喜欢作者的思路,但是使用Kotlin需要配置的东西好多并且很多细节要重写 ...

  8. bing超高清壁纸php,如何获取 bing 每日壁纸(超高清版)

    需求描述 必应作为一个在壁纸圈做搜索引擎最优秀的站点,其每日壁纸也是可圈可点的. 那么自然就生出了如何将必应的每日壁纸保存下来,用作电脑桌面壁纸轮播的想法. 实现方式 简单粗暴 如何下载 最简单,不需 ...

  9. 动态获取Bing每日壁纸

    我们可以通过访问:http://cn.bing.com/HPImageArchive.aspx?format=xml&idx=0&n=1获得一个XML文件,里面包含了图片的地址. 上面 ...

  10. bing每日壁纸官网获取

    这是bing的官网api:https://cn.bing.com/HPImageArchive.aspx?format=js&idx=0&n=1&mkt=zh-CN 这里只需要 ...

最新文章

  1. 开源代码hosting openfoundryfrom tw
  2. 动态代理机制之查看一个类或接口中有哪些方法
  3. P5357 【模板】AC自动机(二次加强版)
  4. MySql中的varchar类型
  5. ES6 -数组的扩展
  6. 如何用好nofollow?nofollow应用的案例分析
  7. thinkpad使用u盘启动
  8. DeepFaceLab:视频中有多人,仅替换特定人脸的方法!
  9. 开发人员系统功能设计常用办公软件分享
  10. Android手机安装.pem证书文件
  11. 03_美国医疗保健行业的数据介绍
  12. recycle view drag and swip demo
  13. Hadoop Yarn 安装
  14. 有道云笔记怎样与微信连接服务器,有道云笔记打通微信接口 文章永久保存多终端查看...
  15. 基于MATLAB燃料电池控制系统测试平台
  16. linux系统怎么设置为中午_Linux修改系统时间与时区
  17. 想做好网络营销?这四步网络营销推广方法至关重要
  18. IDEA中搜索 matches limit 默认显示100,调整限制,增加搜索返回数量
  19. python爬虫获取图片无法打开或已损坏_Python爬虫,图片下载完后是损坏的,怎么解决?...
  20. 图像融合之泊松编辑(Poisson Editing)(1):简略语言概述算法

热门文章

  1. 将pdf文件缩小的最快速方法,pdf文件变小的方法
  2. Android 一篇文章轻松搞懂什么是Callback回调
  3. Android Studio中AndroidManifest.xml文件中application标签
  4. 旗袍时尚:青花瓷与青花时装
  5. 我曾做过陈士成,也做过孔乙己,还做过阿Q
  6. 论文翻译:Few-Shot Object Detection with Attention-RPN and Multi-Relation Detector
  7. openg离线包_OpenGL离线渲染和缓冲区对象
  8. 去他妈的某日葵,老子自建服务器搭建远程控制.
  9. C# 曲线控件 曲线绘制 实时曲线 多曲线控件 开发
  10. 如何做好会员营销 三步教你看懂会员管理