9:主题背景启动优化、全面屏适配、ItemDecoration、Paint#drawText

本文涵盖Chrome搜索技巧、Android启动优化、全面屏适配、RecyclerView的ItemDecoration使用、Paint#drawText()方法详解等,深入讲解了Activity主题设置、底部黑条解决方案、字体绘制与测量等关键技术点。

1、Chrome搜索技巧

2、Android启动优化

修改Activity主题,并给主题设置背景图片

juejin.im/post/5aec28…

3、Android全面屏适配、启动页适配、虚拟导航设置

全面屏下底部黑条解决办法

  • 清单文件加入 android:resizeableActivity="true";

  • 或者设置最大屏幕宽高比

<meta-data 
  android:name="android.max_aspect"
  android:value="2.1" />
复制代码

blog.youkuaiyun.com/wqbs369/art…

4、RecyclerView之ItemDecoration

绘制分割线、绘制网格线、绘制首字母

juejin.im/post/59099f…

5、Paint#drawText()

FontMetrics

public class FontView extends View {
    String text = "ap爱哥┠№@↓";
    private Paint mTextPaint;
    private Paint mLinePaint;
    private Paint.FontMetrics mFontMetrics;

    public FontView(Context context, @Nullable AttributeSet attrs) {
        super(context, attrs);
        init();
    }

    public void init() {
        mTextPaint = new Paint(Paint.ANTI_ALIAS_FLAG);
        mTextPaint.setStrokeWidth(3);
        mTextPaint.setTextSize(70);
        mTextPaint.setColor(Color.BLACK);
        mFontMetrics = mTextPaint.getFontMetrics();

        mLinePaint = new Paint(Paint.ANTI_ALIAS_FLAG);
        mLinePaint.setStrokeWidth(1);
        mLinePaint.setColor(Color.RED);
    }

    @Override
    protected void onDraw(Canvas canvas) {
        super.onDraw(canvas);
        float x = canvas.getWidth() * 1.0f / 2 - mTextPaint.measureText(text) / 2;
	// 计算Baseline绘制的Y坐标:text从baseline开始绘制,需要下移baseline到text中线之间的距离
	// + (d - a) / 2 - d == - (a + d) / 2        
        float y = canvas.getHeight() * 1.0f / 2 - (mFontMetrics.ascent + mFontMetrics.descent) / 2;
        canvas.drawText(text, x, y, mTextPaint);
        canvas.drawLine(0, canvas.getHeight() * 1.0f / 2, canvas.getWidth(), canvas.getHeight() * 1.0f / 2, mLinePaint);
    }
}
复制代码

blog.youkuaiyun.com/aigestudio/…

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值