欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  移动技术

Android自定义时间轴的实现过程

程序员文章站 2024-02-15 19:51:59
本文讲述android自定义时间轴的实现过程,供大家参考,具体内容如下 相关视频链接: 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"));
 }

 }

}

好了,这样的一个自定义时间轴效果就搞定了。

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。