android 7 qs分析,Android 8.1 中Systemui中的常见修改(七)QStile流程

本文详细分析了QstileView的加载过程,包括icon和tile的加载,以及图标布局大小和padding的设置。通过研究源代码,我们可以更好地理解如何进行界面定制和修改,以实现更高效和个性化的用户体验。
摘要由CSDN通过智能技术生成

研究QstileView的加载流程,可以方便后我们后续进行界面的定制化和相应的修改。本文仅仅简单的探究流程,当然我们也会发现好多的新知识。

一、在线代码地址:

分享一个在线看代码的地址:

https://android.googlesource.com/platform/frameworks/base/+/master/packages/SystemUI/src/com/android/systemui/qs/

二、icon和tile的加载流程

三、关于图标布局大小和padding的设置。

QSTileBaseView.java

public QSTileBaseView(Context context, QSIconView icon, boolean collapsedView) {

super(context);

// Default to Quick Tile padding, and QSTileView will specify its own padding.

int padding = context.getResources().getDimensionPixelSize(R.dimen.qs_quick_tile_padding);

//图标的动态添加

mIconFrame = new FrameLayout(context);

mIconFrame.setForegroundGravity(Gravity.CENTER);

//设置大小

int size = context.getResources().getDimensionPixelSize(R.dimen.qs_quick_tile_size);

addView(mIconFrame, new LayoutParams(size, size));

mIcon = icon;

FrameLayout.LayoutParams params = new FrameLayout.LayoutParams(

ViewGroup.LayoutParams.WRAP_CONTENT, ViewGroup.LayoutParams.WRAP_CONTENT);

params.setMargins(0, padding, 0, padding);

mIconFrame.addView(mIcon, params);

mTileBackground = newTileBackground();

if (mTileBackground instanceof RippleDrawable) {

setRipple((RippleDrawable) mTileBackground);

}

setImportantForAccessibility(View.IMPORTANT_FOR_ACCESSIBILITY_YES);

setBackground(mTileBackground);

setPadding(0, 0, 0, 0);

setClipChildren(false);

setClipToPadding(false);

mCollapsedView = collapsedView;

setFocusable(true);

}

dimens.xml

48dp

24dp

12sp

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值