案例:

android手机系统在启动的时候,会有一段时间显示“Android”字样的动画,怎么样实现呢,其实很简单,就是在这几个字样加上阴影,实现方式如下:首先自定义一个显示启动几面字体的view。如下:

LauncherTextView.java

public class LauncherTextView extends View {private Paint txtPaint;private Shader shader;private float dx = 50;private long lastTime = System.currentTimeMillis();private boolean start = false;private float height, width;private void init() {txtPaint = new Paint();txtPaint.setColor(Color.BLUE);txtPaint.setAntiAlias(true);// txtPaint.setTextAlign(Paint.Align .RIGHT);height = this.getHeight();width = this.getWidth();shader = new LinearGradient(0, 0, 200, 0, new int[] { Color.BLUE,Color.GREEN, Color.WHITE }, new float[] { 0, 0.7f, 1 },TileMode.MIRROR);// shader = new LinearGradient(0, 0, 200, 0,// new int[]{Color.argb(255, 120, 120, 120), Color.argb(255, 120, 120,// 120), Color.WHITE}, new float[]{0, 0.7f, 1}, TileMode.MIRROR);txtPaint.setShader(shader);}public LauncherTextView(Context context) {super(context);init();}public LauncherTextView(Context context, AttributeSet attrs) {super(context, attrs);init();}public void setStart(boolean start) {this.start = start;invalidate();}@Overrideprotected void onSizeChanged(int w, int h, int oldw, int oldh) {width = w / 2f;height = h / 2f;Log.d("size", "onSizeChanged: width " + width + ", height " + height);super.onSizeChanged(w, h, oldw, oldh);}@Overrideprotected void onDraw(Canvas canvas) {long now = System.currentTimeMillis();float elapsed = (now - lastTime) / 4.5f;dx += elapsed;Matrix matrix = new Matrix();if (start) {matrix.setTranslate(dx, 0);invalidate();} else {matrix.setTranslate(0, 0);}txtPaint.setTextSize(height*1.2f);//txtPaint.setTextScaleX(width / height);txtPaint.setTextAlign(Paint.Align.CENTER);FontMetrics fm = txtPaint.getFontMetrics();shader.setLocalMatrix(matrix);canvas.drawText(getContext().getString(R.string.start), width ,height / 2 - (fm.ascent + fm.descent) / 2, txtPaint); lastTime = now;}}

在main.xml中这样定义显示的xml:

<com.igrs.client.ui.widget.LauncherTextView android:id="@+id/start" android:layout_width="wrap_content" android:layout_height="@dimen/title_height"></com.igrs.client.ui.widget.LauncherTextView>



而在主线程中只需要这样调用就可以:

((LauncherTextView)findViewById(R.id.igrs)).setStart(true);


更多相关文章

  1. Android屏幕元素层次结构
  2. Android中EditText属性
  3. TextView中ellipsize属性
  4. Android:ImageView如何显示网络图片
  5. 转载:Android之PreferenceActivity
  6. 【Android(安卓)开发】:UI控件之显示图片控件 ImageView 的使用方
  7. android EditText 隐藏软键盘(输入法不显示),并且显示光标
  8. Android(安卓)屏幕截图并用WindowManager显示
  9. TabLayout绑定Viewpager后不显示文字

随机推荐

  1. 卜若的代码笔记系列-unity系列-第三章:and
  2. Android 《Android移动性能实战》学习笔
  3. Android之Sqlite开发中可能被你忽视的细
  4. 第一款国产的Android手机—天翼N930
  5. Android中的线程状态之AsyncTask详解
  6. Android Studio 做单元测试笔记
  7. 明年1月6日CES展上将曝光多款Android平板
  8. Android(安卓)- 事件模型(dispatchTouchEv
  9. Android(安卓)数字签名及命令行启动执行A
  10. Android:“万能”Activity重构篇