【android】开发笔记系列UI篇
2015-07-02 13:38
585 查看
弹出View添加阴影效果
系统自带就有,在android studio上直接写入背景颜色android:background="@android:drawable/dialog_holo_light_frame"
值得注意的是,这种阴影的尺寸,左右间隙之和是activity_horizontal_margin;上下:activity_vertical_margin
因此如果是对弹框尺寸比较敏感的(比如宽度和高度是手动计算的),在用了阴影背景之后记得给宽度或高度加上,上面一个margin的作为补偿哦。
四种样式供参考,2、3最常用
如何手动触发View的OnDraw事件
在UI线程,调用View的invalidate()方法。非UI线程,调用View的postInvalidate()方法。
View的OnLongClickListener事件,返回true或者false的意思
返回true,表示点击事件,由我托管了,就不再往下传递了返回false,表示执行了LongClick,还要再继续往下传递
颜色过渡动画
int colorFrom = Color.RED; int colorTo = Color.GREEN; int duration = 1000; ObjectAnimator.ofObject(targetView, "backgroundColor", new ArgbEvaluator(), colorFrom, colorTo) .setDuration(duration) .start();
ListView布局
1:ListView的Item元素是没法使用layout_margin属性的。(可以使用recyclerView代替)2:变通的办法是把分割线设置为透明,并且拉伸分割线的高度。达到item之间间距的效果。
android:divider="@null" android:dividerHeight="14dp"
3:ListView设置marginTop会导致一段空白区域,滚动的item在此区域里不可见,解决办法是使用padding,并通知ListView在padding的区域里面绘制Item
android:paddingBottom="16dp" android:paddingTop="16dp" android:clipToPadding="false"
TextView限制行数,超出以"..."结尾
如:限制三行,超出末尾的地方用...代替android:lines="3" android:ellipsize="end"
TextView行高
如:每行之间额外增加6sp单位的高度android:lineSpacingExtra="6sp"
TextView换行
代码中用 \n 就可以了如果数据内容要被下个步骤html转义
那么直接使用<br/>
Text解析html字符
比如 ’ 符号,我们从服务端获取的数据是'用安卓提供的方法就能把这些数据转义回html
.setText(Html.fromHtml("要解析的html脚本"));
TextView代码设置尺寸
1:尺寸写在dimen.xml文件里,只能获取px尺寸,比如float mCategoryTextSize = getResources().getDimensionPixelSize(R.dimen.circle_category_item_text_size); 文本对象.setTextSize(TypedValue.COMPLEX_UNIT_PX, mCategoryTextSize);
2:直接写sp、dp等尺寸
文本对象.setTextSize(TypedValue.COMPLEX_UNIT_SP, 18);
TextView跑马灯
textView原生就支持跑马灯效果,只要加入以下5个属性即可android:ellipsize="marquee" android:focusable="true" android:focusableInTouchMode="true" android:marqueeRepeatLimit="marquee_forever" android:singleLine="true"
textView一旦失去了焦点,就不会再滚动,此时调用textView或者父容器的RequestFocus(),可以让它继续跑起来
Canvas绘矩形图
在onDraw方法里,一些注意的地方//实心用Fill,空心用STROKE mPaint.setStyle(Paint.Style.FILL); //Y轴是从上往下递增的,这个注意哦 canvas.drawRect(左上x, 左上y, 右下x, 右下y, 画笔对象);
弹出日历窗体
//1:调用 showDialog(DIALOG_DATE_PICKER); //2:实现 @Override protected Dialog onCreateDialog(int id) { switch (id) { case DIALOG_DATE_PICKER: Calendar calendar = Calendar.getInstance(); DatePickerDialog pickerDialog = new DatePickerDialog(this, new DatePickerDialog.OnDateSetListener() { @Override public void onDateSet(DatePicker view, int year, int monthOfYear, int dayOfMonth) { mEndYear = year; mEndMonth = monthOfYear + 1; mEndDay = dayOfMonth; tvSetEndTime.setText(String.format("%d年%d月%d日", mEndYear, mEndMonth, mEndDay)); } }, calendar.get(Calendar.YEAR), calendar.get(Calendar.MONTH), calendar.get(Calendar.DAY_OF_MONTH)); //如果不能选择比当前日期更早的,需要-1秒,否则报错 pickerDialog.getDatePicker().setMinDate(new Date().getTime() - 1000L); return pickerDialog; } return null; }
相关文章推荐
- private static final long serialVersionUID的作用
- UITableView添加UITapGestureRecognizer与didSelectRowAtIndexPath冲突解决
- Activity中UI框架基本概念
- MQTT的学习研究(十六) MQTT的Mosquitto的window安装部署
- MQTT的学习研究(十四) MQTT moquette 的 Callback API 消息发布订阅的实现
- MQTT的学习研究(十二) MQTT moquette 的 Future API 消息发布订阅的实现
- MQTT的学习研究(十)【转】mosquitto——一个开源的mqtt代理
- MUI开发注意事项 Uncaught ReferenceError: plus is not defined
- 小胖说事23-----UICollectionView基础笔记
- 黑马程序员----OC学习笔记之NSNumber和NSValue
- NSInteger 与 NSUInteger 和 int 区别
- UITextView 200字符限制,中文算1个字,英文算0.5个字
- 前端优化:RequireJS Optimizer 的使用和配置方法(二)
- 前端优化:RequireJS Optimizer 的使用和配置方法(一)
- 动态计算UITableViewCell高度详解 -- 学习
- Visual Studio 中项目文件属性的Build action 设置
- BaiduMap---百度地图官方Demo之UI控制功能(介绍开关手势功能和显示隐藏UI控件)
- soapui 免费版 实现 datasource+ dataLoop
- Guice 学习(九) WEB AND SERVLET
- ArduinoYun教程之OpenWrt-Yun与CLI配置Arduino Yun