Android 类似时间轴的实现
想要实现图片中的的时间轴的效果,设定了三种颜色,但是出来的只有一个黑色,还不是设定好的,而且长度很长的话不能滚动,下面上代码:
布局文件:
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:orientation="vertical"> <LinearLayout
android:id="@+id/trjectory_today_rl1"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="vertical">
</LinearLayout>
</LinearLayout>
类文件,时间段是从服务器获取的,多少和大小都是不确定的
主要代码:
private Handler mHandler = new Handler() {
@Override
public void handleMessage(Message msg) {
switch (msg.what) {
case :
if (trajectory2 != null) {
if (trajectory2.getResponseCode().equals("")) {
progressDialog.dismiss();
if (trajectory2.getSegmentNum() != ) {
thefirsttime = trajectory2.getList().get()
.get("BeginTime");// 第一个时间段的开始时间,用作参照物
Y=new int[trajectory2.getSegmentNum()];
X=new int[trajectory2.getSegmentNum()];
high=new int[trajectory2.getSegmentNum()];
color=new int[trajectory2.getSegmentNum()]; for (int i = ; i < trajectory2.getList().size(); i++) {
name = trajectory2.getList().get(i).get("Name");
begintime = trajectory2.getList().get(i)
.get("BeginTime");
int begin = TimeToInt(begintime);//将阶段开始时间换算为分钟,计算坐标
endtime = trajectory2.getList().get(i)
.get("EndTime");
int end = TimeToInt(endtime);
high = end - begin;// 矩形的高度
Y = begin - TimeToInt(thefirsttime);// 获得矩形的开始的Y轴坐标,最初是0 if (name.equals("觉醒")) {
color = R.color.red;
X = width / ;// 矩形的轴心的坐标
} else if (name.equals("浅睡")) {
color = R.color.lightblue;
X = width / ; // r1.addView(rectview);
} else if (name.equals("深度睡眠")) {
color = R.color.green;
X = width / + ;
} else {
color = R.color.lightgray;
X = width / ;
}
}
rectview=new RectView(getActivity(),X,Y,high,color);
r1.addView(rectview); } else {
progressDialog.dismiss();
showDialog("提示", "今天没有睡眠信息...");
} } else {
progressDialog.dismiss();
showDialog("提示", trajectory2.getResponseDesc());
} } else {
progressDialog.dismiss();
showDialog("提示", "获取数据失败...");
}
break;
}
}
};
下面上画图的类:
热搜: 二维码 定时器 手电筒 滑块 斗地主 书架 定位 买手机 聊天 游戏开发 游戏 股票查询 机顶盒 通话记录 二维码扫描 振动器 listview fragment 音乐播放器 播放器
eoe 移动开发者论坛»社区 › Android开发交流 › Android开发问答 › 类似时间轴的实现
/ 页下一页
返回列表 发新帖回复
查看: |回复: 打印 上一主题 下一主题
收起左侧
[Android界面] 类似时间轴的实现
[复制链接] yalongy58 主题 帖子 e币 发消息 电梯直达 跳转到指定楼层
楼主
发表于 -- :: | 只看该作者 |只看大图 回帖奖励
0基础的你+1张学习路径图+3个月粮饷+9阶段系统学习=Android开发大拿
10e币
想要实现图片中的的世间轴的效果,设定了三种颜色,但是出来的只有一个黑色,还不是设定好的,而且长度很长的话不能滚动,下面上代码:布局文件:
[mw_shl_code=java,true]<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:orientation="vertical"> <LinearLayout
android:id="@+id/trjectory_today_rl1"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="vertical">
</LinearLayout>
</LinearLayout>[/mw_shl_code] 类文件,时间段是从服务器获取的,多少和大小都是不确定的
主要代码:
[mw_shl_code=java,true]private Handler mHandler = new Handler() {
@Override
public void handleMessage(Message msg) {
switch (msg.what) {
case :
if (trajectory2 != null) {
if (trajectory2.getResponseCode().equals("")) {
progressDialog.dismiss();
if (trajectory2.getSegmentNum() != ) {
thefirsttime = trajectory2.getList().get()
.get("BeginTime");// 第一个时间段的开始时间,用作参照物
Y=new int[trajectory2.getSegmentNum()];
X=new int[trajectory2.getSegmentNum()];
high=new int[trajectory2.getSegmentNum()];
color=new int[trajectory2.getSegmentNum()]; for (int i = ; i < trajectory2.getList().size(); i++) {
name = trajectory2.getList().get(i).get("Name");
begintime = trajectory2.getList().get(i)
.get("BeginTime");
int begin = TimeToInt(begintime);//将阶段开始时间换算为分钟,计算坐标
endtime = trajectory2.getList().get(i)
.get("EndTime");
int end = TimeToInt(endtime);
high = end - begin;// 矩形的高度
Y = begin - TimeToInt(thefirsttime);// 获得矩形的开始的Y轴坐标,最初是0 if (name.equals("觉醒")) {
color = R.color.red;
X = width / ;// 矩形的轴心的坐标
} else if (name.equals("浅睡")) {
color = R.color.lightblue;
X = width / ; // r1.addView(rectview);
} else if (name.equals("深度睡眠")) {
color = R.color.green;
X = width / + ;
} else {
color = R.color.lightgray;
X = width / ;
}
}
rectview=new RectView(getActivity(),X,Y,high,color);
r1.addView(rectview); } else {
progressDialog.dismiss();
showDialog("提示", "今天没有睡眠信息...");
} } else {
progressDialog.dismiss();
showDialog("提示", trajectory2.getResponseDesc());
} } else {
progressDialog.dismiss();
showDialog("提示", "获取数据失败...");
}
break;
}
} };
[/mw_shl_code] 下面上画图的类:
[mw_shl_code=java,true]package com.ban.chart; import android.content.Context;
import android.graphics.Canvas;
import android.graphics.Color;
import android.graphics.Paint;
import android.util.AttributeSet;
import android.view.View; public class RectView extends View {
private int[] width;//矩形的轴心的坐标
private int[] height;//矩形的高度
private int[] top;//矩形的顶部坐标
private int[] bottom;//矩形底部坐标 private Chart chart;
private Paint paint;
private int[] color; public RectView(Context context, AttributeSet attrs) {
super(context, attrs);
// TODO Auto-generated constructor stub
} public RectView(Context context) {
super(context);
// TODO Auto-generated constructor stub
} public RectView(Context context, int[] X,int[] Y,int[] high,int[] color) {
super(context);
this.width=X;//矩形轴心坐标
this.height=high;//矩形高度
this.top=Y;//矩形顶部坐标
this.color=color;
bottom=new int[height.length];
// bottom=top+height;//矩形底部坐标
paint = new Paint();
paint.setAntiAlias(true);
}
// 画柱状图
public void drawChart(Canvas canvas){
for(int i=;i<height.length;i++){
bottom=(top+)+height*;
paint.setColor(color);
canvas.drawRect(width-, top+, width+, bottom, paint) ; } // canvas.drawRect(width-5, top, width+5, bottom, paint) ;
}
@Override
public void onDraw(Canvas canvas){
canvas.drawColor(Color.WHITE);
drawChart(canvas);
invalidate();
}
}
图片:
Android 类似时间轴的实现的更多相关文章
- android 简易时间轴(实质是ListView)
ListView的应用 1.在很多时候是要用到时间轴的,有些处理的时间轴比较复杂,这里就给出一个比较简单的时间轴,其实就是ListView里面的Item的设计. 直接上代码: ListView,ite ...
- Android实现时间轴
昨天群里有讨论时间轴的项目,没有接触过,以为非常吊,研究之后才知道表面都是忽悠人的,使用listview就能实现了,也没有什么新奇的东西 废话少说,直接上图 图片和文字都能够私人订制 没什么好说的,直 ...
- Android 时间轴
最近开发的app中要用到时间轴这东西,需要实现的效果如下: 想想这个东西应该可以用listview实现吧.然后最近就模拟着去写了: 首先写 listview的item的布局: listview_it ...
- Android自定义指示器时间轴
指示器时间轴在外卖.购物类的APP里会经常用到,效果大概就像下面这样,看了网上很多文章,大都是自己绘制,太麻烦,其实通过ListView就可以实现. 在Activity关联的布局文件activit ...
- Android实训案例(三)——实现时间轴效果的ListView,加入本地存储,实现恋爱日记的效果!
Android实训案例(三)--实现时间轴效果的ListView,加入本地存储,实现恋爱日记的效果! 感叹离春节将至,也同时感叹时间不等人,一年又一年,可是我依然是android道路上的小菜鸟,这篇讲 ...
- Android 时间轴的实现
时间轴 时间轴,顾名思义就是将发生的事件按照时间顺序罗列起来,给用户带来一种更加直观的体验.京东和淘宝的物流顺序就是一个时间轴(如图),想必大家都不陌生. 时间轴的初探 初次见到这种UI,感觉整个布局 ...
- android项目解刨之时间轴
近期开发的app中要用到时间轴这东西.须要实现的效果例如以下: 想想这个东西应该能够用listview实现吧. 然后近期就模拟着去写了: 首先写 listview的item的布局: listview ...
- Android时间轴效果,直接使用在你的项目中
近期开发app搞到历史查询,受腾讯qq的启示,搞一个具有时间轴效果的ui,看上去还能够,然后立即想到分享给小伙伴,,大家一起来看看,先上效果图吧 watermark/2/text/aHR0cDovL2 ...
- JQuery+HTML5+CSS3制作时间轴插件,支持响应式布局
一.效果图预览 (图一) (图二) 附注说明: 图一是浏览器宽度像素大于560px下的展示效果,图二是在浏览器宽度像素小于560px下的展现效果.使用的是CSS3的Media Query(媒体查询)实 ...
随机推荐
- C# 发邮件类可发送附件
using System; using System.Collections.Generic; using System.Linq; using System.Web; using System.Ne ...
- int main(int argc,char* argv[])参数详解
argc是命令行总的参数个数 argv[]是argc个参数,其中第0个参数是程序的全名,以后的参数 命令行后面跟的用户输入的参数,比如: int main(int argc, char* argv[] ...
- iTween基础之Move(移动)
1,五种移动方法:2, 函数的基础属性及用法 原文地址:http://blog.csdn.net/dingkun520wy/article/details/50476864 iTween官网:http ...
- iOS常见问题(3)
一.发现不少人在给成员变量初始化的时候,容易进错一个方法去初始化. //注意这个方法只有在内存发生警告的时候才会调用. - (void)didReceiveMemoryWarning { [super ...
- 用例图 UseCase Diagram
从上面的用例图模型,我们可以大致了解用例图所描述的是什么.下面进行详细介绍. 用例图,即用来描述什么角色通过某某系统能做什么事情的图,用例图关注的是系统的外在表现,系统与人的交互,系统与其它系统的交互 ...
- c语言编程之栈(链表实现)
用链表实现栈,完成了出栈入栈功能. #include"stdio.h" typedef int element; //define a struct descirbe a stac ...
- [转载]Winform开发框架之统计图表的实现
在前面的一些随笔中,介绍了不少我的Winform框架的特性,上篇随笔<Winform开发框架之通用高级查询模块>对其中的通用高级模块进了一个整理说明,本篇继续介绍Winform开发框架重要 ...
- [设计模式] 22 模板方法模式 template
转http://www.jellythink.com/archives/407 在GOF的<设计模式:可复用面向对象软件的基础>一书中对模板方法模式是这样说的:定义一个操作中的算法骨架,而 ...
- Eclipse下PHP开发 插件安装
PHPeclipse是什么? PHPeclipse是Eclipse的一个插件,它为php开发人员提供了一个集成的开发环境.Eclipse官方下载地址:http://www.eclipse.org/ P ...
- uva 307
排序之后再剪枝,有点神 #include <cstdio> #include <cstdlib> #include <cmath> #include <map ...