第三阶段上课5、androidui进阶编程一drawable和2d绘制_第1页
第三阶段上课5、androidui进阶编程一drawable和2d绘制_第2页
第三阶段上课5、androidui进阶编程一drawable和2d绘制_第3页
第三阶段上课5、androidui进阶编程一drawable和2d绘制_第4页
第三阶段上课5、androidui进阶编程一drawable和2d绘制_第5页
已阅读5页,还剩29页未读 继续免费阅读

付费下载

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

AndroidUI进阶:

Drawable和2D绘制本章目标AndroidDrawable概述Bitmap&.9.pngShapeXMLStateListDrawableAndroid图形编程类简介CanvasPaintTypeface3位图和矢量图位图(存储格式和容量)单色位图:1位存储1个像素点256色位图:8位存储1个像素点16位位图:565/RGB比例存储1个像素点24位位图(真彩色):3字节存储1个像素点32位位图:在24位色上加入256灰度阶-argb矢量图记录几何图形的坐标点以及一些填充色放大和打印不会失真,与分辨率无关,文件小4Drawable能支持的格式PngGifBitmapjpg矢量图图形图表示形状拉伸是不会失真位图像素点拉伸会失真Drawable是一个比较抽象的概念图形的操作对象抽象,可根据需要延伸出相应的图形操作对象AnimationDrawable针对动画操作对象BitmapDrawable针对位图的操作对象RotateDrawable用来进行旋转的图形操作对象…TransitionDrawable用来进行转换的图形操作对象6Shapexml和控件<shapexmlns:android=""android:shape="rectangle"><gradientandroid:angle="90"android:endColor="#feb301"android:startColor="#f5981f"android:centerColor="#f69b16"android:centerY="20%"android:type="linear"/>

<strokeandroid:width="1dp"android:color="@android:color/white"/><cornersandroid:bottomLeftRadius="5dip"android:bottomRightRadius="5dip"android:topLeftRadius="5dip"android:topRightRadius="5dip"/></shape>7动画操作对象

AnimationDrawable帧动画Frame补间动画Tween帧动画用来表示Frame动画,一帧一帧播放图片;可使用ImageView的background属性承载动画主要方法addFrame,增加一帧图片资源setOneShot,是否重复播放start/stop,开始或停止播放动画图片资源也可以采用配置文件的形式来配置在res/anim/filename.xml<animation-listxmlns:android="" android:oneshot="true"><itemandroid:drawable="@drawable/birthday1"android:duration="300"/><itemandroid:drawable="@drawable/birthday2"android:duration="300"/></animation-list>9示例:AnimationDrawable1、在layout文件中<ImageViewandroid:id=“@+id/imageView …. android:background=“@anim/filename”/>2、在Activity中ivAnim=(ImageView)this.findViewById(R.id.ivAnim);…..AnimationDrawableanim=(AnimationDrawable)ivAnim.getBackGround();…..anim.start();10补间动画Tween定义的效果有透明效果(Alpha)、尺度变换(Scale)、移动(Translate)、旋转(Rotate),可以定义其中的一种或者多种,多种动画的组合使用Set作为容器1-1、或程序中装载动画Animationanim=AnimationUtils.loadAnimation(this,R.anim.myanim);2-1、程序里播放装载的动画imageView.startAnimation(anim);补间动画定义-配置文件SET容器<set

android:shareInterpolator="false"

xmlns:android="">

<scale

android:interpolator="@android:anim/accelerate_decelerate_interpolator"

android:fromXScale="1.6"

android:toXScale="0.6"

android:fromYScale="1.6"

android:toYScale="0.6"

android:pivotX="50%"

android:pivotY="50%"

android:fillAfter="false"

android:duration="3000">

</scale>

<set

android:interpolator="@android:anim/decelerate_interpolator">

<scale

android:fromXScale="0.6"

android:toXScale="1.2"

android:fromYScale="0.6"

android:toYScale="1.2"

android:pivotX="50%"

android:pivotY="50%"

android:startOffset="3000"

android:duration="5000">

</scale>

<rotate

android:fromDegrees="0"

android:toDegrees="-45"

android:pivotX="50%"

android:pivotY="50%"

android:startOffset="3000"

android:duration="5000">

</rotate>

<alpha

android:fromAlpha="1.0"

android:toAlpha="0.6"

android:startOffset="3000"

android:duration="5000">

</alpha>

</set>

</set>

补间动画定义-程序AnimationSet动画集合可添加动画对象,如下为各类动画对象ScaleAnimation缩放动画animation=newScaleAnimation(1f,0.2f,1f,0.2f,Animation.RELATIVE_TO_SELF,0.5f,Animation.RELATIVE_TO_SELF,0.5f);TranslateAnimation平移动画…动画其他设置setInterpolator设置渲染器setDuration设置时长13为控件设置动画Animationanimu=AnimationUtils.loadAnimation(this,R.anim.upin);findViewById(R.id.bg).startAnimation(animu);animu.setAnimationListener(newAnimationListener(){publicvoidonAnimationStart(Animationanimation){ findViewById(R.id.body).setVisibility(View.GONE);}publicvoidonAnimationRepeat(Animationanimation){}publicvoidonAnimationEnd(Animationanimation){ findViewById(R.id.body).setVisibility(View.VISIBLE); Animationanim=AnimationUtils.loadAnimation(AnmiTest2Activity.this, R.anim.my_scale_action); findViewById(R.id.body).startAnimation(anim);}});状态操作对象

StateListDrawable用来管理控件或图形在不同状态下对应资源的可操作对象主要方法:addState(int[]stateSet,drawable)增加某些状态对应的可操作对象,该方法可以采用selector选择器来替换int[]getState()获得所有的状态为控件设置状态操作对象

StateListDrawable—配置文件采用配置文件方法,selector关键字设置在res/drawable下建立button.xml<?xmlversion="1.0"encoding="utf-8"?><selectorxmlns:android=""><itemandroid:state_pressed="true"android:drawable="@drawable/aa"></item><itemandroid:state_focused="true"android:drawable="@drawable/cc"></item><itemandroid:state_selected="true"android:drawable="@drawable/aa"></item><itemandroid:drawable="@drawable/bb"></item></selector>在layout/main.xml……<Buttonandroid:id="@+id/btnOk“android:layout_width="fill_parent"android:layout_height="wrap_content“android:text="状态测试"android:background="@drawable/button"/>16为控件设置状态操作对象

StateListDrawable—程序方法ButtonbtnOk=(Button)this.findViewById(R.id.btnOk);StateListDrawablesd=newStateListDrawable();

sd.addState(View.PRESSED_STATE_SET, this.getResource().getDrawable(R.drawable.press));sd.addState(….);….btnOk.setBackgroundDrawable(sd);Android软件框架图AndroidUI体系SkiaApiAndroid2D图形对象Bitmap位图对象/MatrixCanvas画布Paint画笔/TypefaceDrawable图形操作抽象类BitmapDrawableAnimationDrawableStateListDrawable…21各对象关系使用画笔Paint,在画布Canvas上画出位图Bitmap(或称图片)以及其他几何图形Paint:画笔对象,用来设置文本颜色、大小以及各像素点信息比如(argb)。Canvas:提供一个画布,绘制各类图形或图片Bitmap:用来描述一幅图片的位图信息(位图大小以及组成图片的像素点信息)画布CanvasAndroid图形绘制类主要方法方法说明drawRect画矩形drawCircle画圆drawLine画线drawPoint画点drawOval画椭圆drawColor画背景填充色drawText画出字符串drawBitmap(bitmap,left,top,paint)在left,top位置处画出图片drawBitmap(bitmap,src,dst,paint)在源图和目标图中画出图片23Paint类包含样式和颜色以及用来绘制几何形状、文本和位图的信息主要方法方法说明setColor(Color.RED)设置画笔颜色setARGB(a,r,g,b)设置像素setStylePaint.Style.FILL--填充;Paint.Style.STROKE空心setAlpha设置透明度setTextSize设置文本大小setStrokeWidth设置外框大小setAntiAlias设置画笔的锯齿效果Paint使用示例绘制矩形绘制直线绘制圆形显示字符串和Typeface字符的字体和修饰修饰:正常normal、粗体bold、斜体itatic、粗斜体bold_itaticmPaint=newPaint();mPaint.setColor(Color.RED);Typefacefont=Typeface.create("宋体",Typeface.NORMAL);mPaint.setTypeface(font);mPaint.setTextSize(22);FontMatrix的几个参数值:26Color类主要方法方法说明staticintargb(a,r,g,b)构造一个颜色对值,格式:AARRGGBBstaticintrgb(r,g,b)构造一个颜色对值staticintparseColor(Stringcolor)传入一个字符串,解释成颜色值进度条演示定义一个继承SurfaceView的类(属性:mProgress,操作:draw),在draw方法中根据mProgress画出进度条的外观定义一个RenderThread线程,每隔40ms,调用draw函数,实现界面刷新定义一个WorkThread线程,每隔1S,调用setProgress(int)方法,改变进度条控件的属性值请演示效果。28Android获取资源接口context.getResources()DrawablegetDrawable(intresId);AssetManagergetAssets();InputStreamopenRawResource(intresId);XmlParsergetXml();…获得位图Bitmap通过该对象,能够得到位图的大小、颜色格式、透明度等。通过BitmapDrawable对象获得InputStreamis=getResources().openRawResource(resId)Bit

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论