【安卓开发】天气预报app的UI界面(包含全部代码)
全部代码https://gitee.com/Cutele/weather-forecast-v1
增加了发送短信等功能
b站视频链接
主页面写的闪退了,就不记录了。
主要是借助适配器显示自己想要显示的页面。
城市管理
效果图
activity_city_manager.xml
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout 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:layout_width="match_parent"android:layout_height="match_parent"tools:context=".city_manager.CityManagerActivity"android:background="@mipmap/bg"><RelativeLayoutandroid:id="@+id/city_top_layout"android:background="#F5F5F5"android:layout_width="match_parent"android:layout_height="50dp"><ImageViewandroid:id="@+id/city_iv_back"android:layout_width="wrap_content"android:layout_height="match_parent"android:src="@mipmap/icon_back"android:layout_marginLeft="10dp"></ImageView><ImageViewandroid:layout_width="wrap_content"android:layout_height="match_parent"android:id="@+id/city_iv_delete"android:src="@mipmap/icon_write"android:layout_alignParentRight="true"android:layout_marginRight="10dp"></ImageView><TextViewandroid:layout_width="wrap_content"android:layout_height="wrap_content"android:id="@+id/city_tv_title"android:text="城市管理"android:textSize="25dp"android:textStyle="bold"android:layout_centerInParent="true"></TextView></RelativeLayout><ImageViewandroid:id="@+id/city_line"android:layout_width="match_parent"android:layout_height="1dp"android:background="#DCDCDC"android:layout_below="@id/city_top_layout"></ImageView><ListViewandroid:id="@+id/city_lv"android:layout_width="match_parent"android:layout_height="match_parent"android:layout_below="@id/city_line"android:divider="@null"></ListView><ImageViewandroid:layout_width="wrap_content"android:layout_height="wrap_content"android:id="@+id/city_iv_add"android:src="@mipmap/icon_add"android:layout_alignParentRight="true"android:layout_alignParentBottom="true"android:layout_margin="30dp"android:padding="10dp"></ImageView>
</RelativeLayout>
item_city_manager.xml
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"xmlns:app="http://schemas.android.com/apk/res-auto"android:orientation="vertical" android:layout_width="match_parent"android:layout_height="match_parent"android:padding="5dp"><androidx.cardview.widget.CardViewandroid:id="@+id/item_city_cv"android:layout_width="match_parent"android:layout_height="wrap_content"android:layout_margin="3dp"app:cardCornerRadius="10dp"app:cardElevation="5dp"app:contentPadding="10dp"><RelativeLayoutandroid:layout_width="match_parent"android:layout_height="wrap_content"><TextViewandroid:id="@+id/item_city_tv_city"android:layout_width="wrap_content"android:layout_height="wrap_content"android:layout_marginLeft="20dp"android:text="北京"android:textSize="22sp"android:textStyle="bold" /><TextViewandroid:id="@+id/item_city_tv_temp"android:layout_width="wrap_content"android:layout_height="wrap_content"android:textSize="40sp"android:layout_alignParentRight="true"android:layout_marginRight="20dp"android:text="12℃"/><ImageViewandroid:id="@+id/item_city_line1"android:layout_width="match_parent"android:layout_height="2dp"android:layout_below="@id/item_city_tv_temp"android:layout_marginTop="10dp"android:layout_marginBottom="10dp"android:background="#808A87"/><TextViewandroid:id="@+id/item_city_tv_condition"android:layout_width="wrap_content"android:layout_height="wrap_content"android:textSize="16sp"android:layout_below="@id/item_city_line1"android:text="天气:晴"/><TextViewandroid:id="@+id/item_city_line2"android:layout_width="2dp"android:layout_height="20dp"android:layout_toRightOf="@id/item_city_tv_condition"android:layout_marginLeft="5dp"android:layout_marginRight="5dp"android:background="#808A87"android:layout_below="@id/item_city_line1"/><TextViewandroid:id="@+id/item_city_wind"android:layout_width="wrap_content"android:layout_height="wrap_content"android:textSize="16sp"android:layout_toRightOf="@id/item_city_line2"android:layout_below="@id/item_city_line1"android:text="西南风2级"/><TextViewandroid:id="@+id/item_city_temprange"android:layout_width="wrap_content"android:layout_height="wrap_content"android:layout_below="@id/item_city_line1"android:textSize="16sp"android:layout_alignParentRight="true"android:text="16~9℃"android:layout_marginRight="20dp"/></RelativeLayout></androidx.cardview.widget.CardView>
</LinearLayout>
CityManagerActivity.java
package com.example.weather.city_manager;import androidx.appcompat.app.AppCompatActivity;import android.content.Intent;
import android.os.Bundle;
import android.view.View;
import android.widget.ArrayAdapter;
import android.widget.ImageView;
import android.widget.ListView;import com.example.weather.R;
import com.example.weather.db.DBManager;
import com.example.weather.db.DatabaseBean;import java.util.ArrayList;
import java.util.List;public class CityManagerActivity extends AppCompatActivity implements View.OnClickListener {ImageView addIv,backIv,deleteIv;ListView cityLv;List<String> mDatas;//列表数据源String[]hotCitys = {"北京","上海","广州","深圳","珠海","佛山","南京","苏州","厦门","长沙","成都","福州","杭州","武汉","青岛","西安","太原","沈阳","重庆","天津","南宁"};@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_city_manager);cityLv = findViewById(R.id.city_lv);mDatas = new ArrayList<>();mDatas.add("北京");mDatas.add("上海");mDatas.add("广州");mDatas.add("深圳");cityLv.setAdapter(new CityManagerAdapter(this,mDatas));}@Overridepublic void onClick(View view) {}
}
CityManagerAdapter.java
自定义适配器
package com.example.weather.city_manager;import android.content.Context;
import android.net.Uri;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.BaseAdapter;
import android.widget.ImageView;
import android.widget.TextView;import com.example.weather.R;
import com.example.weather.db.DatabaseBean;
import com.example.weather.juhe.JHTempBean;
import com.google.gson.Gson;import java.util.List;public class CityManagerAdapter extends BaseAdapter {Context context;List<String> mDatas;public CityManagerAdapter(Context context, List<String> mDatas) {this.context = context;this.mDatas = mDatas;}@Overridepublic int getCount() {return mDatas.size();}@Overridepublic Object getItem(int i) {return mDatas.get(i);}@Overridepublic long getItemId(int i) {return i;}@Overridepublic View getView(int i, View view, ViewGroup viewGroup) {ViewHolder holder = null;View convertView = null;if (convertView == null) {convertView = LayoutInflater.from(context).inflate(R.layout.item_city_manager,null);holder = new ViewHolder(convertView);convertView.setTag(holder);}else{holder = (ViewHolder) convertView.getTag();}String bean = mDatas.get(i);holder.cityTv.setText(bean);return convertView;}static class ViewHolder{TextView cityTv,conTv,currentTempTv,windTv,tempRangeTv;public ViewHolder(View itemView){cityTv = itemView.findViewById(R.id.item_city_tv_city);conTv = itemView.findViewById(R.id.item_city_tv_condition);currentTempTv = itemView.findViewById(R.id.item_city_tv_temp);windTv = itemView.findViewById(R.id.item_city_wind);tempRangeTv = itemView.findViewById(R.id.item_city_temprange);}}}
城市删除
效果图
activity_delete_city.xml
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout 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:layout_width="match_parent"android:layout_height="match_parent"android:orientation="vertical"tools:context=".city_manager.DeleteCityActivity"android:background="@mipmap/bg"><RelativeLayoutandroid:layout_width="match_parent"android:layout_height="60dp"android:background="#F5F5F5"android:id="@+id/delete_top_layout"><ImageViewandroid:id="@+id/delete_iv_error"android:layout_width="wrap_content"android:layout_height="match_parent"android:src="@mipmap/icon_error"android:layout_marginLeft="5dp"/><ImageViewandroid:id="@+id/delete_iv_right"android:layout_width="wrap_content"android:layout_height="match_parent"android:src="@mipmap/icon_right"android:layout_alignParentRight="true"android:layout_marginRight="5dp"/><TextViewandroid:id="@+id/delete_tv_title"android:text="城市管理"android:layout_centerInParent="true"android:textSize="18sp"android:textStyle="bold"android:layout_width="wrap_content"android:layout_height="wrap_content" /></RelativeLayout><ImageViewandroid:layout_width="match_parent"android:layout_height="1dp"android:background="#DCDCDC"/><ListViewandroid:layout_below="@id/delete_top_layout"android:id="@+id/delete_lv"android:divider="@null"android:layout_width="match_parent"android:layout_height="match_parent"></ListView>
</RelativeLayout>
item_deletecity.xml
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"xmlns:app="http://schemas.android.com/apk/res-auto"android:orientation="vertical" android:layout_width="match_parent"android:layout_height="match_parent"android:padding="5dp"><androidx.cardview.widget.CardViewandroid:id="@+id/item_delete_cv"android:layout_width="match_parent"android:layout_height="wrap_content"android:layout_margin="5dp"app:cardElevation="5dp"app:cardCornerRadius="10dp"app:contentPadding="20dp"><RelativeLayoutandroid:layout_width="match_parent"android:layout_height="60dp"><ImageViewandroid:id="@+id/item_delete_iv"android:layout_width="wrap_content"android:layout_height="wrap_content"android:src="@mipmap/icon_laji"android:layout_centerVertical="true"android:layout_marginLeft="10dp"/><TextViewandroid:id="@+id/item_delete_tv"android:layout_width="wrap_content"android:layout_height="wrap_content"android:text="北京"android:textSize="20sp"android:layout_toRightOf="@id/item_delete_iv"android:layout_centerVertical="true"android:layout_marginLeft="20dp"android:textStyle="bold"/></RelativeLayout></androidx.cardview.widget.CardView>
</RelativeLayout>
DeleteCityActivity.java
package com.example.weather.city_manager;import androidx.appcompat.app.AppCompatActivity;import android.os.Bundle;
import android.widget.ArrayAdapter;
import android.widget.ImageView;
import android.widget.ListView;import com.example.weather.R;import java.util.ArrayList;
import java.util.List;public class DeleteCityActivity extends AppCompatActivity {ListView deleteLv;String[] hotCitys = {"北京","上海","广州","深圳","珠海","佛山","南京","苏州","厦门","长沙","成都","福州","杭州","武汉","青岛","西安","太原","沈阳","重庆","天津","南宁"};List<String> mDatas;//列表数据源@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_delete_city);deleteLv = findViewById(R.id.delete_lv);//找到组件//传入数据mDatas = new ArrayList<>();mDatas.add("北京");mDatas.add("上海");mDatas.add("广州");mDatas.add("深圳");//设置适配器deleteLv.setAdapter(new DeleteCityAdapter(this,mDatas));}}
DeleteCityAdapter.java
package com.example.weather.city_manager;import android.content.Context;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.BaseAdapter;
import android.widget.ImageView;
import android.widget.TextView;import com.example.weather.R;import java.util.List;public class DeleteCityAdapter extends BaseAdapter {Context context;List<String> mDatas;List<String>deleteCitys;private LayoutInflater inflater;public DeleteCityAdapter(Context context, List<String> mDatas) {this.context = context;this.mDatas = mDatas;}@Overridepublic int getCount() {return mDatas.size();}@Overridepublic Object getItem(int i) {return mDatas.get(i);}@Overridepublic long getItemId(int i) {return i;}@Overridepublic View getView(int i, View view, ViewGroup viewGroup) {DeleteCityAdapter.ViewHolder holder = null;View convertView = null;if (convertView == null) {convertView = LayoutInflater.from(context).inflate(R.layout.item_deletecity,null);holder = new DeleteCityAdapter.ViewHolder(convertView);convertView.setTag(holder);}else{holder = (DeleteCityAdapter.ViewHolder) convertView.getTag();}String bean = mDatas.get(i);holder.cityTv.setText(bean);return convertView;}class ViewHolder{TextView cityTv,conTv,currentTempTv,windTv,tempRangeTv;public ViewHolder(View itemView){cityTv = itemView.findViewById(R.id.item_delete_tv);}}
}
城市搜索
效果图
activity_search_city.xml
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout 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:layout_width="match_parent"android:layout_height="match_parent"android:padding="10dp"android:background="@mipmap/bg"><ImageViewandroid:id="@+id/search_iv_submit"android:layout_width="wrap_content"android:layout_height="wrap_content"android:layout_alignParentRight="true"android:layout_marginLeft="5dp"android:src="@mipmap/icon_search"/><EditTextandroid:id="@+id/search_et"android:layout_width="match_parent"android:layout_height="wrap_content"android:padding="3dp"android:layout_toLeftOf="@id/search_iv_submit"android:hint="搜索国内城市:"android:background="@drawable/searchbg"/><TextViewandroid:id="@+id/search_tv"android:layout_below="@id/search_et"android:layout_marginTop="20dp"android:textSize="16sp"android:textStyle="bold"android:text="热门城市"android:layout_width="wrap_content"android:layout_height="wrap_content" /><GridViewandroid:id="@+id/search_gv"android:layout_width="match_parent"android:layout_height="match_parent"android:layout_below="@id/search_tv"android:numColumns="5"></GridView>
</RelativeLayout>
item_hotcity.xml
<?xml version="1.0" encoding="utf-8"?>
<TextView xmlns:android="http://schemas.android.com/apk/res/android"android:layout_width="match_parent"android:layout_height="wrap_content"android:padding="5dp"android:gravity="center"android:text="北京"android:background="@drawable/frag_bg"></TextView>
SearchCityActivity.java
package com.example.weather.city_manager;import androidx.appcompat.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;
import android.widget.ArrayAdapter;
import android.widget.EditText;
import android.widget.GridView;
import android.widget.ImageView;import com.example.weather.R;public class SearchCityActivity extends AppCompatActivity implements View.OnClickListener{EditText searchEt;ImageView submitIv;GridView searchGv;String[]hotCitys = {"北京","上海","广州","深圳","珠海","佛山","南京","苏州","厦门","长沙","成都","福州","杭州","武汉","青岛","西安","太原","沈阳","重庆","天津","南宁"};private ArrayAdapter<String> adapter;String city;@Overrideprotected void onCreate(Bundle savedInstanceState) {//setContentView(R.layout.activity_search_city);super.onCreate(savedInstanceState);setContentView(R.layout.activity_search_city);searchEt = findViewById(R.id.search_et);submitIv = findViewById(R.id.search_iv_submit);searchGv = findViewById(R.id.search_gv);submitIv.setOnClickListener(this);
// 设置适配器adapter = new ArrayAdapter<>(this, R.layout.item_hotcity, hotCitys);searchGv.setAdapter(adapter);// setListener();}@Overridepublic void onClick(View view) {}
}
【安卓开发】天气预报app的UI界面(包含全部代码)相关推荐
- 安卓大作业:使用Android Studio开发天气预报APP(使用sqlite数据库)
使用Android Studio开发天气预报APP 今天我来分享一下如何使用Android Studio开发一个天气预报APP.在文中,我们将使用第三方接口获取实时天气数据,并显示在APP界面上. 步 ...
- 移动端APP~最新UI界面设计规范(转载)
首页发现 同城 职位 活动 正版素材 课程 登录注册 移动端APP~最新UI界面设计规范(尺寸大小篇) 1年前发布 原创文章 / UI / 教程 18107 7 274 移动端手机界面看似简单,然而里 ...
- 【安卓开发系列 -- APP】APP 开发基础技术整理
[安卓开发系列 -- APP]APP 开发基础技术整理 [1]Android Studio APP 项目目录布局 [2]活动的生命周期 活动的状态 : 1. 运行状态,一个活动位于返回栈栈顶时,活动 ...
- 【安卓开发系列 -- APP 开源框架】IO 框架 OKIO
[安卓开发系列 -- APP 开源框架]IO 框架 OKIO [1]OKIO的整体框架 [1.1]OKIO的整体框架图示 [1.2]OKIO的优势 CPU和内存消耗低,OKIO采用了segment机制 ...
- 【安卓开发系列 -- APP 】APP 性能优化 -- 崩溃分析
[安卓开发系列 -- APP ]APP 性能优化 -- 崩溃分析 [1]Native Crash 分析示例 [1.1]Linux 编译 breadpad 下载 breadpad 源码 git clon ...
- 14天学会安卓开发(附PDF文档和全部示例代码)
前言: 本人也是菜鸟,老鸟看了此文有哪里不好之处敬请指点,本书是根据<<Android应用开发揭秘>>攒写的,如何把一本书读薄,是一件值得思考的问题.相信看过那本书的都知道有5 ...
- 安卓移动平台开发----天气预报APP
概述 第一次打开APP,进入地域选择页面,包括省-市-县三级地域(第一次从网络请求而来,之后从本地数据库读取),选中最后的县,进入天气信息展示界面(天气信息数据来自和风天气):可以通过侧滑菜单选择其他 ...
- 用于android天气开发的背景图,Android开发天气预报APP的设计与实现毕业设计.pdf
摘要 随着移动互联网技术和通信技术的发展,智能手机几乎成为人们 生活的必需品.近年来,Android系统已经成为智能手机中用户量最 多的操作系统.通过Android程序开发和设计天气预报手机应用,可 ...
- Android实现-心知天气API接口开发(天气预报app)
自己开发app之心知天气APP程序代码粘贴即可用.完整代码附最后. 一.环境配置和素材准备 第一步:去知心天气注册开发者账号查看自己的token.注册好登录进去--控制台---免费版--秘钥.这里的秘 ...
最新文章
- 开源示波器Scopefun介绍、原理图学习
- java中var是什么意思_js中的var是什么意思
- C# 控件置于最顶层、最底层、隐藏、显示
- E. Almost Sorted(构造,递归)
- 知识图谱入门知识(一)知识图谱应用以及常用方法概述
- 关于垂直切分Vertical Sharding的粒度
- oracle /etc/fonts simfang.ttf,GitHub - jiaxiaochu/font: 系统缺失字体导致无法显示中文和乱码的解决办法...
- Flex+BlazeDs+Java的教程及Demo
- Python:Django 项目中可用的各种装备和辅助
- LayaAir textInput 单行输入多行输入
- 多线程打印ABCD顺序(带有线程池实现)
- 中间件 东方通TongWeb运维|精选整理版本
- 性能测试20--Analysis -- 内存与硬盘
- 安卓实时打印kernel日志
- Canvas圆形时钟
- 图片工具GraphicsMagick的下载安装配置使用
- STM32F1串口最高波特率问题
- iOS 设置按钮上图下文的方式
- redhat linux之bash 编程
- 虚拟机中安装Ubuntu,详细教程
热门文章
- python自学书籍-自学中医书籍推荐python进阶知乎
- 超百个新能源汽车品牌销量滞涨,破局之路何在?
- 用tensorflow扩充数据集
- 带你看看品牌服装的销售员如何卖衣服
- ffmpeg之demux 解复用
- excel服务器数据同步修改,excel表格数据同步修改-关于excel不同表格(不同工作簿)之间数据同步修改......
- 3.22 软件工程平时作业Blog
- 莹石摄像头加密及H265设备播放
- 79款 C/C++开发工具开源软件
- android jackson冲突,卸载Android app弹出浏览器的一种实现