第三階段上課5、androidui進(jìn)階編程一drawable和2d繪制_第1頁(yè)
第三階段上課5、androidui進(jìn)階編程一drawable和2d繪制_第2頁(yè)
第三階段上課5、androidui進(jìn)階編程一drawable和2d繪制_第3頁(yè)
第三階段上課5、androidui進(jìn)階編程一drawable和2d繪制_第4頁(yè)
第三階段上課5、androidui進(jìn)階編程一drawable和2d繪制_第5頁(yè)
已閱讀5頁(yè),還剩29頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

AndroidUI進(jìn)階:

Drawable和2D繪制本章目標(biāo)AndroidDrawable概述Bitmap&.9.pngShapeXMLStateListDrawableAndroid圖形編程類簡(jiǎn)介CanvasPaintTypeface3位圖和矢量圖位圖(存儲(chǔ)格式和容量)單色位圖:1位存儲(chǔ)1個(gè)像素點(diǎn)256色位圖:8位存儲(chǔ)1個(gè)像素點(diǎn)16位位圖:565/RGB比例存儲(chǔ)1個(gè)像素點(diǎn)24位位圖(真彩色):3字節(jié)存儲(chǔ)1個(gè)像素點(diǎn)32位位圖:在24位色上加入256灰度階-argb矢量圖記錄幾何圖形的坐標(biāo)點(diǎn)以及一些填充色放大和打印不會(huì)失真,與分辨率無(wú)關(guān),文件小4Drawable能支持的格式PngGifBitmapjpg矢量圖圖形圖表示形狀拉伸是不會(huì)失真位圖像素點(diǎn)拉伸會(huì)失真Drawable是一個(gè)比較抽象的概念圖形的操作對(duì)象抽象,可根據(jù)需要延伸出相應(yīng)的圖形操作對(duì)象AnimationDrawable針對(duì)動(dòng)畫(huà)操作對(duì)象BitmapDrawable針對(duì)位圖的操作對(duì)象RotateDrawable用來(lái)進(jìn)行旋轉(zhuǎn)的圖形操作對(duì)象…TransitionDrawable用來(lái)進(jìn)行轉(zhuǎn)換的圖形操作對(duì)象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動(dòng)畫(huà)操作對(duì)象

AnimationDrawable幀動(dòng)畫(huà)Frame補(bǔ)間動(dòng)畫(huà)Tween幀動(dòng)畫(huà)用來(lái)表示Frame動(dòng)畫(huà),一幀一幀播放圖片;可使用ImageView的background屬性承載動(dòng)畫(huà)主要方法addFrame,增加一幀圖片資源setOneShot,是否重復(fù)播放start/stop,開(kāi)始或停止播放動(dòng)畫(huà)圖片資源也可以采用配置文件的形式來(lái)配置在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補(bǔ)間動(dòng)畫(huà)Tween定義的效果有透明效果(Alpha)、尺度變換(Scale)、移動(dòng)(Translate)、旋轉(zhuǎn)(Rotate),可以定義其中的一種或者多種,多種動(dòng)畫(huà)的組合使用Set作為容器1-1、或程序中裝載動(dòng)畫(huà)Animationanim=AnimationUtils.loadAnimation(this,R.anim.myanim);2-1、程序里播放裝載的動(dòng)畫(huà)imageView.startAnimation(anim);補(bǔ)間動(dòng)畫(huà)定義-配置文件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>

補(bǔ)間動(dòng)畫(huà)定義-程序AnimationSet動(dòng)畫(huà)集合可添加動(dòng)畫(huà)對(duì)象,如下為各類動(dòng)畫(huà)對(duì)象ScaleAnimation縮放動(dòng)畫(huà)animation=newScaleAnimation(1f,0.2f,1f,0.2f,Animation.RELATIVE_TO_SELF,0.5f,Animation.RELATIVE_TO_SELF,0.5f);TranslateAnimation平移動(dòng)畫(huà)…動(dòng)畫(huà)其他設(shè)置setInterpolator設(shè)置渲染器setDuration設(shè)置時(shí)長(zhǎng)13為控件設(shè)置動(dòng)畫(huà)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);}});狀態(tài)操作對(duì)象

StateListDrawable用來(lái)管理控件或圖形在不同狀態(tài)下對(duì)應(yīng)資源的可操作對(duì)象主要方法:addState(int[]stateSet,drawable)增加某些狀態(tài)對(duì)應(yīng)的可操作對(duì)象,該方法可以采用selector選擇器來(lái)替換int[]getState()獲得所有的狀態(tài)為控件設(shè)置狀態(tài)操作對(duì)象

StateListDrawable—配置文件采用配置文件方法,selector關(guān)鍵字設(shè)置在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="狀態(tài)測(cè)試"android:background="@drawable/button"/>16為控件設(shè)置狀態(tài)操作對(duì)象

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圖形對(duì)象Bitmap位圖對(duì)象/MatrixCanvas畫(huà)布Paint畫(huà)筆/TypefaceDrawable圖形操作抽象類BitmapDrawableAnimationDrawableStateListDrawable…21各對(duì)象關(guān)系使用畫(huà)筆Paint,在畫(huà)布Canvas上畫(huà)出位圖Bitmap(或稱圖片)以及其他幾何圖形Paint:畫(huà)筆對(duì)象,用來(lái)設(shè)置文本顏色、大小以及各像素點(diǎn)信息比如(argb)。Canvas:提供一個(gè)畫(huà)布,繪制各類圖形或圖片Bitmap:用來(lái)描述一幅圖片的位圖信息(位圖大小以及組成圖片的像素點(diǎn)信息)畫(huà)布CanvasAndroid圖形繪制類主要方法方法說(shuō)明drawRect畫(huà)矩形drawCircle畫(huà)圓drawLine畫(huà)線drawPoint畫(huà)點(diǎn)drawOval畫(huà)橢圓drawColor畫(huà)背景填充色drawText畫(huà)出字符串drawBitmap(bitmap,left,top,paint)在left,top位置處畫(huà)出圖片drawBitmap(bitmap,src,dst,paint)在源圖和目標(biāo)圖中畫(huà)出圖片23Paint類包含樣式和顏色以及用來(lái)繪制幾何形狀、文本和位圖的信息主要方法方法說(shuō)明setColor(Color.RED)設(shè)置畫(huà)筆顏色setARGB(a,r,g,b)設(shè)置像素setStylePaint.Style.FILL--填充;Paint.Style.STROKE空心setAlpha設(shè)置透明度setTextSize設(shè)置文本大小setStrokeWidth設(shè)置外框大小setAntiAlias設(shè)置畫(huà)筆的鋸齒效果Paint使用示例繪制矩形繪制直線繪制圓形顯示字符串和Typeface字符的字體和修飾修飾:正常normal、粗體bold、斜體itatic、粗斜體bold_itaticmPaint=newPaint();mPaint.setColor(Color.RED);Typefacefont=Typeface.create("宋體",Typeface.NORMAL);mPaint.setTypeface(font);mPaint.setTextSize(22);FontMatrix的幾個(gè)參數(shù)值:26Color類主要方法方法說(shuō)明staticintargb(a,r,g,b)構(gòu)造一個(gè)顏色對(duì)值,格式:AARRGGBBstaticintrgb(r,g,b)構(gòu)造一個(gè)顏色對(duì)值staticintparseColor(Stringcolor)傳入一個(gè)字符串,解釋成顏色值進(jìn)度條演示定義一個(gè)繼承SurfaceView的類(屬性:mProgress,操作:draw),在draw方法中根據(jù)mProgress畫(huà)出進(jìn)度條的外觀定義一個(gè)RenderThread線程,每隔40ms,調(diào)用draw函數(shù),實(shí)現(xiàn)界面刷新定義一個(gè)WorkThread線程,每隔1S,調(diào)用setProgress(int)方法,改變進(jìn)度條控件的屬性值請(qǐng)演示效果。28Android獲取資源接口context.getResources()DrawablegetDrawable(intresId);AssetManagergetAssets();InputStreamopenRawResource(intresId);XmlParsergetXml();…獲得位圖Bitmap通過(guò)該對(duì)象,能夠得到位圖的大小、顏色格式、透明度等。通過(guò)BitmapDrawable對(duì)象獲得InputStreamis=getResources().openRawResource(resId)Bit

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論