Android -- 资源使用和总结经验分享
颜色资源
- 颜色XML文件格式
<?xml version="1.0" encoding="utf-8"?>
<resources> //resources根元素
<color name="" >#000000</color>
//color子元素
</resouces>
- 引用格式
//java代码中:
R.color.color_name //(这是一个int型的数据,用于表示资源的地址)
<!--XML文件中:-->
@color/color_name
- 获得颜色值的方法
getResources().getColor(); //返回一个类似#0000FF的颜色值
字符串资源
- XML文件格式
<?xml version="1.0" encoding="utf-8"?>
<resources> //resources根元素
<string name="" >StringHere</string>
//string子元素
</resouces>
- 引用格式
//java代码中:
R.string.string_name
<!--XML文件中: -->
@string/string_name
- 获得字符串的方法
Resources.getString(int); //返回一个String类型的对象
//注意在控件中setText(int resid) 和setText(String string_name) 这两个方法都是允许的
尺寸资源
- XML文件
<dimen name=dimen_name> dimen_value</dimen>
<!--尺寸值的单位可以是px(像素) 或者 mm(毫米,实际屏幕尺寸)或dp-->
- 引用格式
// java代码:
R.dimen.dimen_name
<!--XML文件中: -->
@dimen/dimen_name
- 获取方法
Resources.getDimension(R.dimen.dimen_name);
//注意使用这个方法返回的是一个float类型的值,而setWidth()参数一般要求是int 类型的,所以要进行一次强制类型转换。
XML资源文件
- XML文件
android程序自带的xml 文件一般放在values/xml/xml_name.xml 处,这里需要使用
new
->file床建一个新的xml文件;
xml文件的版本
<?xml version="1.0" encoding="utf-8"?>
- 引用格式
//java
R.xml.xml_name
- 获取方式
Resources.getXml(int resid ); //返回的是一个XmlResourceParser对象
别人经验总结分享
- 实现圆角的效果——学会使用描述背景的drawable/中的 xml文件
需要在drawable文件夹中创建xml文件,文件的父控件类型为shape,在shape父控件中,有<solid/> <corners/> <stroke/> <padding/> 等属性,分别处理背景的填充颜色、边角的曲率、边框线的宽度和颜色、上下左右内边框(即背景超出使用改背景的空间的宽度)
例如,若想实现一个圆角的ImageButton,可以创建一个 fillet_shape.xml文件
<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android" >
<solid android:color="#ffffff"/>
<corners android:radius="10px"/>
<padding android:left="3dip" android:top="3dip" android:right="3dip" android:bottom="3dip"/> </shape>
然后在Activity类中用ImageButton的实例设置setBackgroundResource(); 或者在xml布局文件中在配置控件属性使用 android:background="@drawable/fillet_shape" 注意这里在配置好背景之后,在为ImageView设置显示的图片时,只能使用setImageResource()而不能使用setBackgroundResource();
- ListView如何调整每一个Item边框的宽度并且避免Item之间的分割线颜色太深?
方法就是上面介绍的自定义drawable/ 中xml文件,来配置边和背景属性,另外在配置ListView控件的属性时 设置android:divider="#aaaaaa" android:dividerHeight="0px" 。
- 怎样解决ListView中添加Button之后就不响应单击事件的问题?
原因是Button抢夺了焦点,最简单的解决办法是:在自定义的每一个ListItem的布局文件中在根标签的属性中添加上 android:descendantFocusability="blocksDescendants" 即拒绝ListItem中的子控件获得焦点。
- 怎样实现在点击某个控件以外的屏幕区域就使该控件消失的效果?本例中实现在点击ListView以外的区域就会使ListView消失的效果。
方法是覆写MainActivity的onTouchEvent()方法,根据点击的坐标(x,y)与目标控件通过getLocation获得的控件左上角坐标,再结合目标控件的宽和高,判断点击的点是否在控件内,进而决定对该控件执行怎样的操作。
@Override
public boolean onTouchEvent(MotionEvent event) {
// TODO Auto-generated method stub
if(event.getAction()==MotionEvent.ACTION_DOWN && isVisible){
int[] location=new int[2];
//调用getLocationInWindow方法获得某一控件在窗口中左上角的横纵坐标
loginList.getLocationInWindow(location);
//获得在屏幕上点击的点的坐标
int x=(int)event.getX();
int y=(int)event.getY();
if(x<location[0]|| x>location[0]+loginList.getWidth() ||
y<location[1]||y>location[1]+loginList.getHeight()){
isIndicatorUp=false;
isVisible=false; listIndicatorButton.setBackgroundResource(R.drawable.indicator_down);
loginList.setVisibility(View.GONE); //让ListView列表消失,并且让游标向下指! }
}
return super.onTouchEvent(event);
}
- layer-list的使用方法
layer-list的作用是叠放多个图层,这从名字上就可以看出,因为本节想做出一个一边没有边框,其它边界上没有边框的背景效果,使用<shape > 中的<stroke/>标签就没有办法满足了,解决的办法就是在drawable 文件夹中创建一个layer-list文件,然后创建两个图层<item> 第一个item放的是边框的颜色,第二个图层放的是内部的颜色,并且通过设置第二个item的根标签属性,设置第二个item比第一个item窄的程度,这样第一个item的颜色就会在边框处显示出来,从而做出边框的效果。
<?xml version="1.0" encoding="utf-8"?>
<layer-list xmlns:android="http://schemas.android.com/apk/res/android" >
<item >
<shape >
<solid android:color="#cccccc"/>
</shape> <!--上面是第一个图层-->
</item> <item android:left="1dip" android:top="1dip" android:right="1dip" android:bottom="0dip">
<!-- 上面一行是设置哪个边框的关键步骤,即第二个图层比第一个图层闪出来的边框! -->
<shape >
<solid android:color="#f0f0f0"/> </shape>
</item> </layer-list>
- 如何理解ExpandableListView的生命周期?
对于ExpandableListView,当刚刚创建该对象并且设置好适配器之后,EListView的每一个group都是没有展开的,当点击某一个group时,系统会把所有的group 和展开的childItem 重新绘制一遍,其中每一个的group 的最后一个childItem放的isLastChild 为true.
当有group展开或者关闭时会调用onGroupExpanded()和onGroupCollapsed() 方法。
- 如何动态获得ExpandableListView的高度?
创建一个一个int 变量 height, 在ExpandableListView刚刚创建时,设置其高度为所有group的宽度之和,然后当打开或者关闭group时,在onGroupExpanded()和onGroupCollapsed() 方法中对height 的值进行增加或者减少,并且通过LayoutParams对象即使更新空间的高度,从而实现动态更新ExpandableListView的高度。
具体代码如下:
1、获得ListItem的高度,这里比如获得group的高度,需要调用适配器的getGroupView的方法
View listItem= listView.getExpandableAdapter().getGroupView(参数); listItem.setLayoutParams(new LayoutParams(LayoutParams.WRAP_CONTENT,LayoutParams.WRAP_CONTENT));
//这一个必须有,因为listItem 在通过inflate()方法获得时并未指定父控件,因此导致onMeasure()方法中无法对宽度和高度进行解析,所以这里将布局类型强制设定成wrapContent 类型,然后再调用measure()方法 listItem.measure(0,0); //0,0是两个参数,用于比较,measure()方法,用于计算控件的尺寸,关于该方法的具体细节请参考:http://blog.csdn.net/lilybaobei/article/details/8021868 int HEIGHT=listItem.getMeasuredHeight();
2、设置ExpandableListView的高度,通过LayoutParams对象
ViewGroup.LayoutParams params=listView.getLayoutParams();
//获得尺寸参数
params.height=HEIGHT*3;
listView.setLayoutParams(params);
以上两点问题的提出主要是因把ListView、ExpandableListView放在一个 ScrollView中时往往会出现显示不全的问题,因此解决的办法就是动态更新ListView/ExListView的高度,以使列表能够显示完整。
- ListView的边界比较模糊,颜色变淡
解决这个问题的方法是在ListView的属性设置中添加上 android:fadingEdge="none",这样边界就不会模糊了。
我是天王盖地虎的分割线
参考:http://www.cnblogs.com/carlos-vic
Android -- 资源使用和总结经验分享的更多相关文章
- Android内存优化解决 资料和总结的经验分享
在前公司做一个图片处理的应用时, 项目交付的时候,客户的手机在运行应用的时候,一直在崩溃,而这个异常就是OutOfMemory的错误,简称为OOM, 搞得我们也是极其的崩溃,最后 ,我们是通过网上搜集 ...
- android平台短视频技术之 视频编辑的经验分享.
android平台短视频技术之 视频编辑的经验分享. 提示一: 各位看官,这里分享的是视频编辑,即剪切/拼接/分离/合并/涂鸦/标记/叠加/滤镜等对视频的编辑操作.不是流媒体网络播放等功能,请注意. ...
- 关于启用 HTTPS 的一些经验分享(一)
转载: 关于启用 HTTPS 的一些经验分享(一) 随着国内网络环境的持续恶化,各种篡改和劫持层出不穷,越来越多的网站选择了全站 HTTPS.就在今天,免费提供证书服务的 Let's Encrypt ...
- 微信登陆,微信SDK授权登陆经验分享
From:http://www.eoeandroid.com/thread-547012-1-1.html 最近因为项目需要做了微信登陆,好像也是微信最近才放出来的接口.还需要申请才能有权限实现授权. ...
- Expression Blend4经验分享:文字公告无缝循环滚动效果
这次分享一个类似新闻公告板的无缝循环滚动效果,相信很多项目都会应用到这个效果.之前我也百度了一下,网上的一些Silverlight的文字或图片滚动效果,都是一次性滚动的,如果要做到无缝循环滚动,多数要 ...
- Expression Blend4经验分享:制作一个简单的图片按钮样式
这次分享如何做一个简单的图片按钮经验 在我的个人Silverlight网页上,有个Iphone手机的效果,其中用到大量的图片按钮 http://raimon.6.gwidc.com/Iphone/de ...
- Expression Blend4经验分享:制作一个简单的文字按钮样式
首先在Grid里放一个TextBlock,对象时间线窗口的结构树如下 右键点击grid,选择构成控件 会弹出构成控件的对话框,选择你要构成的控件类型,控件名称,控件样式存储位置 这里我们选择butto ...
- Android开发60条技术经验总结
Android开发60条技术经验总结,以下是全文: 1. 全部Activity可继承自BaseActivity,便于统一风格与处理公共事件,构建对话框统一构建器的建立,万一需要整体变动,一处修改到处有 ...
- Android 开发60条技术经验总结(转)
Android 开发60条技术经验总结: 1. 全部Activity可继承自BaseActivity,便于统一风格与处理公共事件,构建对话框统一构建器的建立,万一需要整体变动,一处修改到处有效. 2. ...
随机推荐
- MITM to crack Https connections
Everybody knows that https is http over SSL, and https is a secure way for protecting confidential d ...
- 自动发送EMAIL
*&---------------------------------------------------------------------* *& Report ZPP_SEND ...
- MAC OS下免费下载YouTube
YouTube上有很多不错的视频,你感兴趣的视频除了可以加入自己播放列表之外,还可以将其下载到本地收藏起来.推荐这款软件“Xilisoft Download YouTube Video for Mac ...
- Mysql远程登录授权
1.改表法. 请使用mysql管理工具,如:SQLyog Enterprise 可能是你的帐号不允许从远程登陆,只能在localhost.这个时候只要在localhost的那台电脑使用mysql管理工 ...
- Log4net使用笔记
Log4net使用笔记 编写人:CC阿爸 2013-10-29 近来在处理项目时候,想将系统的操作日志以文本的形式记录下来,方便对系统操作记录进行追踪. 经过在网上搜索部分解决方案,大致可以归纳如 ...
- vue.js插件使用(02) vue-router
概述 vue-router是Vue.js官方的路由插件,它和vue.js是深度集成的,适合用于构建单页面应用.vue的单页面应用是基于路由和组件的,路由用于设定访问路径,并将路径和组件映射起来.传统的 ...
- C# 随机颜色的方法
public string GetRandomColor() { Random RandomNum_First = new Random((int)DateTime.Now.Ticks); // 对于 ...
- 学习c的第6天2
#include <stdio.h> #include <math.h> int main() { float num; printf("请输入该生当月的消费额:\n ...
- 当数据0跟if判断冲突的时候
我是很无奈的,以后都要2,3,4,5这样去标志状态: 分配状态:<select name="is_send" > <option selected="s ...
- angularJS通过post方法下载excel文件
最近工作中遇到,要使用angularJS的post方法来下载excel的情况.网上找到一个帖子:http://stackoverflow.com/questions/22447952/angularj ...