把一个界面做成类似于LED灯一样的效果,需要定义一个类,加载特殊字体。为了实现发光效果,需要实现TextView类中的public void setShadowLayer (float radius, float dx, float dy, int color),也可以通过 XML 中的 android:shadowColor, android:shadowDx、
android:shadowDy 和 android:shadowRadius 属 性 使 用 这 种 效 果。修改 android:shadowDx 和 android:shadowDy 属性的值可以改
变阴影与文本之间的偏移。指定 android:shadowRadius 属性可以让
用户产生一种文本更亮的错觉

先将digital-7.ttf字体放在assets下的fonts文件夹下,自定义一个LedTextView继承自TextView

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";  public LedTextView(Context context) {    super(context);    init(context);  }  public LedTextView(Context context, AttributeSet attrs) {    super(context, attrs);    init(context);  }  public LedTextView(Context context, AttributeSet attrs, int defStyle) {    super(context, attrs, defStyle);    init(context);  }  private void init(Context context) {    AssetManager assets = context.getAssets();    final Typeface font = Typeface.createFromAsset(assets,        FONT_DIGITAL_7);    setTypeface(font);  }}
public class Hack11Activity extends Activity {    private static final String DATE_FORMAT = "%02d:%02d:%02d";    private static final int REFRESH_DELAY = 500;    private final Handler mHandler = new Handler();    private final Runnable mTimeRefresher = new Runnable() {        @Override        public void run() {            final Date d = new Date();            mTextView.setText(String.format(DATE_FORMAT, d.getHours(),                    d.getMinutes(), d.getSeconds()));            mHandler.postDelayed(this, REFRESH_DELAY);        }    };    private TextView mTextView;    @Override    protected void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        setContentView(R.layout.activity_hack11);        mTextView = (TextView) findViewById(R.id.main_clock_time);    }    @Override    protected void onResume() {        super.onResume();        mHandler.post(mTimeRefresher);    }    @Override    protected void onStop() {        super.onStop();        mHandler.removeCallbacks(mTimeRefresher);    }}

activity_hack11.xml

<?xml version="1.0" encoding="utf-8"?><merge xmlns:android="http://schemas.android.com/apk/res/android" >    <boerpower.com.android50hacks.view.LedTextView  android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_gravity="center" android:text="@string/default_time" android:textColor="#3300ff00" android:textSize="80sp" />    <boerpower.com.android50hacks.view.LedTextView  android:id="@+id/main_clock_time" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_gravity="center" android:shadowColor="#00ff00" android:shadowDx="0" android:shadowDy="0" android:shadowRadius="10" android:textColor="#00ff00" android:textSize="80sp" /></merge>
<string name="default_time">88:88:88</string>

字体下载

更多相关文章

  1. Android中gravity与layout_gravity的区别
  2. Android中gravity与layout_gravity的区别
  3. Android--控件属性汇总
  4. [学习笔记-Android]EditText属性
  5. listview android:cacheColorHint,android:listSelector属性作用
  6. Android(安卓)RelativeLayout 属性
  7. Android中EditText的inputType属性(键盘类型)
  8. android 备忘
  9. Android(安卓)RelativeLayout 属性

随机推荐

  1. iOS学习――iOS应用程序生命周期(四)
  2. ContentProvider-1查询
  3. Android(安卓)activity之间传递自定义类
  4. 关于Android中使用Uri监听数据库的变化
  5. Android(安卓)自定义控件之第二讲:TypedAr
  6. android 设计模式之代理模式
  7. Bundle的说明和用法
  8. android中创建XML
  9. Android(安卓)EventBus发布/订阅事件总线
  10. WebService接口调试如此简单