Android5.1 Dialer digits 大小
来源:互联网 发布:帝国cms内容页调用列表 编辑:程序博客网 时间:2024/05/03 22:31
本篇文章记录digits大小修改,也就是上图中红色圈中的字体大小
通过Android-sdk工具Hierarchy view 查看本界面的进程是:
打开DialtactsActivity,发现好多代码,这怎么看呢?首先我们一般从onCreate 方法入手,还是有点多怎么办,可以在用Android-sdk工具Hierarchy view查看本页面的布局,从查找对应的id–> dialtacts_container入手:
if (savedInstanceState == null) { getFragmentManager().beginTransaction() .add(R.id.dialtacts_frame, new ListsFragment(), TAG_FAVORITES_FRAGMENT) .add(R.id.dialtacts_container, new DialpadFragment(), TAG_DIALPAD_FRAGMENT) .commit(); } else {
DialpadFragment 就是我们要找的
其中它onCreateView中调用了
final View fragmentView = inflater.inflate( R.layout.dialpad_fragment, container); ..... mDialpadView = (DialpadView) fragmentView.findViewById(R.id.dialpad_view); mDialpadView.setCanDigitsBeEdited(true); mDigits = mDialpadView.getDigits(); mDigits.setKeyListener(UnicodeDialerKeyListener.INSTANCE); mDigits.setOnClickListener(this); mDigits.setOnKeyListener(this); mDigits.setOnLongClickListener(this); mDigits.addTextChangedListener(this); mDigits.setElegantTextHeight(false);
首先我们找到布局文件R.layout.dialpad_fragment 发现里面有
dialpad_view
通过Android.mk 可以发现Dialer关联了其他的一些app
PhoneCommon 中就有我们要找的dialpad_view布局文件:
其中红色标记就是我们要找的digits大小的修改。
为什么这里用到了两个大小值呢,原来是为了拨号输入过长字体变小,规定了一个最小值。我们来看看具体的实现是怎么样的打开DigitsEditText 源码,发现只有两个事件的实现和一个构造方法,这里并没有我们要找的。
public class DigitsEditText extends ResizingTextEditText { public DigitsEditText(Context context, AttributeSet attrs) { ...... } @Override protected void onFocusChanged(boolean focused, int direction, Rect previouslyFocusedRect) { ...... } @Override public boolean onTouchEvent(MotionEvent event) { .......}
查看父类ResizingTextEditText
/** * EditText which resizes dynamically with respect to text length. */public class ResizingTextEditText extends EditText { private final int mOriginalTextSize; private final int mMinTextSize; public ResizingTextEditText(Context context, AttributeSet attrs) { super(context, attrs); mOriginalTextSize = (int) getTextSize(); TypedArray a = context.obtainStyledAttributes(attrs, R.styleable.ResizingText); mMinTextSize = (int) a.getDimension(R.styleable.ResizingText_resizing_text_min_size, mOriginalTextSize); a.recycle(); } @Override protected void onTextChanged(CharSequence text, int start, int lengthBefore, int lengthAfter) { super.onTextChanged(text, start, lengthBefore, lengthAfter); ViewUtil.resizeText(this, mOriginalTextSize, mMinTextSize); } @Override protected void onSizeChanged(int w, int h, int oldw, int oldh) { super.onSizeChanged(w, h, oldw, oldh); ViewUtil.resizeText(this, mOriginalTextSize, mMinTextSize); }}
我们从注释中就可以明白我们要找的digits大小的变化就在这里通过
ViewUtil.resizeText(this, mOriginalTextSize, mMinTextSize);实现的
public static void resizeText(TextView textView, int originalTextSize, int minTextSize) { final Paint paint = textView.getPaint(); final int width = textView.getWidth(); if (width == 0) return; textView.setTextSize(TypedValue.COMPLEX_UNIT_PX, originalTextSize); float ratio = width / paint.measureText(textView.getText().toString()); if (ratio <= 1.0f) { textView.setTextSize(TypedValue.COMPLEX_UNIT_PX, Math.max(minTextSize, originalTextSize * ratio)); } }
通过TextView 的宽度和输入字体的宽度比来进行控制字体大小的变化。哈哈 ,虽然好多类不懂,但是也找到了。
0 0
- Android5.1 Dialer digits 大小
- 如何修改Android5.1系统音量大小
- Android 7.1.1 Dialer中通话记录显示详解
- mt2503 [BT dialer v2.1]同步电话本部分联系人丢失
- mt2503 [BT dialer v2.1]只能接听,不能挂断来电
- mt2503 [BT dialer v2.1]提示Currently not available
- dialer.exe
- android5.1 Settings简介
- Android5.1--多用户模式
- Android5.1--SystemServer进程
- android5.1之MediaScanner
- Android5.1 -Recents分析
- Android5.1 SPI驱动
- android5.1 编译命令
- Android5.1 VectorDrawable
- [Android5.1]系统默认设置
- [Android5.1]Broadcast机制
- android5.1 install_apk 笔记
- 【HUSTOJ】1083: 数组的二分查找
- 三个常用的PHP图表类库
- 什么是P问题、NP问题和NPC问题
- 如何获取apk的签名信息?
- python操作postgres数据库
- Android5.1 Dialer digits 大小
- ifort环境变量设置
- 深入研究 Java Synchronize 和 Lock 的区别与用法
- Deep Learning (Yoshua Bengio, Ian Goodfellow, Aaron Courville) 翻译 Part 1
- iOS内存管理(一)
- hibernate一对多和多对一的整理:《例》部门与员工
- 【Android学习】使用聚合数据的接口进行的RxAndroid学习
- tableView cell的几种样式样式 右侧带图片
- 邻接表的dfs遍历