Android:时间轴动态记录安排事情,24小时制,按照时间先后排序
-----------------------------------------------------------------2020/07/06-----------------------------------------------------------------------------
写在前面,之前在使用这个的时候,某些机型会出现数据位置不准的情况,比如下图的七点到八点二十三,可能会在六点半那边,高度也不是很对,造成这种情况的原因是 dp转px时精度的丢失
解决办法:底下布局文件单位使用px不使用dp。可能60px会小一点,可以使用120 180整除60的。这样分钟高度也就很好算了,在activity代码中,不需要dp转换px了,直接写死,代码就不贴了,比较简单。
--------------------------------------------------------------------------------------------------------------------------------------------------------------
做出来的效果是类似这样子,长截屏不知道为啥只到20点就滚不下去了,内容显示就简单的弄了一个TextView,需要自定义的,可以替换一下,比如封装一个插好控件的RelativeLayout,生成的时候new一个插入数据就行,
显示控件的长高度,和时间长度有关,1个小时就会填满一个小时的位置,20分钟就是1/3,40分钟就是2/3,以此类推,显示位置和开始时间有关,总长度从0点到24小时。
最开始想法是想说用RecyclerView做,但是,实在做不出来,百度的又是另一种时间轴,一根线那种。最后采用把24小时先放入NestedScrollView,ScrollView里,然后动态生成控件,计算高度,生成关系,添加进ViewGroup,直接上layout代码
<android.support.v4.widget.NestedScrollView
android:layout_width="0dp"
android:layout_height="0dp"
android:background="@color/white"
app:layout_constraintBottom_toTopOf="@+id/bt_order"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@+id/constraint_layout2">
<android.support.constraint.ConstraintLayout
android:id="@+id/cl_content"
android:layout_width="match_parent"
android:layout_height="wrap_content">
<View
android:id="@+id/view_time1"
android:layout_width="match_parent"
android:layout_height="0.5dp"
android:layout_marginTop="60dp"
android:background="@color/gray_cc"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent" />
<View
android:id="@+id/view_time2"
android:layout_width="match_parent"
android:layout_height="0.5dp"
android:layout_marginTop="120dp"
android:background="@color/gray_cc"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent" />
<View
android:id="@+id/view_time3"
android:layout_width="match_parent"
android:layout_height="0.5dp"
android:layout_marginTop="180dp"
android:background="@color/gray_cc"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent" />
<View
android:id="@+id/view_time4"
android:layout_width="match_parent"
android:layout_height="0.5dp"
android:layout_marginTop="240dp"
android:background="@color/gray_cc"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent" />
<View
android:id="@+id/view_time5"
android:layout_width="match_parent"
android:layout_height="0.5dp"
android:layout_marginTop="300dp"
android:background="@color/gray_cc"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent" />
<View
android:id="@+id/view_time6"
android:layout_width="match_parent"
android:layout_height="0.5dp"
android:layout_marginTop="360dp"
android:background="@color/gray_cc"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent" />
<View
android:id="@+id/view_time7"
android:layout_width="match_parent"
android:layout_height="0.5dp"
android:layout_marginTop="420dp"
android:background="@color/gray_cc"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent" />
<View
android:id="@+id/view_time8"
android:layout_width="match_parent"
android:layout_height="0.5dp"
android:layout_marginTop="480dp"
android:background="@color/gray_cc"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent" />
<View
android:id="@+id/view_time9"
android:layout_width="match_parent"
android:layout_height="0.5dp"
android:layout_marginTop="540dp"
android:background="@color/gray_cc"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent" />
<View
android:id="@+id/view_time10"
android:layout_width="match_parent"
android:layout_height="0.5dp"
android:layout_marginTop="600dp"
android:background="@color/gray_cc"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent" />
<View
android:id="@+id/view_time11"
android:layout_width="match_parent"
android:layout_height="0.5dp"
android:layout_marginTop="660dp"
android:background="@color/gray_cc"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent" />
<View
android:id="@+id/view_time12"
android:layout_width="match_parent"
android:layout_height="0.5dp"
android:layout_marginTop="720dp"
android:background="@color/gray_cc"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent" />
<View
android:id="@+id/view_time13"
android:layout_width="match_parent"
android:layout_height="0.5dp"
android:layout_marginTop="780dp"
android:background="@color/gray_cc"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent" />
<View
android:id="@+id/view_time14"
android:layout_width="match_parent"
android:layout_height="0.5dp"
android:layout_marginTop="840dp"
android:background="@color/gray_cc"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent" />
<View
android:id="@+id/view_time15"
android:layout_width="match_parent"
android:layout_height="0.5dp"
android:layout_marginTop="900dp"
android:background="@color/gray_cc"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent" />
<View
android:id="@+id/view_time16"
android:layout_width="match_parent"
android:layout_height="0.5dp"
android:layout_marginTop="960dp"
android:background="@color/gray_cc"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent" />
<View
android:id="@+id/view_time17"
android:layout_width="match_parent"
android:layout_height="0.5dp"
android:layout_marginTop="1020dp"
android:background="@color/gray_cc"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent" />
<View
android:id="@+id/view_time18"
android:layout_width="match_parent"
android:layout_height="0.5dp"
android:layout_marginTop="1080dp"
android:background="@color/gray_cc"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent" />
<View
android:id="@+id/view_time19"
android:layout_width="match_parent"
android:layout_height="0.5dp"
android:layout_marginTop="1140dp"
android:background="@color/gray_cc"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent" />
<View
android:id="@+id/view_time20"
android:layout_width="match_parent"
android:layout_height="0.5dp"
android:layout_marginTop="1200dp"
android:background="@color/gray_cc"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent" />
<View
android:id="@+id/view_time21"
android:layout_width="match_parent"
android:layout_height="0.5dp"
android:layout_marginTop="1260dp"
android:background="@color/gray_cc"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent" />
<View
android:id="@+id/view_time22"
android:layout_width="match_parent"
android:layout_height="0.5dp"
android:layout_marginTop="1320dp"
android:background="@color/gray_cc"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent" />
<View
android:id="@+id/view_time23"
android:layout_width="match_parent"
android:layout_height="0.5dp"
android:layout_marginTop="1380dp"
android:background="@color/gray_cc"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent" />
<View
android:id="@+id/view_time24"
android:layout_width="match_parent"
android:layout_height="0.5dp"
android:layout_marginTop="1440dp"
android:background="@color/gray_cc"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent" />
<View
android:id="@+id/view_time25"
android:layout_width="match_parent"
android:layout_height="0.5dp"
android:layout_marginTop="1500dp"
android:background="@color/gray_cc"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent" />
<TextView
android:id="@+id/text1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginStart="16dp"
android:layout_marginTop="10dp"
android:text="00:00"
android:textColor="@color/black_33"
android:textSize="14sp"
app:layout_constraintBottom_toBottomOf="@+id/view_time1"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent" />
<TextView
android:id="@+id/text2"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginStart="16dp"
android:layout_marginTop="10dp"
android:text="01:00"
android:textColor="@color/black_33"
android:textSize="14sp"
app:layout_constraintBottom_toBottomOf="@+id/view_time2"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="@+id/view_time1" />
<TextView
android:id="@+id/text3"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginStart="16dp"
android:layout_marginTop="10dp"
android:text="02:00"
android:textColor="@color/black_33"
android:textSize="14sp"
app:layout_constraintBottom_toBottomOf="@+id/view_time3"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="@+id/view_time2" />
<TextView
android:id="@+id/text4"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginStart="16dp"
android:layout_marginTop="10dp"
android:text="03:00"
android:textColor="@color/black_33"
android:textSize="14sp"
app:layout_constraintBottom_toBottomOf="@+id/view_time4"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="@+id/view_time3" />
<TextView
android:id="@+id/text5"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginStart="16dp"
android:layout_marginTop="10dp"
android:text="04:00"
android:textColor="@color/black_33"
android:textSize="14sp"
app:layout_constraintBottom_toBottomOf="@+id/view_time5"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="@+id/view_time4" />
<TextView
android:id="@+id/text6"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginStart="16dp"
android:layout_marginTop="10dp"
android:text="05:00"
android:textColor="@color/black_33"
android:textSize="14sp"
app:layout_constraintBottom_toBottomOf="@+id/view_time6"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="@+id/view_time5" />
<TextView
android:id="@+id/text7"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginStart="16dp"
android:layout_marginTop="10dp"
android:text="06:00"
android:textColor="@color/black_33"
android:textSize="14sp"
app:layout_constraintBottom_toBottomOf="@+id/view_time7"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="@+id/view_time6" />
<TextView
android:id="@+id/text8"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginStart="16dp"
android:layout_marginTop="10dp"
android:text="07:00"
android:textColor="@color/black_33"
android:textSize="14sp"
app:layout_constraintBottom_toBottomOf="@+id/view_time8"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="@+id/view_time7" />
<TextView
android:id="@+id/text9"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginStart="16dp"
android:layout_marginTop="10dp"
android:text="08:00"
android:textColor="@color/black_33"
android:textSize="14sp"
app:layout_constraintBottom_toBottomOf="@+id/view_time9"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="@+id/view_time8" />
<TextView
android:id="@+id/text10"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginStart="16dp"
android:layout_marginTop="10dp"
android:text="09:00"
android:textColor="@color/black_33"
android:textSize="14sp"
app:layout_constraintBottom_toBottomOf="@+id/view_time10"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="@+id/view_time9" />
<TextView
android:id="@+id/text11"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginStart="16dp"
android:layout_marginTop="10dp"
android:text="10:00"
android:textColor="@color/black_33"
android:textSize="14sp"
app:layout_constraintBottom_toBottomOf="@+id/view_time11"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="@+id/view_time10" />
<TextView
android:id="@+id/text12"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginStart="16dp"
android:layout_marginTop="10dp"
android:text="11:00"
android:textColor="@color/black_33"
android:textSize="14sp"
app:layout_constraintBottom_toBottomOf="@+id/view_time12"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="@+id/view_time11" />
<TextView
android:id="@+id/text13"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginStart="16dp"
android:layout_marginTop="10dp"
android:text="12:00"
android:textColor="@color/black_33"
android:textSize="14sp"
app:layout_constraintBottom_toBottomOf="@+id/view_time13"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="@+id/view_time12" />
<TextView
android:id="@+id/text14"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginStart="16dp"
android:layout_marginTop="10dp"
android:text="13:00"
android:textColor="@color/black_33"
android:textSize="14sp"
app:layout_constraintBottom_toBottomOf="@+id/view_time14"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="@+id/view_time13" />
<TextView
android:id="@+id/text15"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginStart="16dp"
android:layout_marginTop="10dp"
android:text="14:00"
android:textColor="@color/black_33"
android:textSize="14sp"
app:layout_constraintBottom_toBottomOf="@+id/view_time15"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="@+id/view_time14" />
<TextView
android:id="@+id/text16"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginStart="16dp"
android:layout_marginTop="10dp"
android:text="15:00"
android:textColor="@color/black_33"
android:textSize="14sp"
app:layout_constraintBottom_toBottomOf="@+id/view_time16"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="@+id/view_time15" />
<TextView
android:id="@+id/text17"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginStart="16dp"
android:layout_marginTop="10dp"
android:text="16:00"
android:textColor="@color/black_33"
android:textSize="14sp"
app:layout_constraintBottom_toBottomOf="@+id/view_time17"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="@+id/view_time16" />
<TextView
android:id="@+id/text18"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginStart="16dp"
android:layout_marginTop="10dp"
android:text="17:00"
android:textColor="@color/black_33"
android:textSize="14sp"
app:layout_constraintBottom_toBottomOf="@+id/view_time18"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="@+id/view_time17" />
<TextView
android:id="@+id/text19"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginStart="16dp"
android:layout_marginTop="10dp"
android:text="18:00"
android:textColor="@color/black_33"
android:textSize="14sp"
app:layout_constraintBottom_toBottomOf="@+id/view_time19"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="@+id/view_time18" />
<TextView
android:id="@+id/text20"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginStart="16dp"
android:layout_marginTop="10dp"
android:text="19:00"
android:textColor="@color/black_33"
android:textSize="14sp"
app:layout_constraintBottom_toBottomOf="@+id/view_time20"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="@+id/view_time19" />
<TextView
android:id="@+id/text21"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginStart="16dp"
android:layout_marginTop="10dp"
android:text="20:00"
android:textColor="@color/black_33"
android:textSize="14sp"
app:layout_constraintBottom_toBottomOf="@+id/view_time21"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="@+id/view_time20" />
<TextView
android:id="@+id/text22"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginStart="16dp"
android:layout_marginTop="10dp"
android:text="21:00"
android:textColor="@color/black_33"
android:textSize="14sp"
app:layout_constraintBottom_toBottomOf="@+id/view_time22"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="@+id/view_time21" />
<TextView
android:id="@+id/text23"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginStart="16dp"
android:layout_marginTop="10dp"
android:text="22:00"
android:textColor="@color/black_33"
android:textSize="14sp"
app:layout_constraintBottom_toBottomOf="@+id/view_time23"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="@+id/view_time22" />
<TextView
android:id="@+id/text24"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginStart="16dp"
android:layout_marginTop="10dp"
android:text="23:00"
android:textColor="@color/black_33"
android:textSize="14sp"
app:layout_constraintBottom_toBottomOf="@+id/view_time24"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="@+id/view_time23" />
<TextView
android:id="@+id/text25"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginStart="16dp"
android:layout_marginTop="10dp"
android:text="24:00"
android:textColor="@color/black_33"
android:textSize="14sp"
app:layout_constraintBottom_toBottomOf="@+id/view_time25"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="@+id/view_time24" />
</android.support.constraint.ConstraintLayout>
</android.support.v4.widget.NestedScrollView>
这里NestedScrollView里采用的是一个ConstraintLayout,最近喜欢上了这个控件,学习的话可以参考鸿洋大神的教程:
https://blog.csdn.net/lmj623565791/article/details/78011599?utm_source=tuicool&utm_medium=referral
上面那段代码,很简单,就一个一个排下去,排出24小时,但需要注意的是,每一个控件,都需要给他设置id,因为我开始写的时候,不是每一个控件都有对应的关系,所以就没全部设置id,后来出了点问题,底下会讲到,还有就是间隔,每一段时间间隔,我是设置了60dp,用做分隔线的View和View之间高度都是60dp,如果怕计算错误也可以一个关联着一个,用layout_constraintTop_toBottomOf="上一个分隔线ID",margin_top=60dp。一个小时不设置60dp的话,底下计算1分钟,1小时所占的高度会有所差别。
把上面代码拷贝在对应的layout里,就能看到效果了,接下来是java代码:
首先是动态显示控件内容的数据类型,需要一个开始时间,一个结束时间,一个内容,如果你需要图片的话,可以带图片链接,用Glide显示,我这里的数据类型是这样的:
//删了一些没必要的数据
public class MeetingPlanData {
public long meetingStartTime;
public long meetingEndTime;
public String meetingTheme;//会议主题
}
假设,我从服务器中获取了一个列表数据List<MeetingPlanData> meetingPlanData;先放着,我们先做一些准备工作:
//因为设置宽高,以及距离都是px,所以需要一个方法把dp转成px
public class AppUtils {
/**
* 根据手机的分辨率从 dp 的单位 转成为 px(像素)
*/
public static int dip2px(Context context, float dpValue) {
final float scale = context.getResources().getDisplayMetrics().density;
return (int) (dpValue * scale + 0.5f);
}
}
接下来是在activity中:
//全局变量
private int oneHourPx60;//一个小时高度是60dp,转换成像素
private int oneMimutePx1;//一分钟高度是1dp,转化成像素
private int width;
private SimpleDateFormat timeFormat = new SimpleDateFormat("HH:mm");
//放在onCreate里
private void initData() {
oneHourPx60 = AppUtils.dip2px(this, 60);//假如你不是60dp就换掉
oneMimutePx1 = AppUtils.dip2px(this, 1);//这个用你的1小时的高度除60就行了
//显示控件宽度,不是必须得,假如你的宽度是动态的,然后距离两边多少也可以
width = AppUtils.dip2px(this, 250);
}
//生成放入控件的代码,并添加进ConstraintLayout里
private void setNewTextView(MeetingPlanData planData) {
//生成一个放入的控件
TextView textView = new TextView(this);
//给控件赋予一个id
textView.setId(View.generateViewId());
//设置控件属性,这个不用照抄,自己喜欢什么弄什么就行,显示什么背景什么都自己定
textView.setBackground(getResources().getDrawable(R.color.pink_be));
textView.setTextColor(getResources().getColor(R.color.black_66));
textView.setText(planData.meetingTheme + "\n" + timeFormat.format(new
Date(planData.meetingStartTime)) + "-"
+ timeFormat.format(new Date(planData.meetingEndTime)));
//底下获取Calendar,为了拿到一天的时间
//获取开始时间的Calendar,这个东西很强大,能单独设置年月日时分秒为多少
Calendar calendar1 = Calendar.getInstance();
calendar1.setTimeInMillis(planData.meetingStartTime);
//获取结束时间的Calendar
Calendar calendar2 = Calendar.getInstance();
calendar2.setTimeInMillis(planData.meetingEndTime);
//设置高度,算出他们直接差了多少分钟,然后乘以分钟所占的像素
int height = (int) ((calendar2.getTimeInMillis() - calendar1.getTimeInMillis()) /
60000 * oneMimutePx1);
//动态在ConstraintLayout里面加入控件,需要ConstraintSet,使用这个,就必须所有控件都有id
//这就是上面为什么把ConstraintLayout里所有控件都加了id的原因
ConstraintSet constraintSet = new ConstraintSet();
//把显示内容添加进去
clContent.addView(textView);
//计算距离顶部的高度,很好理解,比如说13点20分,那就是距离0点有13个小时,再加上20分钟的高度
int marginTop = calendar1.get(Calendar.HOUR_OF_DAY) * oneHourPx60 +
calendar1.get(Calendar.MINUTE) * oneMimutePx1;
//设置显示内容宽度
constraintSet.constrainWidth(textView.getId(), width);
constraintSet.clone(clContent);
constraintSet.constrainHeight(textView.getId(), height);
//设置显示位置,这个是水平居中,假如需要偏左偏右,就设置下margin,参考最后一个connect
constraintSet.connect(textView.getId(),ConstraintSet.END,
ConstraintSet.PARENT_ID,ConstraintSet.END);
constraintSet.connect(textView.getId(),ConstraintSet.START,
ConstraintSet.PARENT_ID,ConstraintSet.START);
constraintSet.connect(textView.getId(),ConstraintSet.TOP,
ConstraintSet.PARENT_ID,ConstraintSet.TOP,marginTop);
//应用
constraintSet.applyTo(clContent);
}
显示list,放在获取数据之后
if (meetingPlanData != null && meetingPlanData.size() != 0) {
for (MeetingPlanData data : meetingPlanData) {
setNewTextView(data);
}
}