怎么在android shape line里实现这种点击效果?用shape吗?

android实现点击按钮,图片在里面滚动的效果??_百度知道
提问者采纳
首先,viewpager和gallery,不要犯这样的错误;其次,gallery虽然过期了,但是还可以继续用的,建议还是用它实现,因为API里提到的2种替换方案,用来实现这样的效果,感觉还是不如gallery来 的方便,干脆;这种效果很简单,横向布局,按钮+gallery+按钮就可以;gallery的用法,你可以自行百度,资料很多;
提问者评价
其他类似问题
3人觉得有用
为您推荐:
其他3条回答
建议你还是用viewpaper,这样效果比较好些。当然,用画廊控件,也能实现的。
用Gallery就可以了,找到Gallery控件后,给它设置适配器就可以了
不会这玩意
android的相关知识
等待您来回答
下载知道APP
随时随地咨询
出门在外也不愁3591人阅读

众所周知,在Android开发里,为了优化在各种分辨率设备上的显示效果,同一份图片素材往往要提供mdpi、hdpi、xhdpi三种(以前还有ldpi),尤其是按钮类的素材,考虑到normal、pressed、focused更是需要至少3×3=9张图片。NinePatch技术虽然可以解决一部分尺寸灵活性的问题,但大部分修改和适配还是要再次制作一批图片的。
根据交互设计的需要,可以考虑用Drawable的XML绘制按钮,好处有:
* 矢量绘制,易于缩放;
* 字节数更少(一般而言);
* 基于XML文本,属性值易于调整;
* Drawable组件间可嵌套,可重用;
* XML与项目其他源代码在一起,便于版本控制。
当然也有缺点:
* 没有可视化的编辑器,编辑不够直观;
* 受限于基本的图形和填充方式;
* 美工人员很难上手。
以本站开发的习作《泡面管家》()为例。
下图是泡面管家的计时器,中间的圆形(包含镂空阴影效果)默认是表示计时器状态的icon,在计时器运行期间会变换为停止计时的按钮:
这里icon的背景是用Drawable XML绘制的。在Android中,Drawable XML并不支持阴影,参考了网上诸多例子,一般都是以额外绘制的渐变或者边框来实现阴影。这里是用叠加shape的方式来绘制的。
上图中绿色方框中的标识的色块,从外到内可以划分成几个部分:
* Outer circle
* Inner shadow of outer circle
* Outer shadow of center circle
* Center circle
使用&layer-list/&,从最底层开始,画对应最外部分的、最大的圆形,然后逐层的、边扩大padding边叠加圆形,圆形的填充颜色要对应到相应的色块。res/drawable/timer_center_bg.xml代码如下:
&?xml version=&1.0& encoding=&utf-8&?&
&layer-list xmlns:android=&/apk/res/android& &
&!-- outer circle --&
&shape android:shape=&oval& &
&solid android:color=&#FFACB8C3& /&
&!-- inner shadow of outer circle --&
android:bottom=&2dp&
android:left=&2dp&
android:right=&2dp&
android:top=&2dp&&
&shape android:shape=&oval&&
&solid android:color=&#FFbdcad6& /&
android:bottom=&3dp&
android:left=&3dp&
android:right=&3dp&
android:top=&3dp&&
&shape android:shape=&oval&&
&solid android:color=&#FFc3cfd9& /&
android:bottom=&4dp&
android:left=&4dp&
android:right=&4dp&
android:top=&4dp&&
&shape android:shape=&oval&&
&solid android:color=&#FFcbd6df& /&
android:bottom=&5dp&
android:left=&5dp&
android:right=&5dp&
android:top=&5dp&&
&shape android:shape=&oval&&
&solid android:color=&#FFd4dee5& /&
&!-- gap --&
android:bottom=&6dp&
android:left=&6dp&
android:right=&6dp&
android:top=&6dp&&
&shape android:shape=&oval& &
&solid android:color=&#FFdae2e8& /&
&!-- outer shadow of center circle --&
android:bottom=&10dp&
android:left=&10dp&
android:right=&10dp&
android:top=&10dp&&
&shape android:shape=&oval&&
&solid android:color=&#FFced5dc& /&
android:bottom=&12dp&
android:left=&12dp&
android:right=&12dp&
android:top=&12dp&&
&shape android:shape=&oval&&
&solid android:color=&#FFbcc4c9& /&
android:bottom=&13dp&
android:left=&13dp&
android:right=&13dp&
android:top=&13dp&&
&shape android:shape=&oval&&
&solid android:color=&#FFb4bbc0& /&
android:bottom=&14dp&
android:left=&14dp&
android:right=&14dp&
android:top=&14dp&&
&shape android:shape=&oval&&
&solid android:color=&#FFacb3b8& /&
&!-- center circle --&
android:bottom=&15dp&
android:left=&15dp&
android:right=&15dp&
android:top=&15dp&&
&shape android:shape=&oval&&
&stroke android:width=&1dp& android:color=&#FFFCFCFC&/&
android:angle=&270&
android:endColor=&#FFCFD7DD&
android:startColor=&#FFF0F5F9& /&
&/layer-list&
从以上代码中可以看出,只是简单的圆形的叠加,就可以绘制出具有立体感的按钮。
要注意上边只是按钮的背景。文章开头也讲过,Drawable XML的特征之一就是可复用。继续看res/drawable/stop_timer_btn.xml的代码:
&?xml version=&1.0& encoding=&utf-8&?&
&selector xmlns:android=&/apk/res/android&&
&!-- normal --&
&item android:state_enabled=&true& android:state_focused=&false& android:state_pressed=&false&&
&layer-list&
&item android:drawable=&@drawable/timer_center_bg& /&
&item android:bottom=&15dp& android:left=&15dp& android:right=&15dp& android:top=&15dp&&
&shape android:shape=&oval&&
&stroke android:width=&1dp& android:color=&#FFFCFCFC& /&
&gradient android:angle=&270& android:endColor=&#FF91c0e8& android:startColor=&#FFa7d3fa& /&
&/layer-list&
&!-- pressed --&
&item android:state_enabled=&true& android:state_pressed=&true&&
&layer-list&
&item android:drawable=&@drawable/timer_center_bg& /&
&item android:bottom=&15dp& android:left=&15dp& android:right=&15dp& android:top=&15dp&&
&shape android:shape=&oval&&
&stroke android:width=&2dp& android:color=&#FFf8f640& /&
&gradient android:angle=&270& android:endColor=&#FF91c0e8& android:startColor=&#FFa7d3fa& /&
&/layer-list&
&!-- selected --&
&item android:state_enabled=&true& android:state_focused=&true& android:state_pressed=&false&&
&layer-list&
&item android:drawable=&@drawable/timer_center_bg& /&
&item android:bottom=&15dp& android:left=&15dp& android:right=&15dp& android:top=&15dp&&
&shape android:shape=&oval&&
&stroke android:width=&2dp& android:color=&#FFf8f640& /&
&gradient android:angle=&270& android:endColor=&#FF91c0e8& android:startColor=&#FFa7d3fa& /&
&/layer-list&
&!-- ...... --&
&/selector&
上述代码以看出,&selector/&中每个&item/&都是一个&layer-list/&,将@drawable/timer_center_bg作为背景在前景叠加圆形以区分不同状态。
最后要说明的是,决定一个按钮应该是否用Drawable XML渲染,应考虑以下几个因素:
* App是否要支持多分辨率;
* App是否有瘦身的需要;
* 图案是否足够简单;
* 图案需要自由缩放;
* 设计开发工作流程是否容许开发人员跨界;
* 开发人力相对于设计人力更充足。
否则,应该考虑以图片方式渲染。
原文发表于:
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
访问:9266次
排名:千里之外
(4)(2)(1)(1)(2)页面导航:
→ 正文内容 Shape使用方法
Android控件系列之Shape使用方法
Android控件系列之Shape使用方法,需要的朋友可以参考一下
 如果你对Android系统自带的UI控件感觉不够满意,可以尝试下自定义控件,我们就以Button为例,很早以前Android123就写到过Android Button按钮控件美化方法里面提到了xml的selector构造。当然除了使用drawable这样的图片外今天Android开发网谈下自定义图形shape的方法,对于Button控件Android上支持以下几种属性shape、gradient、stroke、corners等。 代码如下:  我们就以目前系统的Button的selector为例说下:    &  android:startColor="#ff8c00"  android:endColor="#FFFFFF"  android:angle="270" /&  &  android:width="2dp"  android:color="#dcdcdc" /&  &  android:radius="2dp" /&  &  android:left="10dp"  android:top="10dp"  android:right="10dp"  android:bottom="10dp" /&    对于上面,这条shape的定义,分别为渐变,在gradient中startColor属性为开始的颜色,endColor为渐变结束的颜色,下面的angle是角度。接下来是stroke可以理解为边缘,corners为拐角这里radius属性为半径,最后是相对位置属性padding。  对于一个Button完整的定义可以为 代码如下:      &xmlns:android="/apk/res/Android"&      &android:startColor="#ff8c00"  android:endColor="#FFFFFF"  android:angle="270" /&    &android:width="2dp"  android:color="#dcdcdc" /&    &android:radius="2dp" /&    &android:left="10dp"  android:top="10dp"  android:right="10dp"  android:bottom="10dp" /&
    &android:startColor="#ffc2b7"  android:endColor="#ffc2b7"  android:angle="270" /&    &android:width="2dp"  android:color="#dcdcdc" /&    &android:radius="2dp" /&    &android:left="10dp"  android:top="10dp"  android:right="10dp"  android:bottom="10dp" /&
    &android:startColor="#ff9d77"  android:endColor="#ff9d77"  android:angle="270" /&    &android:width="2dp"  android:color="#fad3cf" /&    &android:radius="2dp" /&    &android:left="10dp"  android:top="10dp"  android:right="10dp"  android:bottom="10dp" /&      提示,以上几个item的区别主要是体现在state_pressed按下或state_focused获得焦点时,当当来判断显示什么类型,而没有state_xxx属性的item可以看作是常规状态下。
您可能感兴趣的文章:
上一篇:下一篇:
最 近 更 新
热 点 排 行
12345678910你的位置: &&
Android 使用shape来优化界面效果
Android 使用shape来优化界面效果
前些天去参加了一个公开课,说到了我们很多程序对美工比较不在行,所以需要与UI工程师合作,但是有时候UI工程师忙其他的什么,我们既不会PS也不会AI。于是乎在android中我们可以通过shape来定制我们需要的图形效果等。 & &下午研究了下shape,众所周知shape是形状的意思。网络上的例子太多看的真让人眼花缭乱,自己总结了下,以如何使用shape来做圆角按钮的背景来说明shape的具体使用吧。 & 看下效果图 & 具体实现代码:&?xml version="1.0" encoding="utf-8"?&
&shape xmlns:android="/apk/res/android" &
&!-- 填充 --&
android:color="#B2B2B2"
&!-- 大小 --&
android:width="200dp"
android:height="50dp"
&!-- 渐变色 --&
android:startColor="#DBDCDD"
android:endColor="#B8B9BB"
android:centerColor="#ADADAF"
android:angle="270"
&!-- 描边 --&
android:width="2dp"
android:color="#3D4148"
&!-- 圆角 --&
android:radius="5dp"
android:left="10dp"
android:top="10dp"
android:right="10dp"
android:bottom="10dp"
描述:内部填充
android:color 填充颜色
描述:size: 大小
android:width
表示形状的宽度
android:height 表示形状的高度
3、gradient
描述: 渐变色
android:startColor
android:endColor
android:angle
渐变角度(PS:当angle=0时,渐变色是从左向右。 然后逆时针方向转,当angle=90时为从下往上。angle必须为45的整数倍)
android:type
渐变类型(取值:linear、radial、sweep)
线性渐变,这是默认设置
放射性渐变,以开始色为中心。
扫描线式的渐变。
android:centerColor
渐变中间颜色,即开始颜色与结束颜色之间的颜色
android:useLevel
如果要使用LevelListDrawable对象,就要设置为true。设置为true无渐变。false有渐变色
android:gradientRadius
渐变色半径.当 android:type="radial" 时才使用。单独使用 android:type="radial"会报错。
android:centerX
渐变中心X点坐标的相对位置
android:centerY
渐变中心Y点坐标的相对位置
描述: stroke:描边
相当于html中的盒子模型的border
android:width 描边的宽度
android:color 描边的颜色
android:dashWidth 表示描边的样式是虚线的宽度,
值为0时,表示为实线。值大于0则为虚线。
android:dashGap
表示描边为虚线时,虚线之间的间隔 即“ - - - - ”
5、corners
描述: corners: 圆角
android:radius
android:topLeftRadius
左上角半径
android:topRightRadius
右上角半径
注意一下两个属性比较不同:
android:bottomLeftRadius 右下角半径
android:bottomRightRadius 左下角半径
6、padding
描述:内部边距,即内容与边的距离
android:left
android:top
android:right
android:bottom 下内边距
--&源码本文出自 “Mr.Xu” 博客,请务必保留此出处
最新热门tag介绍如何利用利用ViewPager及android:clipChildren实现Gallery的画廊效果,即一屏显示多个Fragment
平安旗下理财「陆金所」推荐
Android 开源项目源码解析第二期发布
那些著名开源库的原理分析
推荐两个用了一年多 6%-36% 的理财产品
站内推荐文章
翻.墙.—几十块钱换来大世界
交流讨论区
(67,495)(54,968)(50,240)(45,911)(45,504)(43,816)(39,505)(39,208)(35,863)(31,786)
理财推荐—前阿里口碑CEO的「挖财」

我要回帖

更多关于 android shape 阴影 的文章

 

随机推荐