【android】开发笔记系列UI篇
弹出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;
}
在style中使用自定义属性
1:添加xmlns:android
2:在自定义属性前面添加包名,在AndroidManifest.xml的package属性找到
tips:不适合公共模块,会报编译失败,比如app模块就可以
<resources xmlns:android="http://schemas.android.com/apk/res/android">
<style name="orange_tabLayout">
<item name="android:layout_width">match_parent</item>
<item name="android:layout_height">@dimen/md_tab_bar_height</item>
<item name="android:background">@color/orange_dark</item>
<item name="包名:text_normal_color">@color/red_darkest</item>
</style>
</resources>
【android】开发笔记系列UI篇的更多相关文章
- 【转】Android开发笔记(序)写在前面的目录
原文:http://blog.csdn.net/aqi00/article/details/50012511 知识点分类 一方面写写自己走过的弯路掉进去的坑,避免以后再犯:另一方面希望通过分享自己的经 ...
- 《ArcGIS Runtime SDK for Android开发笔记》——离在线一体化技术:离线矢量数据同步
1.前言 上一篇文章中我们实现了离线要素的编辑操作,这一篇中主要介绍离在线一体化技术中最后一个环节离线数据的同步功能,通过对数据的上传,服务器端的版本化管理,实现数据生产管理的整个流程. 转载请注明出 ...
- [置顶] Android开发笔记(成长轨迹)
分类: 开发学习笔记2013-06-21 09:44 26043人阅读 评论(5) 收藏 Android开发笔记 1.控制台输出:called unimplemented OpenGL ES API ...
- 50个Android开发人员必备UI效果源码[转载]
50个Android开发人员必备UI效果源码[转载] http://blog.csdn.net/qq1059458376/article/details/8145497 Android 仿微信之主页面 ...
- Android开发笔记——以Volley图片加载、缓存、请求及展示为例理解Volley架构设计
Volley是由Google开源的.用于Android平台上的网络通信库.Volley通过优化Android的网络请求流程,形成了以Request-RequestQueue-Response为主线的网 ...
- Android开发笔记(一百三十四)协调布局CoordinatorLayout
协调布局CoordinatorLayout Android自5.0之后对UI做了较大的提升.一个重大的改进是推出了MaterialDesign库,而该库的基础即为协调布局CoordinatorLayo ...
- 【转】Android开发笔记——圆角和边框们
原文地址:http://blog.xianqu.org/2012/04/android-borders-and-radius-corners/ Android开发笔记——圆角和边框们 在做Androi ...
- 《ArcGIS Runtime SDK for Android开发笔记》
开发笔记之基础教程 ArcGIS Runtime SDK for Android 各版本下载地址 <ArcGIS Runtime SDK for Android开发笔记>——(1).And ...
- 《ArcGIS Runtime SDK for Android开发笔记》——离在线一体化技术:概述
1.前言 数据生产和数据展示是常见的两大专业级移动GIS应用场景,这里我们针对数据生产环节的ArcGIS的离在线一体化技术给大家做一个基本的介绍和梳理. 使用ArcGIS离在线一体化技术首先需要以下基 ...
随机推荐
- MathType中如何快速输入空心字母
MathType输入数学公式时非常方便有效的,在文档中涉及到数学公式或者符号时都是使用MathType来进行的,因为它比Office自带的公式编辑器功能更为完善,使用起来更快捷.在数学公式中,在不同的 ...
- mac os x 记录 转载
转载:远景网友(手机锋友t5sd3sf):http://bbs.feng.com/read-htm-tid-10434256.html 一个命令制作 OS X 原版安装U盘 1.要保证下载的原版安装包 ...
- WPF XAML 特殊字符(小于号、大于号、引号、&符号)
XAML 受限于 XML 规则.例如, XML 特别关注一些特殊字符,如 & < > 如果试图使用这些字符设置一个元素内容,将会遇到许多麻烦,因为 XAML 解析器认为您正在做其 ...
- 第三篇:C++ 中的几种初始化
前言 阅读C++教材时,想必你听过复制初始化,直接初始化,值初始化这三个概念吧.笔者本人常将其混淆,遂在此记录下它们的具体含义以便日后查阅. 复制初始化( copy-initialization ) ...
- Java实现简单的文件复制
public class FileCopy { public static void main(String[] args) { String path = "d:\\1.txt" ...
- 『AngularJS』一点小小的理解
AngularJS 是一个前端的以Javascript为主的MVC框架.与AngularJS相类似的还有EmberJS. 随着时代在进步,各种各样的开发理念与开发框架不断的提出与发展,而就目前来说,除 ...
- ios笔试题(选择题)
1-10 C语言 & 计算机基础 1.请看下面一段代码 static int a = 1; int main(){ int b = 2; char *c = NULL; c = (char * ...
- ios 将p12文件转换为pem
cd 到 文件所在目录 执行以下命令,生成ck.pem文件. openssl pkcs12 -in ck.p12 -out ck.pem -nodes
- js 空正则匹配任意一个位置
看一个正则 这里明显,起到匹配作用的是 | 后的,可 | 后什么都没有,原理不知道,也没有搜到文献,只有在 Reg101 上是这样解释的, 所以得出结论: js 中,空正则匹配任意一个位置. 不过,这 ...
- .net winform 调用类中的webbrowser 报错:当前线程不在单线程单元中,因此无法实例化 ActiveX
遇到这个恶心的问题纠缠得不要不要的,大家遇到了的话希望不要走弯路,经过这个折腾让我有点怀疑人生了.哈哈哈 解决代码如下: //插入一个新线程用于处理验证码 Thread thd = new Threa ...