仿QQ天气预报UI

本文介绍了如何制作仿QQ天气预报的用户界面,包括展示效果图、处理图片适配以及使用模拟天气数据构建坐标系,详细讲解了根据坐标系绘制温度折线的过程。
摘要由CSDN通过智能技术生成

效果图如下:
这里写图片描述

图片有些拉伸,可换一套适合的图片,或者计算坐标把图片限定在一个box内,这里我就不处理了。

使用模拟天气数据

public static final String wees[]={
  "今天","星期二","星期三","星期四","星期五"};
    public static final String dayWeather[]={
  "晴天","小雨","小雨","中雨","小雨"};
    public static final int  dayRes[]={R.drawable.w0,R.drawable.w7,R.drawable.w7,R.drawable.w8,R.drawable.w7};
    public static final int dayTemp[]={
  23,22,23,20,17};
    public static final int nightTemp[]={
  18,17,18,12,11};
    public static final int  nightRes[]={R.drawable.w2,R.drawable.w7,R.drawable.w7,R.drawable.w8,R.drawable.w7};
    public static final String nightWeather[]={
  "小雨","小雨","小雨","中雨","小雨"};
    public static final String date[]={
  "02/20","02/21","02/22","02/23","02/24"};
    public static final String wind[]={
  "南风","东风","西风","东南风","西北风"};
    public static final String windVilue[]={
  "微风","3-4级","5-6级","2-3级","微风"};

这样的View最重要的就是构建坐标系。

   private void drawHorizontalLine(Canvas canvas) {
        float startX,startY,endX,endY;
        for(int i=0;i<(mHorizontalCount+1);i++){
            startX=getPaddingLeft();
            startY=getPaddingTop()+i*itemHeight;
            endX=getWidth()-getPaddingRight();
            endY=startY;
            canvas.drawLine(startX,startY,endX,endY,verticalLinePaint);
     }

    }

    private void drawverticalLine(Canvas canvas) {
        float startX;
        float startY;
        float endX;
        float endY;
        for(int i=1;i<mCount;i++){
            startX=getPaddingLeft()+i*itemWidth;
            startY=getPaddingTop();
            endX=startX;
            endY=getHeight()-getPaddingBottom();
            canvas.drawLine(startX,startY,endX,endY,verticalLinePaint);
        }
    }

效果如图:
ws

根据新建的坐标系绘制

private void drawText(Canvas canvas) {
        float weekX,weekY;
        float dayWeatherX,dayWeatherY;
        float dayResX,dayResY;

        float nightWeatherX,nightWeatherY;
        float dateX,dateY;
        float windVilueX,windVilueY;
        for(int i=0;i<mCount;i++){
            //绘制星期
            weekX=(getPaddingLeft()+itemWidth)/2+i*itemWidth;
            weekY=getPaddingTop()+itemHeight+getTextPaintOffset(textPaint);
            c
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值