android 开发技巧(9)--为文本添加发亮的效果
16lz
2021-01-23
把一个界面做成类似于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>
字体下载
更多相关文章
- Android如何让TextView子元素随着父元素的背景变化而改变字体颜
- Android学习笔记(2)---android字体风格设置
- 【Android 界面效果39】android:inputType问题
- Android利用TextView制作跑马灯该效果
- 安卓开发小效果--走马灯
- Android等宽字体
- Android 使用shape来优化界面效果
- android切换效果、Flutter信息类App、仿饿了么点餐、仿爱壁纸应
- Android设置android:clipChildren达到的特殊UI设计效果