经常使用的自己定义UI组件- 一:TimeView



近期做蛋疼的机顶盒项目,以后遇到哪些经常使用的组件,记录于此。

反编译 youku视频TV偷来的。。也希望各位童鞋多学习别人的代码,为己所用。

当然还有其它的办法,比方监听系统发出的广播等等。等有时间再把那个贴上来。

效果图:右上角的时间

http://img.blog.csdn.net/20140630144648750?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvbGVlaHUxOTg3/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center

TimeView.java

package com.youku.tv.widget;

import android.content.Context;

import android.os.Handler;

import android.os.Message;

import android.util.AttributeSet;

import android.view.LayoutInflater;

import android.view.View;

import android.widget.LinearLayout;

import android.widget.TextView;

import java.util.Calendar;

import java.util.Date;

public class TimeView extends LinearLayout{

class ClockHandler extends Handler {

private void post()

{

sendMessageDelayed(obtainMessage(0), 1000 * (60 - Calendar.getInstance().get(13)));

}

public void handleMessage(Message message){

super.handleMessage(message);

if(!mStopped){

updateClock();

post();

}

}

public void startScheduleUpdate(){

mStopped = false;

post();

}

public void stopScheduleUpdate(){

mStopped = true;

removeMessages(0);

}

private boolean mStopped;

final TimeView this$0;

ClockHandler(){

super();

this$0 = TimeView.this;

}

}

public TimeView(Context context, AttributeSet attributeset){

super(context, attributeset);

mContext = getContext();

((LayoutInflater)context.getSystemService("layout_inflater")).inflate(R.layout.time_simple, this);

mHour = (TextView)findViewById(R.id.system_hour);

mMinute = (TextView)findViewById(R.id.system_minute);

mClockUpdater = new ClockHandler();

}

protected void onAttachedToWindow(){

super.onAttachedToWindow();

updateClock();

mClockUpdater.startScheduleUpdate();

}

protected void onDetachedFromWindow(){

super.onDetachedFromWindow();

mClockUpdater.stopScheduleUpdate();

}

protected void onVisibilityChanged(View view, int i)

{

super.onVisibilityChanged(view, i);

}

void updateClock()

{

Calendar calendar = Calendar.getInstance();

calendar.setTime(new Date());

int k = calendar.get(5);

int l = calendar.get(11);

int i1 = calendar.get(12);

if(mHour != null)

{

TextView textview2 = mHour;

Object aobj2[] = new Object[1];

aobj2[0] = Integer.valueOf(l);

textview2.setText(String.format("%2d:", aobj2));

}

if(mMinute != null)

if(i1 < 10)

{

TextView textview1 = mMinute;

Object aobj1[] = new Object[1];

aobj1[0] = Integer.valueOf(i1);

textview1.setText(String.format("0%d", aobj1));

} else

{

TextView textview = mMinute;

Object aobj[] = new Object[1];

aobj[0] = Integer.valueOf(i1);

textview.setText(String.format("%2d", aobj));

}

invalidate();

}

private static final String TAG = "TimeView";

private ClockHandler mClockUpdater;

private Context mContext;

private TextView mHour;

private TextView mMinute;

}

time_simple.xml布局文件

<?xml version="1.0" encoding="utf-8"?>

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"

android:layout_width="wrap_content"

android:layout_height="wrap_content" >

<TextView

android:id="@id/system_minute"

android:layout_width="wrap_content"

android:layout_height="wrap_content"

android:layout_alignParentRight="true"

android:text="01"

android:textColor="@color/timecolor"

android:textSize="@dimen/px42" />

<TextView

android:id="@id/system_hour"

android:layout_width="wrap_content"

android:layout_height="wrap_content"

android:layout_toLeftOf="@id/system_minute"

android:text="55"

android:textColor="@color/timecolor"

android:textSize="@dimen/px42" />

</RelativeLayout>



经常使用的自己定义UI组件- 一:TimeView

时间: 2024-10-02 02:41:02

经常使用的自己定义UI组件- 一:TimeView的相关文章

Android开发之自己定义UI组件和属性

Android系统尽管自带了非常多的组件,但肯定满足我们个性化的需求,所以我们为了开发方便.须要自己定义Android的UI组件,以实现我们个性化的需求. 自己定义组合控件的步骤: 1 .自定一个View.须要继承相对布局.线性布局等ViewGroup的子类.ViewGroup是一个其它控件的容器,可以乘放各种组件. 2 .实现父类的3个构造方法.一般须要在构造方法里始化初自己定义布局文件. 一个參数构造方法:为new控件使用 两个參数的造方法:在调用布局文件使用 三个參数的造方法:传递带有样式

Android UI组件进阶(2)——仿Windows对话框

Android UI组件进阶(2)--仿Windows对话框 在开始本章前先祝大家中秋节快乐哈,相信很多上班的朋友都是放三天假的哈! 有时间的话回家陪陪父母吧!树欲静而风不止,子欲养而亲不待!岁月不饶人! 好了,道理和祝福语就说到这里了,今天给大家准备的是模仿Windows风格对话框! 效果图: 相信大部分的AlertDialog都是下面这个样子的: 今天给大家讲解的对话框是下面这样的: 对比两种对话框,站在用户的角度,相信你更加钟情于第二种颜色鲜明的对话框 好了下面就开始讲解如何制作模仿win

布局技巧1:创建可重用的UI组件(include标签)

Android平台提供了大量的UI构件,你可以将这些小的视觉块(构件)搭建在一起,呈现给用户复杂且有用的画面.然而,应用程序有时需要一些高级的视觉组件.为了满足这一需求,并且能高效的实现,你可以把多个标准的构件结合起来成为一个单独的.可重用的组件. 例如,你可以创建一个可重用的组件包含一个进度条和一个取消按钮,一个Panel包含两个按钮(确定和取消动作),一个Panel包含图标.标题和描述等等.简单的,你可以通过书写一个自定义的View来创建一个UI组件,但更简单的方式是仅使用XML来实现. 在

1.引入必要的文件 2.加载 UI 组件的方式 4.Parser 解析器

1 //引入 jQuery 核心库,这里采用的是 2.0 <scripttype="text/javascript"src="easyui/jquery.min.js"></script> //引入 jQuery EasyUI 核心库,这里采用的是 1.3.6 <scripttype="text/javascript"src="easyui/jquery.easyui.min.js"><

Android UI组件之EditText 实现网站注册效果的校验

时间过得太快,还没有什么感觉就到周末了,人生五十载,如梦亦如幻.不过我还没那么老.前两天曾说过,如果需要实现输入IP的功能,那么我们可以整一个自定义控件,然后对他进行事件监听,巴拉巴拉一大堆,好不容易做完了.后来想想,这是为了符合我们平常在PC上的习惯而去自定义的.那么如果只是单纯的为了输入一个IP地址,然后得到结果,不想去这么折腾,有没有什么好办法呢? 很显然是有的,那就今天就来看看Android最常用的组件之一的EditText,虽然之前用的也是EditText,但是侧重点其实是自定义控件,

Android界面编程——Android高级UI组件(三)

Android界面编程 Android高级UI组件 2.4.1适配器组件 适配器的作用 适配器充当适配器控件和该视图数据之间的桥梁.适配器提供访问的数据项,并负责产生数据组中的每个项的视图. 常用的适配器 BaseAdapter:抽象类,具有较高的灵活性. ArrayAdapter:最为简单,智能展示一行文字. SimpleAdapter:有较好的扩充性,可以自定义出各种效果. SimpleCursorAdapter:主要用于操作数据库. 常用的适配器控制 适配器控件扩展自ViewAdapter

交互设计:隐藏或显示大段文本的UI组件有哪些?

应用场景: 在手机上要给列表中的每一项添加一个大段的介绍,应该用什么UI组件 A: 这里可以用,模态对话框,弹出提示,工具提示这类组件.模态对话框的好处,就是用关闭的按钮,用户操作方便:而弹出提示和工具提示只能通过点击来切换 模态对话框: http://v2.bootcss.com/javascript.html#modals http://www.runoob.com/bootstrap/bootstrap-modal-plugin.html Bootstrap 模态框(Modal)插件 模态

Android开发之自定义UI组件和属性

Android系统虽然自带了很多的组件,但肯定满足我们个性化的需求,所以我们为了开发方便,需要自定义Android的UI组件,以实现我们个性化的需求. 自定义组合控件的步骤: 1 .自定一个View,需要继承相对布局,线性布局等ViewGroup的子类.ViewGroup是一个其他控件的容器,能够乘放各种组件. 2 .实现父类的3个构造方法.一般需要在构造方法里始化初自定义布局文件. 一个参数构造方法:为new控件使用 两个参数的造方法:在调用布局文件使用 两个参数的造方法:传递带有样式的布局文

【Android】UI组件变量组织

说明 这不是一篇技术文章,而是因为最近项目新来了几个android新人,所以我琢磨在代码风格上进行一下统一,所以有了以下以及后面的几篇文章. java文件内部UI组件变量组织 UI组件使用小写字母"v"作为前缀. v主要表示"View",android源码中,变量前缀主要是"m",但是个人觉得对于UI变量,还是用"v"比较清晰 意图导向,最小化抽象 UI变量的"声明类型"应该是能够实现意图的最小化抽象类型,