经常使用的自己定义UI组件- 一:TimeView
近期做蛋疼的机顶盒项目,以后遇到哪些经常使用的组件,记录于此。
反编译 youku视频TV偷来的。。也希望各位童鞋多学习别人的代码,为己所用。
当然还有其它的办法,比方监听系统发出的广播等等。等有时间再把那个贴上来。
效果图:右上角的时间
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的更多相关文章
- Atitit.web ui 组件化 vs mvc
Atitit.web ui 组件化 vs mvc 组件化 与 mvc并不矛盾..单双方适用的地方有所不同.. React推荐以组件的方式去重新思考UI构成,将UI上每一个功能相对独立的模块定 ...
- AngularJs的UI组件ui-Bootstrap分享(十二)——Rating
Rating是一个用于打分或排名的控件.看一个最简单的例子: <!DOCTYPE html> <html ng-app="ui.bootstrap.demo" x ...
- AngularJs的UI组件ui-Bootstrap分享(八)——Tooltip和Popover
tooltip和popover是轻量的.可扩展的.用于提示的指令.对于移动端来讲,这两个指令虽然可以正常工作,但是从用户体验的角度并不推荐使用. 先说tooltip,tooltip有三种使用方式: ( ...
- AngularJs的UI组件ui-Bootstrap分享(七)——Buttons和Dropdown
在ui-Bootstrap中,Buttons控件和Dropdown控件与form表单中的按钮和下拉框名字很像,但实际上这两个控件有新的含义. 先说Buttons,它是一组按钮,用来实现form表单中的 ...
- 小波说雨燕 第三季 构建 swift UI 之 UI组件集-视图集(六)Picker View视图 学习笔记
想对PickerView进行操作,只能在代码中操作. 下面 ,再添加三个label组件,然后将所有组件配置到代码中(看代码),然后要实现对PickerView的操作,就要实现它的DataSource协 ...
- Android UI组件----ListView列表控件详解
[声明] 欢迎转载,但请保留文章原始出处→_→ 生命壹号:http://www.cnblogs.com/smyhvae/ 文章来源:http://www.cnblogs.com/smyhvae/p/3 ...
- Android UI组件学习
android.view.View类是全部UI组件的父类. 如果一些属性的内容本类找不到的时候一定要到父类之中进行查找. 所谓的学习组件的过程就是一个文档的查找过程. ※ Android之中所有的组件 ...
- 第1组UI组件:布局管理器
1 布局管理的来源 为了让UI在不同的手机屏幕上都能运行良好----不同手机屏幕的分辨率/尺寸并不完全相同,如果让程序手动控制每个组件的大小.位置,会给编程带来巨大的麻烦.为了解决这个问题.andro ...
- 1.引入必要的文件 2.加载 UI 组件的方式 4.Parser 解析器
//引入 jQuery 核心库,这里采用的是 2.0 <scripttype="text/javascript"src="easyui/jquery.min.js& ...
随机推荐
- CSS3 target 伪类不得不说那些事儿(纯CSS实现tab切换)
是不是觉得target有点眼熟?! 今天要讲的不是HTML的<a>标签里面有个target属性. target伪类是css3的新属性. 说到伪类,对css属性的人肯定都知道:hover.: ...
- JQuery图片轮换 nivoSlider图片轮换
效果图: 第一步:添加引用 <script src="jquery-ui-1.9.2.custom.min.js" type="text/javascript&qu ...
- php防止重复提交问题
php防止重复提交问题 用户提交表单时可能因为网速的原因,或者网页被恶意刷新,致使同一条记录重复插入到数据库中,这是一个比较棘手的问题.我们可以从客户端和服务器端一起着手,设法避免同一表单的重复提交. ...
- vs2013+sql server2012
学习 vs2013 sql server2012使用 : linp lambda entity framework wcf tfs;
- react-redux源码解析
有理解不对的地方,欢迎大家指正!!! react为什么需要redux辅助???react是view层的单向数据流框架,数据需要一层一层往子组件传递(子组件并不会自动继承).子组件需要操作父组件的数据时 ...
- Java反射 - 1(得到类对象的几种方法,调用方法,得到包下的所有类)
通过反射获得对象的方法 准备工作: 有一个User类如下 package o1; /** * Created by yesiming on 16-11-19. */ public class User ...
- 修改浏览器的User-Agent来伪装你的浏览器和操作系统
近期很多文章都提到了User-Agent (UA) 字符串,但大部分网友都不知道这个东西有什么用处.其实简单的说User-Agent就是客户端浏览器等应用程序使用的一种特殊的网络协议,在每次浏览器(邮 ...
- iOS开发——C篇&动态内存分析
再C语言中关于内存是一个很重要的知识点,所以今天我就从c语言的内存分配开始为大家解析一下C语言再iOS开发中非常重要的一些知识. 1:malloc函数的介绍 C语言中开辟内存空间:malloc函数(堆 ...
- MongoDB资料汇总专题[转发]
转发下..这个哥收集的很全 MongoDB资料汇总专题 作者:nosqlfan http://blog.nosqlfan.com/html/3548.html 最后更新时间:2013-04-22 1. ...
- NUMBER BASE CONVERSION(进制转换)
Description Write a program to convert numbers in one base to numbers in a second base. There are 62 ...