Android实践之简易天气(二)

简介: Android实践之简易天气(二)

Android实践之简易天气(二)

上一篇 Android实践之简易天气(一)已经拿到了服务器端的数据并进行了解析。按照计划,这次就是设计界面并把拿到的数据更新到界面。

界面设计

设计天气状态界面的设计

都是一些比较基础的,就不需要讲解什么了,相信有点界面基础的一看就懂了,就直接粘贴代码吧。作者:fnhfire_7030

<?xml version="1.0" encoding="utf-8"?>
<android.support.v4.widget.SwipeRefreshLayout 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:id="@+id/swipe"
                                              android:layout_width="match_parent"
                                              android:layout_height="wrap_content">
    <ScrollView
        android:id="@+id/scrollView"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        app:layout_behavior="@string/appbar_scrolling_view_behavior"
        tools:context=".MainActivity"
        tools:showIn="@layout/activity_main">
        <LinearLayout
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:orientation="vertical"
            android:paddingLeft="5dp"
            android:paddingRight="5dp"
            android:paddingTop="5dp"
            tools:context="com.wf.myndkdemo.MainActivity">
            <RelativeLayout
                android:layout_width="match_parent"
                android:layout_height="wrap_content">
                <RadioButton
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:button="@null"
                    android:drawableLeft="@mipmap/ic_location_normal"
                    android:text="@string/location"
                    android:textColor="@color/white"/>
                <TextView
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:layout_alignParentEnd="true"
                    android:layout_alignParentRight="true"
                    android:text="@string/srcfrom"
                    android:textColor="@color/gray"/>
            </RelativeLayout>
            <com.baidu.apistore.sdk.customfont.CustomFontsTextView
                android:id="@+id/tmp"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_gravity="center"
                android:paddingLeft="40dp"
                android:paddingTop="100dp"
                android:text="@string/tmp"
                android:textColor="@color/white"
                android:textSize="80sp"/>
            <com.baidu.apistore.sdk.customfont.CustomFontsTextView
                android:id="@+id/wea"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_gravity="center"
                android:paddingTop="5dp"
                android:text="@string/weather"
                android:textColor="@color/white"
                android:textSize="24sp"/>
            <LinearLayout
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:orientation="horizontal">
                <TextView
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:background="@drawable/shape_bg"
                    android:text="@string/pm"
                    android:textColor="@color/center"
                    android:textSize="15sp"/>
                <TextView
                    android:id="@+id/pm"
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:paddingLeft="5dp"
                    android:text="50"
                    android:textColor="@color/white"
                    android:textSize="16sp"/>
            </LinearLayout>
            <ImageView
                android:layout_width="match_parent"
                android:layout_height="1dp"
                android:layout_marginTop="10dp"
                android:background="@color/gray"/>
            <include layout="@layout/layoutweekweather"/>
            <include layout="@layout/layout_txt"/>
        </LinearLayout>
    </ScrollView>
</android.support.v4.widget.SwipeRefreshLayout>

大家一定发现了SwipeRefreshLayout 了吧,对,这里用到了下拉刷新,我这里用的是系统自带的下拉刷新,当然你也可以选择比较有名的第三方控件PullToRefresh这个控件里面的功能就比较多了,里面具体的功能你可以自己去发现。

你们一定也发现了上面的布局中包含了include了吧!就是下面这些

<include layout="@layout/layoutweekweather"/>
            <include layout="@layout/layout_txt"/>

聪明的你,一定知道这是在这个布局里面又添加了另外的两个布局,这两个布局分别是,一周的天气数据和今天的体感指数。作者:fnhfire_7030

一周的天气数据布局

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
              android:layout_width="match_parent"
              android:layout_height="wrap_content"
              android:orientation="vertical"
              android:paddingTop="10dp"
    >
    <RelativeLayout
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_marginBottom="5dp"
        android:layout_marginTop="5dp"
        android:orientation="horizontal">
        <TextView
            android:id="@+id/today"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="@string/today"
            android:textColor="@color/white"
            android:textSize="16sp"
            />
        <TextView
            android:id="@+id/today_tmp1"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_alignBaseline="@+id/today"
            android:layout_marginLeft="5dp"
            android:layout_toRightOf="@+id/today"
            android:text="@string/today"
            android:textColor="@color/gray"
            android:textSize="14sp"
            />
        <ImageView
            android:id="@+id/weather_image1"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_centerInParent="true"
            android:src="@mipmap/ic_weather_default"/>
        <TextView
            android:id="@+id/wind_det1"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_marginRight="5dp"
            android:layout_toLeftOf="@+id/wind_sd1"
            android:text="@string/today"
            android:textColor="@color/white"
            android:textSize="16sp"
            />
        <TextView
            android:id="@+id/wind_sd1"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_alignBaseline="@+id/wind_det1"
            android:layout_alignParentEnd="true"
            android:layout_alignParentRight="true"
            android:layout_alignParentTop="true"
            android:text="@string/today"
            android:textColor="@color/gray"
            android:textSize="14sp"/>
    </RelativeLayout>
    <ImageView
        android:layout_width="match_parent"
        android:layout_height="1dp"
        android:background="@color/gray"/>
</LinearLayout>

上面的在LinearLayout 布局内的ImageView 是用来进行作者:fnhfire_7030布局分割的。

体感指数布局

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
              android:layout_width="match_parent"
              android:layout_height="match_parent"
              android:orientation="vertical">
    <LinearLayout
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:paddingTop="5dp">
        <TextView
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="@string/combrf"
            android:textColor="@color/white"
            android:textSize="18sp"/>
        <TextView
            android:id="@+id/combrt"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:paddingLeft="10dp"
            android:text="@string/combrf"
            android:textColor="@color/white"
            android:textSize="18sp"/>
    </LinearLayout>
    <TextView
        android:id="@+id/comContent"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="@string/combrf"
        android:textColor="@color/gray"
        android:textSize="14sp"/>
    <ImageView
        android:layout_width="match_parent"
        android:layout_height="1dp"
        android:layout_marginBottom="5dp"
        android:layout_marginTop="5dp"
        android:background="@color/gray"/>
    <LinearLayout
        android:layout_width="wrap_content"
        android:layout_height="wrap_content">
        <TextView
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="@string/cwbrf"
            android:textColor="@color/white"
            android:textSize="18sp"/>
        <TextView
            android:id="@+id/cwbrf"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:paddingLeft="10dp"
            android:text="@string/combrf"
            android:textColor="@color/white"
            android:textSize="18sp"/>
    </LinearLayout>
    <TextView
        android:id="@+id/cwContent"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="@string/cwbrf"
        android:textColor="@color/gray"
        android:textSize="14sp"/>
    <ImageView
        android:layout_width="match_parent"
        android:layout_height="1dp"
        android:layout_marginBottom="5dp"
        android:layout_marginTop="5dp"
        android:background="@color/gray"/>
    <LinearLayout
        android:layout_width="wrap_content"
        android:layout_height="wrap_content">
        <TextView
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="@string/dress_brf"
            android:textColor="@color/white"
            android:textSize="18sp"/>
        <TextView
            android:id="@+id/dress_brf"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:paddingLeft="10dp"
            android:text="@string/dress_brf"
            android:textColor="@color/white"
            android:textSize="18sp"/>
    </LinearLayout>
    <TextView
        android:id="@+id/dressContent"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="@string/dress_brf"
        android:textColor="@color/gray"
        android:textSize="14sp"/>
    <ImageView
        android:layout_width="match_parent"
        android:layout_height="1dp"
        android:layout_marginBottom="5dp"
        android:layout_marginTop="5dp"
        android:background="@color/gray"/>
</LinearLayout>
38

同样,上面高度为1dp的ImageView 也是分界线。

这里我又增加了一个布局,把这几个布局都包含了进去,具体如下:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:id="@+id/content_layout"
    android:background="@drawable/content_bg"
    android:clipToPadding="true"
    android:fitsSystemWindows="true"
    >
    <include layout="@layout/content_main"></include>
</LinearLayout>

因为content_main 里面已经包含了其他的布局,这里直接把content_main 包含进来就可以了。上面的布局中的这两个属性是实现沉浸式状态栏需要的。如下:

android:clipToPadding="true"
    android:fitsSystemWindows="true"

布局效果图

好了,到这里布局就已经完成了。下面就让大家看看效果吧!

20160528160727125.png

20160528160807641.png

看到这个效果图有没有很熟悉呢!我不会告诉你,我是仿yun os天气界面进行布局设置的,当然里面的图片资源也是来自yun os天气的,毕竟没有专门的UI设计嘛!

本来想把数据更新到界面都放在这里讲的,但是呢,再说的话篇幅就有点长了,就下次吧!作者:fnhfire_7030

这里附上源码地址:GitHub


相关文章
|
5天前
|
安全 数据处理 Android开发
构建高效Android应用:Kotlin协程的实践之路
【4月更文挑战第26天】 在面对现代Android开发时,性能优化和流畅的用户体验成为了开发者们追求的目标。Kotlin作为一种现代化的编程语言,通过其协程特性为Android应用带来了前所未有的并发处理能力。本文将深入探讨如何利用Kotlin协程提升Android应用的响应性和效率,同时保持代码的简洁性。我们将从协程的基础概念出发,逐步揭示如何在实际应用中运用这些强大的工具,以及它们如何改善应用架构和用户交互体验。
|
9天前
|
移动开发 Java Android开发
构建高效Android应用:探究Kotlin协程的优势与实践
【4月更文挑战第22天】 在移动开发领域,性能优化和响应性是衡量应用程序质量的关键指标。近年来,Kotlin语言因其简洁性和功能性在Android社区中获得了广泛认可。特别是Kotlin协程,作为一种新的并发处理机制,正在改变开发者编写异步和后台任务的方式。本文将探讨Kotlin协程的核心优势,并通过实例展示如何在Android应用中实现它们以提高性能和用户体验。
|
1天前
|
移动开发 调度 Android开发
构建高效Android应用:Kotlin协程的实践之路
【4月更文挑战第30天】 在移动开发领域,性能优化与流畅的用户体验始终是开发者追求的目标。随着Kotlin语言在Android开发中的普及,其提供的协程特性成为了解决异步编程问题的有力工具。本文将通过深入分析Kotlin协程的原理与实践,展示如何在Android应用中利用协程提升响应速度和处理效率,同时保证代码的简洁性和可维护性。我们将从基本概念出发,逐步深入到协程的高级使用场景,帮助开发者构建更加高效的Android应用。
|
1天前
|
移动开发 Java Android开发
构建高效Android应用:Kotlin协程的实践之路
【4月更文挑战第30天】在移动开发领域,随着用户需求的不断增长和设备性能的持续提升,实现流畅且高效的用户体验已成为开发者的首要任务。针对Android平台,Kotlin协程作为一种新兴的异步编程解决方案,以其轻量级线程管理和简洁的代码逻辑受到广泛关注。本文将深入探讨Kotlin协程的概念、优势以及在实际Android应用中的运用,通过实例演示如何利用协程提升应用性能和响应能力,为开发者提供一条构建更高效Android应用的实践路径。
|
1天前
|
缓存 监控 API
Android应用性能优化实践
【4月更文挑战第30天】 随着智能手机的普及,用户对移动应用的性能要求越来越高。对于Android开发者而言,提升应用的性能是吸引和保留用户的关键因素之一。本文将深入探讨影响Android应用性能的主要因素,并提供一系列的优化策略,旨在帮助开发者构建更加流畅和高效的应用体验。
|
1天前
|
移动开发 调度 Android开发
构建高效Android应用:Kotlin协程的实践与优化
【4月更文挑战第30天】在移动开发领域,性能和响应性是衡量应用质量的关键指标。对于Android平台而言,Kotlin协程作为一种新兴的异步编程解决方案,提供了更为简洁和高效的处理并发任务的能力。本文将深入探讨Kotlin协程的核心原理,以及如何通过它们来提升Android应用的性能。我们将从基础概念出发,逐步介绍协程的创建、管理以及与Android UI线程的交互,并最终展示如何优化现有代码以利用协程的优势。
|
2天前
|
移动开发 数据库 Android开发
构建高效Android应用:探究Kotlin协程的优化实践
【4月更文挑战第29天】在移动开发领域,尤其是Android平台上,性能优化一直是开发者关注的重点。近年来,Kotlin语言凭借其简洁性和功能性成为Android开发的热门选择。其中,Kotlin协程作为一种轻量级的并发处理机制,为编写异步代码、网络请求和数据库操作提供了极大的便利。本文将深入探讨Kotlin协程在Android应用中的性能优化技巧,帮助开发者构建更加高效的应用程序。
|
3天前
|
API 调度 Android开发
构建高效Android应用:Kotlin协程的实践之路
【4月更文挑战第28天】随着移动应用开发的不断深入,开发者们追求更高效的编码方式和性能优化。Kotlin作为一种现代的编程语言,其协程特性提供了异步编程的新范式,使得处理并发任务更加简洁高效。本文将探讨如何在Android应用开发中利用Kotlin协程提升性能和用户体验,同时确保代码的可读性和可维护性。通过实例分析和代码演示,我们将深入了解协程在Android中的实际应用及其带来的优势。
9 1
|
3天前
|
移动开发 调度 Android开发
构建高效Android应用:探究Kotlin协程的优势与实践
【4月更文挑战第28天】 在移动开发领域,尤其是针对Android平台,性能优化和异步处理一直是开发者关注的焦点。随着Kotlin语言的普及,其提供的协程功能已经成为处理异步任务的强大工具。本文将深入探讨Kotlin协程在Android应用开发中的优势,并通过实例展示如何利用协程提升应用性能和响应能力。我们将分析协程与传统线程和AsyncTask的对比,以及如何在实际项目中有效集成和调试协程。
|
7天前
|
调度 Android开发 开发者
构建高效Android应用:探究Kotlin协程的优势与实践
【4月更文挑战第24天】随着移动开发技术的不断演进,提升应用性能和用户体验已成为开发者的核心任务。在Android平台上,Kotlin语言凭借其简洁性和功能性成为主流选择之一。特别是Kotlin的协程功能,它为异步编程提供了一种轻量级的解决方案,使得处理并发任务更加高效和简洁。本文将深入探讨Kotlin协程在Android开发中的应用,通过实际案例分析协程如何优化应用性能,以及如何在项目中实现协程。