Android自定义时间轴的实现过程
程序员文章站
2023-12-20 15:46:28
本文讲述android自定义时间轴的实现过程,供大家参考,具体内容如下
相关视频链接:
android自定义控件系列
android视频全系列...
本文讲述android自定义时间轴的实现过程,供大家参考,具体内容如下
相关视频链接:
android自定义控件系列
android视频全系列
时间轴效果,实际上非常简单,就是listview中一个又一个的条目而已….大家可以只关注一个条目。
首先展示一个条目的布局效果
<?xml version="1.0" encoding="utf-8"?> <linearlayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="75dp" android:orientation="horizontal" > <!-- 线条部分 --> <linearlayout android:layout_width="wrap_content" android:layout_height="match_parent" android:gravity="center_horizontal" android:orientation="vertical" android:paddingleft="30dp" > <view android:layout_width="3dp" android:layout_height="20dp" android:background="#88000000" /> <com.example.time.timeview android:src="@drawable/ic_launcher" android:id="@+id/timeview" android:layout_width="40dp" android:layout_height="40dp" /> <view android:layout_width="3dp" android:layout_height="40dp" android:background="#88000000" /> </linearlayout> <!-- 文字部分 --> <linearlayout android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertical" android:paddingleft="30dp" android:paddingright="30dp" android:paddingtop="20dp" > <textview android:id="@+id/tv_content" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="哈哈哈" android:textcolor="#ababab" /> <textview android:id="@+id/tv_time" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_below="@id/tv_content" android:text="时间" android:textcolor="#ababab" /> </linearlayout> </linearlayout>
接下来看一下自定义的timeview如何书写
package com.example.time; import java.util.random; import android.content.context; import android.graphics.canvas; import android.graphics.color; import android.graphics.paint; import android.graphics.paint.style; import android.graphics.rect; import android.util.attributeset; import android.view.view; public class timeview extends view { private random random; private string time; private rect mbounds = new rect(); private int rgb; public timeview(context context, attributeset attrs, int defstyleattr) { super(context, attrs, defstyleattr); initview(); } public timeview(context context, attributeset attrs) { super(context, attrs); initview(); } public timeview(context context) { super(context); initview(); } private void initview() { random = new random(); //定义颜色---这里纯粹为了好玩--大家定义的时候可以在自定义控件外边定义,将颜色传递进来 rgb = color.rgb(100+random.nextint(155), 100+random.nextint(155), random.nextint(100+155)); } public void settime(string time) { this.time = time; invalidate(); } @override protected void ondraw(canvas canvas) { super.ondraw(canvas); paint paint = new paint(); paint.setcolor(rgb); paint.setantialias(true); paint.setstyle(style.fill_and_stroke); //先绘制圆 canvas.drawcircle(getwidth() / 2, getheight() / 2, getwidth() / 2, paint); paint = new paint(); paint.setcolor(color.black); paint.settextsize(30); paint.gettextbounds(time, 0, time.length(), mbounds); float textwidth = mbounds.width(); float textheight = mbounds.height(); //再绘制文字 canvas.drawtext(time, getwidth() / 2 - textwidth / 2, getheight() / 2 + textheight / 2, paint); } }
看一下activity中的代码–就是一个listview的效果展示
public class mainactivity extends activity { private listview listview; @override protected void oncreate(bundle savedinstancestate) { super.oncreate(savedinstancestate); setcontentview(r.layout.activity_main); listview = (listview) findviewbyid(r.id.listview); initdata(); listview.setadapter(new mybaseadapter()); } class mybaseadapter extends baseadapter { @override public int getcount() { return datalist.size(); } @override public object getitem(int arg0) { return datalist.get(arg0); } @override public long getitemid(int arg0) { return arg0; } @override public view getview(int arg0, view arg1, viewgroup arg2) { view view = view.inflate(mainactivity.this, r.layout.item, null); textview tv_content = (textview) view.findviewbyid(r.id.tv_content); textview tv_time = (textview) view.findviewbyid(r.id.tv_time); timeview timeview = (timeview) view.findviewbyid(r.id.timeview); timeview.settime(datalist.get(arg0).gettime()); tv_content.settext(datalist.get(arg0).getcontent()); tv_time.settext(datalist.get(arg0).gettime()); return view; } } arraylist<databean> datalist = new arraylist<databean>(); private void initdata() { for (int i = 0; i < 20; i++) { datalist.add(new databean("哈哈哈哈" + i, "25/10")); } } }
好了,这样的一个自定义时间轴效果就搞定了。
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。