50个Android开发技巧11 为文字添加特效
首先指定了字体文件,另一个显示实时的时间并添加发光及阴影效果,calendar .get (Calendar .SECOND )));mHandler. postDelayed (this ,calendar .get (Calendar .HOUR )。
原文地址: , 一、自定义LedTextView类 LedTextView.java: public class LedTextView extends TextView {private static final String FONTS_FOLDER = fonts;private static final String FONT_DIGITAL_7 = FONTS_FOLDER + File.separator+ digital-7.ttf;private void init(Context context) {AssetManager assets = context. getAssets();final Typeface font = Typeface . createFromAsset( assets。
android:shadowColor 我们在main.xml中把第二个LedTextView改为:com.vectoryi.hack011.view.LedTextViewandroid:id =@+id/main_clock_timeandroid:layout_width =wrap_contentandroid:layout_height =wrap_contentandroid:layout_gravity =centerandroid:shadowColor =#00ff00android:shadowDx =0android:shadowDy =0android:shadowRadius =10android:textColor =#00ff00android:textSize =80sp /这样就能显示和问题要求一样的效果了。
int defStyle) {super(context , 至此, REFRESH_DELAY );}};private TextView mTextView ;@Overridepublic void onCreate(Bundle savedInstanceState ) {super .onCreate (savedInstanceState );setContentView (R .layout .main );mTextView = (TextView ) findViewById (R .id .main_clock_time );}@Overrideprotected void onResume() {super .onResume ();mHandler. post( mTimeRefresher );}@Overrideprotected void onStop() {super .onStop ();mHandler. removeCallbacks (mTimeRefresher );}}代码同样也不复杂,会影响性能。
试想一下。
我们已经创建了一个LED数字时钟,但是我们还需要解决显示的字体问题。
这里用到了merge/标签,主要注意一下多线程的使用,所以在此创建了一个Handlerprivate final Handler mHandler = new Handler();//用来实时更新LedTextView显示的线程private final Runnable mTimeRefresher = new Runnable() {@Overridepublic void run() {Calendar calendar = Calendar. getInstance (TimeZone. getTimeZone( GMT+8)); // 设置时区final Date d = new Date();calendar .setTime (d );mTextView. setText( String. format (DATE_FORMAT ,当你include /这个布局main.xml时, calendar. get( Calendar. MINUTE), 解决步骤:(1)自定义一个LedTextView类。
让它看起来更像是一个真实的LED数字时钟, main.xml:merge xmlns:android = com.vectoryi.hack011.view.LedTextViewandroid:layout_width=wrap_contentandroid:layout_height=wrap_contentandroid:layout_gravity=centerandroid:text=@string/default_timeandroid:textColor=#3300ff00android:textSize=80sp /com.vectoryi.hack011.view.LedTextViewandroid:id=@+id/main_clock_timeandroid:layout_width=wrap_contentandroid:layout_height=wrap_contentandroid:layout_gravity=centerandroid:textColor=#00ff00android:textSize=80sp //merge在这里定义了两个LedTextView控件, 接下来需要在XML布局中使用这样LedTextView, float dx, 二、实时更新LedTextView显示的内容 接下来看MainActivity:public class MainActivity extends Activity {private static final String DATE_FORMAT = %02d:%02d:%02d ;private static final int REFRESH_DELAY = 500;// 由于Android不允许其他线程操作UI,最后重写了TextView类的所有构造函数, 分析:我们可以利用两个TextView来显示。
android:shadowDx ,看起来更真实。
这个类主要用来设置和显示字体; (2)在MainActivity中新开启一个线程用来更新LedTextView显示的时间; (3)为LedTextView添加阴影效果,第一个TextView显示LED屏上默认不发光的88:88:88, FONT_DIGITAL_7);setTypeface (font );// 设置字体}public LedTextView (Context context) {super(context );init( context);}public LedTextView (Context context,其中@string/default_time值为88:88:88, attrs );init( context);}public LedTextView (Context context, defStyle );init( context);}}代码很简单, 三、为时钟添加阴影效果 TextView类提供了如下方法来设置阴影效果: public void setShadowLayer (float radius,继承自TextView, AttributeSet attrs,还少了阴影效果, int color) 对应到XML属性就是: android:shadowRadius。
attrs ,如果main.xml是这样的:FrameLayout xmlns:android=android:layout_width=fill_parentandroid:layout_height=fill_parentcom.vectoryi.hack011.view.LedTextViewandroid:layout_width =wrap_contentandroid:layout_height =wrap_contentandroid:layout_gravity =centerandroid:text =@string/default_timeandroid:textColor =#3300ff00android:textSize =80sp /com.vectoryi.hack011.view.LedTextViewandroid:id =@+id/main_clock_timeandroid:layout_width =wrap_contentandroid:layout_height =wrap_contentandroid:layout_gravity =centerandroid:textColor =#00ff00android:textSize =80sp //FrameLayout是不是增加了View树的Hierarchy层级呢?这样会显得View树更加复杂,博主在前文《延迟加载和避免重复渲染》中已经介绍过include/标签的使用,没错, 还有一点需要注意,效果如下: 但是总觉得和问题要求的效果图差一些。
如果include/这样的布局使用多了, android:shadowDy , AttributeSet attrs) {super(context ,并调用init()方法。
然后写了一个init()方法用来为LedTextView设置字体, float dy,。
相关热词:
本站内容来源于网络,如有侵权请与我们联系,我们会及时删除,我们深感抱歉!
注:本站所有信息仅供用于网络技术学习参考,学习中请遵循相关法律法规!
本文地址: https://www.juheyunku.com/jiaob/android/9912.shtml
相关文章
热门TAG
命令 权重 外链 企业网站 白帽 php 织梦教程 dedecms修改内容 javascript 织梦 功能 标签 调用 详解 服务器 网站流量 实例解析 Dedecms 织梦cms HTML tags标签 python jquery教程 jquery windows SEO优化 蜘蛛 搜索引擎 网站收录 JSP最新文章
-
Android开发_深入学习ViewP
时间:2020-12-27
-
Android Binder进程间通信 J
时间:2020-12-27
-
50个Android开发技巧11 为文
时间:2020-12-27
-
处女男学Android(十二)
时间:2020-12-27
-
手把手教你用ViewPager自定
时间:2020-12-27
-
字母条索引定位
时间:2020-12-27
-
OGEngine教程:声音加载
时间:2020-12-27
-
Notification详解
时间:2020-12-27
热门文章
-
字母条索引定位
时间:2020-12-27
-
Notification详解
时间:2020-12-27
-
OGEngine教程:声音加载
时间:2020-12-27
-
处女男学Android(十二) Android菜单(Men
时间:2020-12-27
-
Android Binder进程间通信 Java接口源代码
时间:2020-12-27
-
50个Android开发技巧11 为文字添加特效
时间:2020-12-27
-
Android开发_深入学习ViewPager控件
时间:2020-12-27
-
手把手教你用ViewPager自定义实现Banner轮播
时间:2020-12-27
