android轮廓
A. android图像绘制——画布保存为图片
解释:
1、首先创建一个Bitmap图片,并指定大小;
2、在该图片上创建一个新的画布Canvas,然后在画布上绘制,并保存即可;
3、需要保存的目录File,注意如果写的目录如“/sdcard/akai/”如果不存在的话,要先创建(file.mkdirs()),否则FileOutputStream会报错No found;
4、需要添加权限:<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
什么是画布呢 其实通过字面意思的理解就是用来绘画的地方,那么android里的画布是神马样子的呢?
在自定义画布中常用到下面3个类
Canvas
这些绘图方法中的每一个都需要指定一个Paint对象来渲染它
Paint
Paint也称为"刷子",Paint可以指定如何将基本图形绘制到位图上。
Paint类相当于一个笔刷和调色板。它可以选择如何使用上面描述的draw方法来渲染绘 制在画布上的基本图形。通过修改Paint对象,可以在绘图的时候控制颜色、样式、字体和特殊效果。最简单地,setColor可以让你选择一个Paint的颜色,而Paint对象的样式(使用setStyle控制)则可以决定是绘制绘图对象的轮廓(STROKE),还是只填充每一部 分(FILL),或者是两者都做(STROKE_AND_FILL)除了这些简单的控制之外,Paint类还支持透明度,另外,它也可以通过使用各种各样的阴影、过滤器和效果进行修改,从而提供由更丰富的、复杂的画笔和颜料组成的调色板。
从继承View类(或其子类)开始,并定义onDraw()回调方法。系统会调用该方法来完 成View对象自己的绘制请求。这也是通过Canvas对象来执行所有的图形绘制调用的地方,这个Canvas对象是由onDraw()回调方法传入的。
Android框架只在必要的时候才会调用onDraw()方法,每次请求应用程序准备完成图形 绘制任务时,必须通过调用invalidate()方法让该View对象失效。这表明可以在该View 对象上进行图形绘制处理了,然后Android系统会调用该View对象的onDraw()方(尽 管不保证该回调方法会立即被调用)。
在定制的View组件的onDraw()方法内部,使用给定的Canvas对象来完成所有的图形绘制处理(如Canvas.draw…()方法或把该Canvas对象作为参数传递给其他类的draw() 方法)。一旦onDraw()方法被执行完成,Android框架就会使用这个Canvas对象来绘制一个有系统处理的Bitmap对象。
下面是Paint一些常用方法:
Bitmap
Bitmap绘图的表面也称位图(这里详细说哈位图的功能)。
从资源中获取位图:
通过Resource的函数:InputStream openRawResource(int id)获取得到资源文件的数据流后,可以通过2种方式获得bitmap
使用BitmapDrawable :
使用BitmapDrawable(InputStream is)构造一个BitmapDrawable;
使用BitmapDrawable类的getBitmap()获取得到位图;
使用BitmapFactory使用BitmapFactory类decodeStream(InputStream is)解码位 图资源,获取位图BitmapFactory的所有函数都是static,这个辅助类可以通过资 源ID、路径、文件、数据流等方式来获取位图。
获取位图的信息
一般获取位图信息包括:位图大小、透明度、颜色格式等等,这些信息呢可以通过 三-一方法获取得到Bitmap就迎刃而解了,Android SDK中对Bitmap有详细说明,大家可以去详细了解哈。
显示位图
显示位图需要使用核心类Canvas,可以直接通过Canvas类的drawBirmap()显示位图,或者借助于BitmapDrawable来将Bitmap绘制到Canvas,下面的实例中会详细列举到
位图的缩放
位图的缩放,在Android SDK中提供了2种方法:
1:将一个位图按照需求重画一遍,画后的位图就是我们需要的了,与位图的显示几乎 一样:
drawBitmap(Bitmap bitmap, Rect src, Rectdst, Paint paint)
2:在原有位图的基础上,缩放原位图,创建一个新的位图:
createBitmap(Bitmap source, int x, int y,int width, int height, Matrix m, boolean filter)
位图旋转
位图的旋转,离不开Matrix。Android SDK提供了Matrix类,可以通过各种接口来设置 矩阵
android 处理图片工具
截取视频帧并转化为Bitmap
B. 如何自定义Android Dialog的样式
如何自定义Android Dialog的样式? Android 中自定义Dialog的样式,主要是通过自定义的xml,然后载入到dialog的背景中,如下步骤:
1、自定义Dialog
final Dialog dialog = new Dialog(this, R.style.Theme_dialog);
2、窗口布局
View contentView = LayoutInflater.from(this).inflate(R.layout.select_list_dialog,null);
3、把设定好的窗口布局放到dialog中
dialog.setContentView(contentView);
4、设定点选视窗空白处取消会话
dialog.setCanceledOnTouchOutside(true);
5、具体的操作
ListView msgView = (ListView)contentView.findViewById(R.id.listview_flow_list);
6、展示视窗
dialog.show();例:final Dialog dialog = new Dialog(this,R.style.Theme_dialog);View contentView =LayoutInflater.from(this).inflate(R.layout.select_list_dialog, null);dialog.setContentView(contentView);dialog.setCanceledOnTouchOutside(true);ListView msgView = (ListView)contentView.findViewById(R.id.listview_flow_list);TextView titleText = (TextView)contentView.findViewById(R.id.title);titleText.setText("请选择银行卡");SelectBankCardDialogAdapter adapter =new SelectBankCardDialogAdapter(this, mBankcardList);msgView.setAdapter(adapter);msgView.setOnItemClickListener(newOnItemClickListener() {@Overridepublic void onItemClick(AdapterViewparent, View view, int position, long id) {Toast.makeText(RechargeFlowToMobileActivity.this, position+"",0).show();mSelectCard =mBankcardList.get(position);String area = mSelectCard.getBank_card();mCardNumberText.setText(area);dialog.di *** iss();}});Button closeBtn = (Button)contentView.findViewById(R.id.close);closeBtn.setClickable(true);closeBtn.setOnClickListener(newView.OnClickListener() {@Overridepublic void onClick(View v) {dialog.di *** iss();}});dialog.show();
以上就是在Android开发自定义dialog样式的方法和步骤,android很多的控制元件都提供了接口或者方法进行样式的定义和修改。
如何自定义android Button样式
返回部落格列表
转 android自定义button样式
sumpower
释出时间: 2014/02/25 19:56
阅读: 4162
收藏: 0
点赞: 0
评论: 0
摘要
android自定义button样式
在Android开发应用中,预设的Button是由系统渲染和管理大小的。而我们看到的成功的移动应用,都是有着酷炫的外观和使用体验的。因此,我们在开发产品的时候,需要对预设按钮进行美化。在本篇里,笔者结合在应用开发中的经验,探讨一下自定义背景的按钮、自定义形状按钮的实现方法。
首先看实现效果截图:
自定义背景的按钮目前有2种方式实现,向量和点阵图。
1. 向量图形绘制的方式
向量图形绘制的方式实现简单,适合对于按钮形状和图案要求不高的场合。步骤如下:
(a) 使用xml定义一个圆角矩形,外围轮廓线实线、内填充渐变色,xml程式码如下。
view plain
bg_alibuybutton_default.xml
<?xml version="1.0" encoding="utf-8"?>
<layer-list xmlns:android="地址">
<item>
<shape android:shape="rectangle">
<solid android:color="#FFEC7600" />
<corners
android:LeftRadius="5dip"
android:RightRadius="5dip"
android:bottomLeftRadius="5dip"
android:bottomRightRadius="5dip" />
</shape>
</item>
<item android:="1px" android:bottom="1px" android:left="1px" android:right="1px">
<shape>
<gradient
android:startColor="#FFEC7600" android:endColor="#FFFED69E"
android:type="linear" android:angle="90"
android:centerX="0.5" android:centerY="0.5" />
<corners
android:LeftRadius="5dip"
android:RightRadius="5dip"
android:bottomLeftRadius="5dip"
android:bottomRightRadius="5dip" />
</shape>
</item>
</layer-list>
同样定义bg_alibuybutton_pressed.xml和bg_alibuybutton_selected.xml,内容相同,就是渐变颜色不同,用于按钮按下后的背景变化效果。
(b) 定义按钮按下后的效果变化描述档案drawable/bg_alibuybutton.xml,程式码如下。
view plain
<?xml version="1.0" encoding="UTF-8"?>
<selector xmlns:android="地址">
<item android:state_pressed="true"
android:drawable="@drawable/bg_alibuybutton_pressed" />
<item android:state_focused="true"
android:drawable="@drawable/bg_alibuybutton_selected" />
<item android:drawable="@drawable/bg_alibuybutton_default" />
</selector>
(c) 在你需要的接口定义档案中,如layout/main.xml中定义一个Button控制元件。
view plain
<Button
android:layout_width="120dip"
android:layout_height="40dip"
android:text="向量背景按钮" android:background="@drawable/bg_alibuybutton" />
这样,自定义背景的按钮就可以使用了,在实现onClick方法后就可以响应操作。
android自带的样式比较难看,如何能够自定义按钮的样式,使其显示的跟美工设计的效果一样,现与大家分享下
在layout中新增2个按钮,从下图中可以看出在按钮中呼叫了style和android:background属性,这两个属性一个是自定义样式,一个是给按钮新增背景图片
展开res目录,可以看到在values目录下有styles.xml档案,该档案用于自定义样式,双击开启
标注的是我自定义的样式,name为BtnStyle,当按钮呼叫自定义样式的时候访问这个name
在button中呼叫自定义样式的方法,比较简单
如何往按钮中新增自定义图片,使按钮看起来更漂亮些,因不同手机分辨率不同,那必然牵扯到图片的拉伸,在android系统下有个很好的技术“九宫格“,可以对图片进行处理,只对区域性进行拉伸,给工具目录储存在android\sdk\tools\draw9patch.bat,经过该工具处理的图片以.9.png结尾,放到drawable资料夹中
在Button中通过android:background属性载入图片的方法,至此我们自定义的按钮样式也就完成了,当然这只是个引子,在具体的专案工程中实现的效果要比这个demo复杂很多,有好的设计思路欢迎交流。
C. Android UI 的设计规则
软件界面设计相关的各项介绍
界面设计是为了满足软件专业化标准化的需求而产生的对软件的使用界面进行美化优化规范化的设计分支。具体包括软件启动封面设计,软
件框架设计,按钮设计,面板设计,菜单设计,标签设计,图标设计,滚动条及状态栏设计,安装过程设计,包装及商品化。
在设计的过程中有较多注意的关键问题,以下列出几点:
(1)软件启动封面设计
应使软件启动封面最终为高清晰度的图像,如软件启动封面需在不同的平台、操作系统上使用将考虑转换不同的格式,并且对选用的色彩不
宜超过256 色,最好为216色安全色。软件启动封面大小多为主流显示器分辨率的1/6大。如果是系列软件将考虑整体设计的统一和延续性。在上面应该醒目的标注制作或支持的公司标志、产品商标,软件名称,版本号,网址,版权声明,序列号等信息,以树立软件形象,方便使用者或购买者在软件启动的时候得到提示。插图宜使用具有独立版权的,象征性强的,识别性高的,视觉传达效果好的图形,若使用摄影也应该进行数位处理,以形成该软件的个性化特征。
(2)软件框架设计
软件的框架设计就复杂得多,因为涉及软件的使用功能,应该对该软件产品的程序和使用比较了解,这就需要设计师有一定的软件跟进经验,能够快速的学习软件产品,并且在和软件产品的程序开发员及程序使用对象进行共同沟通,以设计出友好的,独特的,符合程序开发原则的软件框架。软件框架设计应该简洁明快,尽量少用无谓的装饰,应该考虑节省屏幕空间,各种分辨率的大小,缩放时的状态和原则,并且为将来设计的按钮,菜单,标签,滚动条及状态栏预留位置。设计中将整体色彩组合进行合理搭配,将软件商标放在显着位置,主菜单应放在左边或上边,滚动条放在右边,状态栏放在下边,以符合视觉流程和用户使用心理。
(3)软件按钮设计
软件按钮设计应该具有交互性,即应该有3到6种状态效果:点击时状态;鼠标放在上面但未点击的状态;点击前鼠标未放在上面时的状态;点击后鼠标未放在上面时的状态;不能点击时状态;独立自动变化的状态。按钮应具备简洁的图示效果,应能够让使用者产生功能关联反应,群组内按钮应该风格统一,功能差异大的按钮应该有所区别。
(4)软件面板设计
软件面板设计应该具有缩放功能,面板应该对功能区间划分清晰,应该和对话框,弹出框等风格匹配,尽量节省空间,切换方便。
(5)菜单设计
菜单设计一般有选中状态和未选中状态,左边应为名称,右边应为快捷键,如果有下级菜单应该有下级箭头符号,不同功能区间应该用线条分割。
(6)标签设计
标签设计应该注意转角部分的变化,状态可参考按钮。
(7)图标设计
图标设计色彩不宜超过64色,大小为16x16、32x32两种,图标设计是方寸艺术,应该加以着重考虑视觉冲击力,它需要在很小的范围表现出软件的内涵,所以很多图标设计师在设计图标时使用简单的颜色,利用眼睛对色彩和网点的空间混合效果,做出了许多精彩图标。
(8)滚动条及状态栏设计
滚动条主要是为了对区域性空间的固定大小中内容量的变换进行设计,应该有上下箭头,滚动标等,有些还有翻页标。状态栏是为了对软件当前状态的显示和提示。
(9)安装过程设计
安装过程设计主要是将软件安装的过程进行美化,包括对软件功能进行图示化。
(10)包装及商品化
最后软件产品的包装应该考虑保护好软件产品,功能的宣传融合于美观中,可以印刷部分产品介绍,产品界面设计。
图标设计规范
数位设计引入了一种新的图标设计样式。以下是设计和创建样式图标的具体规范。
图标样式应该有趣、色彩丰富且充满活力,因为现在的系统支持图标是32位图标,并且边缘非常平滑。在矢量程序中绘制完每个图标后,再用Adobe Photoshop进行处理可使图像更加完美。本规范是专为设计者编写的。在创建图像时,建议您与高水平的图形设计者一起工作,尤其是具有丰富的矢量和 3D软件经验的图形设计者。
图标设计概述的目的是让您熟悉WindowsXP的新样式,为创建图标做好准备。
图标样式特性
(1) 色彩丰富,是对WindowsXP外观的补充。
(2) 不同的角度和透视特性为图像增添了动态活力。
(3) 元素的边角十分柔和,并略微有些圆滑。
(4) 光源位于图标的左上角,同时有环绕光照亮图标的其它部分。
(5) 渐变效果使图标具有立体感,进而使图标的外观更加丰满。
(6) 投影使图标更具对比度和立体感。
(7) 添加轮廓可使图像更清晰。
(8) 日常对象(如计算机和设备)具有更现代化的个人外观。
图标尺寸
Windows XP图标有四种尺寸,建议使用以下四种尺寸:
(1) 48x48像素
(2) 32x32像素
(3) 24x24像素
(4) 16x16像素
图标色彩深度支持
WindowsXP支持32位图标。32位图标为24位图像加上8位alpha通道。使图标边缘非常平滑,且与背景相融合。
每个WindowsXP图标应包含以下三种色彩深度,以支持不同的显示器显示设置:
24位图像加上8位alpha通道(32位)
8位图像(256色),加上1位透明色
4位图像(16色),加上1位透明色
调色板
图标中使用的主要颜色。
对象的角度和分组
WindowsXP样式图标使用的透视网格:并非所有对象使用16?6的复杂图像都能获得较好效果。某些对象通常以直观图像显示:文档图标、符号图标(如警告或信息图标)、单一对象图标(如放大镜)
除非创建重叠辅助对象可以更清楚地表达图标的含义,否则就可读性和完整性而言,还是应使用直观图像。还应考虑如何按组查看图标,以便确定如何将对象分组。
投影
使用投影后,WindowsXP图标将更清晰且更具立体感。可在Photoshop中实现这种效果,本指南的后面部分将对此进行描述。若要为图像添加投影,请在 Photoshop中双击图像的图层,并选择Drop Shadow。然后将Angle更改为135,Distance更改为 2,Size更改为2。此时投影为75%不透明黑色。
轮廓
绘制XP样式图标时,为图像添加轮廓可使之更清晰,并可保证图像在不同背景色上都具有较好效果。
概念
设计图标时,请考虑以下因素:
使用已有概念以确保真实表达了用户的想法。考虑图标在用户界面环境中以何种形式出现,以及如何作为图标集的一部分使用。考虑图形的
文化背景。避免在图标中使用字母、单词、手或脸。必须用图标表示人或用户时,请尽可能使其大众化。如果图标中的图像由多个对象组成,应考虑如何使图像尺寸更小。建议在图标中使用的对象不超过三个。对于 16?6的尺寸大小,还可考虑删除某些对象或简化图像使之更容易辨认。
透明工具
将Gif Movie Gear(GMG)打开一个对话框,其中显示您的图标。使用吸管工具单击图标的背景色。此颜色将更改为暗黄绿色(或在 GMG中选作
透明背景色的颜色)。重复所有4位和8位帧。若要保存图标,请选择 File->Save Icon As...。
创建工具栏
Windows工具栏图标除不使用投影之外,使用的样式与其它图标相同。由于工具栏图标非常小,建议您使用简单的图像。如果以直观方式显示
图像即可清晰地表达图标的含义,则不必使用其它复杂方式。
创建AVI
WindowsXP使用8位AVI。创建.avi文件的过程与创建图标的过程相同-在Photoshop中准备图像,然后将其拖动到GMG 中。请按以下指导创建8位图标。若要使用GMG保存AVI,请转至File->Export As->AVI file。创建.avi文件时,请考虑以下因素:使用品红(R255 G0 B255)作为背景透明色。在Photoshop中,重要的一点是不要出现杂散像素。请将填充能力设置为0,并确认未选中取消锯齿。
软件人机界面
UI即User Interface(用户界面)的简称。UI设计则是指对软件的人机交互、操作逻辑、界面美观的整体设计。好的UI设计不仅是让软件变得
有个性有品味,还要让软件的操作变得舒适、简单、自由,充分体现软件的定位和特点。
美丽的事物常常会让人无法抗拒。这就是为什么产品出色的外观设计对于电脑、汽车、日用品、家具、食品、服装等等几乎所有商品的销售与推广,都有着举足轻重的作用的原因。
同样的道理,对于软件公司来说,软件产品就是他们的商品,而软件界面就是他们产品的外观,界面的美观与否,直接关系到了软件产品的营销成败。
我们可以清楚地看到,微软公司对软件界面设计的重视。请回想一下您在第一次见到win2000时的情景,与nt4.0相比是否惊叹他界面的美观性与易用性?而您如果使用过xp系统,则会被其令人神奇的感官概念而震惊折服!金山公司的金山词霸就是国内软件成功的例子了,从金山词霸3.0到金山词霸2001 的变化堪称经典。着名的网页动画制作软件flash从3.0到4.0,仅仅修改了图标和窗体,立即大为增色…
现今世界上成功的软件公司都非常重视软件界面的美化设计工作,因为他们深刻地知道,在激烈的市场竞争中,仅仅有强大的功能是远远不够的,不足以战胜强劲的对手。我们可以相象一下,您在挑选手机的时候,如果有两款手机,性能相同,而第一款比第二款要美观很多,那么您将选择哪一款呢?当然是美观的那一款了。试想,您的客户,也会拿您和您竞争对手的软件做这样的比较的。
现在的软件企业都知道,广告和市场推销活动对市场营销的作用是多么的重要,并不遗余力地打广告、做活动、做推广。但我们知道,这些活动的最终目的,是为了让用户购买并使用软件产品,而用户最终使用的也是您的产品,那么为什么不在软件界面的美观性上多下些工夫呢?在诸如家用电器、汽车、电脑等成熟的市场中,用非常精美的广告去推广一种功能强大却丑陋无比的产品,是一种笑话。然而,这样的笑话在软件行业里却屡见不鲜。这也是像中国足球一样,中国软件业与国外相比较存在的一个很大的差距。
实践证明,各商家只要在产品美观设计方面很小投入,将会有很大产出。其投入产出比,要比在功能领先性开发上的投入大得多。
在用户把软件买回去后,他们和您企业的联系,或者说您企业形象在客户眼中的表现,很大一部分是通过您软件的界面来传达的,那么美观友好的用户界面对于宣传您的企业文化,对于给客户灌输您的企业理念,对于您企业的宣传运做都将是非常有益的。尤其如果您的公司做的是项目承包形式的业务,那么无论是在竞标的时候,还是在项目交付使用以后,美观的界面都会给您的客户以信心和良好的印象。
要成为一款有竞争力的软件,不光要有强大的功能,也需要有一个友好的界面设计。纵观当今的it行业,其软件界面设计的发展趋势大体上有如下几种技术:
1. 命令语言用户界面的发展。
根据其语言的特点,及人机交互的形式的分为
a. 形式语言
b. 自然语言。
c. 类自然语言。
2. 图形用户界面的广泛应用
图形用户界面和人机交互过程极大地依赖视觉和手动控制的参与,因此具有强烈的直接操作特点
3. 直接操纵用户界面技术的成熟。
用户最终关心的是他欲控制和操作的对象,他只关心任务语义,而不用过多为计算机语义和句法而分心。对于大量物理的、几何空间的以及形象的任务,直接操纵已表现出巨大的优越性。
4. 多媒体用户界面及多通道用户界面的发展大大丰富了计算机信息的表现形式。
5. 虚拟现实技术的应用
虚拟现实系统向用户提供身临其境(immerse)和多感觉通道(multi-sensory)体验,作为一种新型人机交互形式,虚拟现实技术比以前任何人机交互形式都有希望彻底实现和谐的、以“人为中心”的人机界面。