登录
首页 » Android » 基于Android Studio的天气预报APP

基于Android Studio的天气预报APP

于 2022-02-13 发布 文件大小:26.45 MB
0 146
下载积分: 2 下载次数: 3

代码说明:

基于Android Studio的天气预报APP,本人亲测可用,代码简单易懂,运行在Android studio上。连接的API,不需要自己获取天气数据,即可显示全国天气,以及温馨提示等信息。界面简洁,整体效果不错!

下载说明:请别用迅雷下载,失败请重下,重下不扣分!

发表评论

0 个回复

  • MP3Player-editon1
    曾经写的一个mp3播放器的源码,不过作为基本的学习只用而已。(an edition of mp3!)
    2012-04-13 14:12:23下载
    积分:1
  • android viewpaper特效
    android viewpaper特效
    2015-01-30下载
    积分:1
  • BaiduMapTest
    android使用百度地图实现旋转,我的位置,交通地图等功能(android implement rotation using Baidu map, my position, traffic maps and other functions)
    2015-05-26 13:59:30下载
    积分:1
  • Android 色环取色器模块代码
    Android 色环风格的取色器,用来拾取颜色,用于在字体颜色选择时,提供方便,在弹出的色环中,鼠标单选任意处,会将此点的颜色赋值给文字,改变文字的颜色。关于色环的定义,请参见以下代码部分:   private Paint mPaint;// 渐变色环画笔   private Paint mCenterPaint;// 中间圆画笔   private Paint mLinePaint;// 分隔线画笔   private Paint mRectPaint;// 渐变方块画笔   private Shader rectShader;// 渐变方块渐变图像   private float rectLeft;// 渐变方块左x坐标   private float rectTop;// 渐变方块右x坐标   private float rectRight;// 渐变方块上y坐标   private float rectBottom;// 渐变方块下y坐标   private final int[] mCircleColors;// 渐变色环颜色   private final int[] mRectColors;// 渐变方块颜色   private int mHeight;// View高   private int mWidth;// View宽   private float r;// 色环半径(paint中部)   private float centerRadius;// 中心圆半径   private boolean downInCircle = true;// 按在渐变环上   private boolean downInRect;// 按在渐变方块上   private boolean highlightCenter;// 高亮   private boolean highlightCenterLittle;// 微亮   更多代码细节请下载本源码。
    2023-03-16 20:05:04下载
    积分:1
  • com
    SignalA修改后的源码,支持android2.2及以上(SignalA modified source code, support android2.2 and above)
    2013-11-04 13:08:31下载
    积分:1
  • 微信公众平台开发模式(JAVA) SDK/微信app
    【核心代码】package com.gson;import java.io.File;import java.io.FileInputStream;import java.io.FileNotFoundException;import java.io.IOException;import java.lang.reflect.Field;import java.lang.reflect.Method;import java.util.Date;import java.util.Properties;import javax.servlet.Filter;import javax.servlet.FilterChain;import javax.servlet.FilterConfig;import javax.servlet.ServletException;import javax.servlet.ServletInputStream;import javax.servlet.ServletRequest;import javax.servlet.ServletResponse;import javax.servlet.http.HttpServletRequest;import javax.servlet.http.HttpServletResponse;import org.apache.log4j.Logger;import com.gson.bean.Articles;import com.gson.bean.InMessage;import com.gson.bean.OutMessage;import com.gson.bean.TextOutMessage;import com.gson.inf.MessageProcessingHandler;import com.gson.util.Tools;import com.gson.util.XStreamFactory;import com.thoughtworks.xstream.XStream;/** * 请求拦截 * * @author GodSon * */public class WeChatFilter implements Filter { private final Logger logger = Logger.getLogger(WeChatFilter.class); private String _token; private String conf = "classPath:wechat.properties"; private String defaultHandler = "com.gson.inf.DefaultMessageProcessingHandlerImpl"; private Properties p; @Override public void destroy() { logger.info("WeChatFilter已经销毁"); } @Override public void doFilter(ServletRequest req, ServletResponse res, FilterChain chain) throws IOException, ServletException { HttpServletRequest request = (HttpServletRequest) req; HttpServletResponse response = (HttpServletResponse) res; Boolean isGet = request.getMethod().equals("GET"); String path = request.getServletPath(); String pathInfo = path.substring(path.lastIndexOf("/")); if (pathInfo == null) { response.getWriter().write("error"); } else { _token = pathInfo.substring(1); if (isGet) { doGet(request, response); } else { doPost(request, response); } } } private void doPost(HttpServletRequest request, HttpServletResponse response) throws IOException { response.setCharacterEncoding("UTF-8"); response.setContentType("text/xml"); OutMessage oms = new OutMessage(); ServletInputStream in = request.getInputStream(); // 转换微信post过来的xml内容 XStream xs = XStreamFactory.init(false); xs.alias("xml", InMessage.class); String xmlMsg = Tools.inputStream2String(in); logger.debug("输入消息:[" xmlMsg "]"); InMessage msg = (InMessage) xs.fromXML(xmlMsg); // 获取自定消息处理器,如果自定义处理器则使用默认处理器。 String handler = p.getProperty("MessageProcessingHandlerImpl"); if (handler == null) handler = defaultHandler; try { // 加载处理器 Class clazz = Class.forName(handler); MessageProcessingHandler processingHandler = (MessageProcessingHandler) clazz.newInstance(); // 取得消息类型 String type = msg.getMsgType(); Method mt = clazz.getMethod(type "TypeMsg", InMessage.class); oms = (OutMessage) mt.invoke(processingHandler, msg); if (oms == null) { oms = new TextOutMessage(); ((TextOutMessage) oms).setContent("系统错误!"); } setMsgInfo(oms,msg); } catch (Exception e) { logger.error(e); oms = new TextOutMessage(); ((TextOutMessage) oms).setContent("系统错误!"); try { setMsgInfo(oms,msg); } catch (Exception e1) { logger.error(e); } } // 把发送发送对象转换为xml输出 xs = XStreamFactory.init(true); xs.alias("xml", oms.getClass()); xs.alias("item", Articles.class); String xml = xs.toXML(oms); logger.debug("输出消息:[" xml "]"); response.getWriter().write(xml); } private void doGet(HttpServletRequest request, HttpServletResponse response) throws IOException { String signature = request.getParameter("signature");// 微信加密签名 String timestamp = request.getParameter("timestamp");// 时间戳 String nonce = request.getParameter("nonce");// 随机数 String echostr = request.getParameter("echostr");// // 验证 if (Tools.checkSignature(_token, signature, timestamp, nonce)) { response.getWriter().write(echostr); } } private void setMsgInfo(OutMessage oms,InMessage msg) throws Exception { // 设置发送信息 Class outMsg = oms.getClass().getSuperclass(); Field CreateTime = outMsg.getDeclaredField("CreateTime"); Field ToUserName = outMsg.getDeclaredField("ToUserName"); Field FromUserName = outMsg.getDeclaredField("FromUserName"); ToUserName.setAccessible(true); CreateTime.setAccessible(true); FromUserName.setAccessible(true); CreateTime.set(oms, new Date().getTime()); ToUserName.set(oms, msg.getFromUserName()); FromUserName.set(oms, msg.getToUserName()); } /** * 启动的时候加载wechat.properties配置 可以在过滤器配置wechat.properties路径 */ @Override public void init(FilterConfig config) throws ServletException { String cf = config.getInitParameter("conf"); if (cf != null) { conf = cf; } String classPath = this.getClass().getResource("/").getPath().replaceAll("%20", " "); conf = conf.replace("classPath:", classPath); p = new Properties(); File pfile = new File(conf); if (pfile.exists()) { try { p.load(new FileInputStream(pfile)); } catch (FileNotFoundException e) { logger.error("未找到wechat.properties", e); } catch (IOException e) { logger.error("wechat.properties读取异常", e); } } logger.info("WeChatFilter已经启动!"); }}
    2014-01-21下载
    积分:1
  • 书籍:android应用开发详解 源码(全)
    android应用开发详解 源码,书上涵盖各种组件开发,并有网络、多媒体、地图等应用
    2022-03-10 04:19:19下载
    积分:1
  • hbuilder源码,手机网站转app
    hbuilder源码,手机网站转app 通过hbuilder编程导入手机网址,进行APP封装
    2022-03-26 17:53:09下载
    积分:1
  • Android 实现透明状态栏完美解决半透明黑边问题主代码
    Android 实现透明状态栏完美解决半透明黑边问题主代码下载,采用仅仅改变状态栏颜色的沉浸模式,这个不是完整的Android项目,是实现安卓手机透明状态栏功能的核心文件及代码,其它的代码文件需要自己添加。
    2022-02-02 18:10:11下载
    积分:1
  • android完整商城项目源码(包含服务端+客户端)
    100%开源的android原生手机商城源码,最主要的是,还包含服务端代码、服务端代码、服务端代码,重要的事情说三遍! 更牛B的是,还包括开发文档,接口文档,真正的源代码,不扯淡
    2022-05-07 15:09:42下载
    积分:1
  • 696518资源总数
  • 105559会员总数
  • 1今日下载