常用的自定义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-08 07:52:19

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

7款Android开发者常用的Android UI组件

7款Android开发者常用的Android UI组件 原文  http://news.cnblogs.com/n/506366/ Android 开发是目前最热门的移动开发技术之一,随着开发者的不断努力和 Android 社区的进步,Android 开发技术已经日趋成熟,当然,在 Android 开源社区中也涌现了很多不错的开源 UI 项目,它们可以帮助 Android 开发者更方便快捷地完成想要的功能.本文是 Android 系列的第一篇,主要是向大家推荐一些常用的 Android UI 组

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

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

Android 高级UI设计笔记08:Android开发者常用的7款Android UI组件(转载)

Android开发是目前最热门的移动开发技术之一,随着开发者的不断努力和Android社区的进步,Android开发技术已经日趋成熟,当然,在Android开源社区中也涌现了很多不错的开源UI项目,它们可以帮助Android开发者更方便快捷地完成想要的功能.本文是Android系列的第一篇,主要是向大家推荐一些常用的Android UI组件,它们都是开源的. 1.图表引擎 -  AChartEngine AChartEngine是一款基于Android的图表绘制引擎,它为Android开发者提供

cocos2d-js 3.0 rc2 自定义UI控件组件 例子:能播放动画的MenuItem。MenuItemSprite的bug

其实总体自定义UI组件都比较简单,尤其是cocos2d-js是开源的,如果有什么不明白的直接看js代码或者C++代码即可.当然js代码基本就够了. 另外,js的ctor函数虽然说是构造函数,但毕竟不是flash或者c++的构造函数,这只是一个普通函数,也就是说可以不在第一行默认调用,这就给扩展带来了不少方便. 现在想做一个声音按钮,点一下能关闭音乐,再点一下又能打开.当然就是MenuItemToggle了. 但想做得再炫一点,有声音的时候,按钮的样子能有几个音波的变化.那么就需要用MenuIte

五、vue常用UI组件

下面简单的总结下vue常用的一些UI 组件,有一些我也没怎么用过,这里先罗列出来,便于自己后面使用的时候查找方便,大家有更好的可以给我推荐哦~ vuex: vux github ui demo:https://github.com/airyland/vux Mint UI 项目主页:http://mint-ui.github.io/#!/zh-cn demo:http://elemefe.github.io/mint-ui/#/ github地址:https://github.com/Eleme

react native 使用 iOS 原生 UI 组件

目前 react native 的组件还是不多,有些也并不怎么好用,这时候就需要封装原生 UI 组件了 之前写过RN 与 native 的通信 无非就是两种: 1>>>  react native 内部事件需要通知 native 调用 native 的方法(或者传递RN 中的数据到 native),这时候可以用新建一个 manager 之类的文件 RCT_EXPORT_MOUDLE() 暴露 native类  ,RCT_EXPORT_METHOD () 暴露 native 方法给 js

Android常用UI组件 - Button

按钮(Button)是Android当中一个常用的UI组件,很小但是在开发中最常用到.一般通过与监听器结合使用,从而触发一些特定事件. Button继承了TextView.它的功能就是提供一个按钮,这个按钮可以供用户点击,当用户对按钮进行操作的时候,触发相应事件,如点击,触摸.一 般对于一个按钮而言,用的最多的就是点击事件,Button间接继承自View,而Android UI中的所有事件,都是定义在View中的. 实例:ButtonDemo 运行效果: 代码清单: 布局文件:main.xml

Android UI开源组件库BottomView ,第三方自定义UI控件

这里分享一个Android的非常经典实用而且简单方便的第三方UI控件库:BottomView(小米的米UI也用到了这个) 实现功能: 可以在底部弹出的View里自定义布局: 可以自定义是否可以触摸外部消失: 可以自定义事件: 可以自定义外围背景是否透明: 可以自定义动画: 如果需要的话,可以强制为顶部View显示 BottomView.jar库文件下载地址:http://download.csdn.net/detail/jay100500/7547055 BottomView的Demo下载地址:

Android UI组件----自定义ListView实现动态刷新

[声明] 欢迎转载,但请保留文章原始出处→_→ 生命壹号:http://www.cnblogs.com/smyhvae/ 文章来源:http://www.cnblogs.com/smyhvae/p/3910541.html 联系方式:[email protected] [正文] 一.具体步骤: (1)在activiy_main.xml中加一个ListView控件:再添加一个item的模板activity_main_item.xml,加一个底部加载的视图activity_main_load.xml