第12章 圖形圖像_第1頁
第12章 圖形圖像_第2頁
第12章 圖形圖像_第3頁
第12章 圖形圖像_第4頁
第12章 圖形圖像_第5頁
已閱讀5頁,還剩96頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

第十二章圖形圖像1.訪問圖片2.Tween動畫3.Frame動畫4.圖形的繪制5.通過Matrix實現(xiàn)動畫6.Shader類實現(xiàn)圖形特效7.圖像像素的操作1.訪問圖片1)顯示drawable中的圖像參考:Chapter12_Graphic_011.訪問圖片1)顯示drawable中的圖像A.在res/drawable/目錄中添加需要的圖片,如test.jpg,B.在布局文件中,添加一個ImageView<ImageViewandroid:id="@+id/ImageView01"android:layout_width="wrap_content"android:layout_height="wrap_content"></ImageView>1.訪問圖片1)顯示drawable中的圖像C.顯示一個圖片兩種方法:通過布局文件中設(shè)置:android:src="@drawable/test"通java程序中調(diào)用:myImageView.setImageResource(R.drawable.test);1.訪問圖片2)顯示sd卡上的圖片參考:Chapter12_Graphic_021.訪問圖片2)顯示sd卡上的圖片A.在布局文件中,添加一個ImageView注意:刪除這條語句:android:src="@drawable/test"B.注意:設(shè)置在sd卡上的圖片的絕對路徑,并且保證存在對應(yīng)的圖片Stringpath="/sdcard/zs.jpg";如沒有這個圖片,可選擇其他圖片導(dǎo)入sdcard1.訪問圖片2)顯示sd卡上的圖片C.通過fileexplore的方式導(dǎo)入使用android1.5的AVD使用android1.6或2.01的avd有時會有問題1.訪問圖片2)顯示sd卡上的圖片D.需要通過指令的方式導(dǎo)入運行――cmd,進入android的tools目錄:G:\beifen\Software\android\android-sdk-windows\toolsadbpush文件的絕對路徑/sdcard/1.訪問圖片2)顯示sd卡上的圖片E.java程序?qū)崿F(xiàn)顯示圖片Stringpath="/sdcard/zs.jpg";Bitmapbm=BitmapFactory.decodeFile(path);myImageView=(ImageView)findViewById(R.id.ImageView01);myImageView.setImageBitmap(bm);不使用語句:setWallpaper(bm);1.訪問圖片2)顯示sd卡上的圖片F(xiàn).setWallpaper(bm);含義:設(shè)置home界面的墻紙2.Tween動畫Android中的動畫分為:Tween動畫和Frame動畫完成一個圖片的簡單動畫,包括:尺寸、透明度、旋轉(zhuǎn)、位置4種變化實現(xiàn)方式分兩種:1)直接通過編程(硬編碼)的方式2)通過xml配置文件中定義,然后再調(diào)用的方式2.Tween動畫1)直接通過編程(硬編碼)的方式參考:Chapter12_Graphic_Animation在每個按鈕的分別實現(xiàn)不同的動畫效果,通過編程來實現(xiàn)2.Tween動畫1)直接通過編程(硬編碼)的方式A.xml布局文件中包括一個ImageView和4個button<ImageViewandroid:id="@+id/ImageView01"android:layout_width="wrap_content"android:layout_height="wrap_content"android:src="@drawable/girl"></ImageView>2.Tween動畫1)直接通過編程(硬編碼)的方式B.獲取各組件的控制對像girlImage=(ImageView)findViewById(R.id.ImageView01);b1=(Button)findViewById(R.id.Button01);b2=(Button)findViewById(R.id.Button02);b3=(Button)findViewById(R.id.Button03);b4=(Button)findViewById(R.id.Button04);2.Tween動畫1)直接通過編程(硬編碼)的方式動畫的實現(xiàn):通過Animation對像,startAnimation(scaleAnimation)實現(xiàn)C.尺寸變化實現(xiàn)的動畫//創(chuàng)建Sacle(尺寸)變化動畫AnimationscaleAnimation=newScaleAnimation(0f,1f,0f,1f,Animation.RELATIVE_TO_SELF,0.5f,Animation.RELATIVE_TO_SELF,0.5f);//設(shè)置動畫持續(xù)時間scaleAnimation.setDuration(3000);//開始動畫girlImage.startAnimation(scaleAnimation);2.Tween動畫1)直接通過編程(硬編碼)的方式D.對比度變化實現(xiàn)的動畫//創(chuàng)建Alpha(漸變)動畫AnimationalphaAnimation=newAlphaAnimation(0.1f,1.0f);//設(shè)置動畫持續(xù)時間alphaAnimation.setDuration(3000);//開始動畫girlImage.startAnimation(alphaAnimation);2.Tween動畫1)直接通過編程(硬編碼)的方式E.位置變化實現(xiàn)的動畫//創(chuàng)建translate(位置變化)動畫AnimationtranslateAnimation=newTranslateAnimation(10,100,10,100);//設(shè)置動畫持續(xù)時間translateAnimation.setDuration(3000);//開始動畫girlImage.startAnimation(translateAnimation);2.Tween動畫1)直接通過編程(硬編碼)的方式F.通過旋轉(zhuǎn)實現(xiàn)的動畫//創(chuàng)建rotate(旋轉(zhuǎn))動畫AnimationrotateAnimation=newRotateAnimation(0f,+360f, Animation.RELATIVE_TO_SELF,0.5f, Animation.RELATIVE_TO_SELF,0.5f);//設(shè)置動畫持續(xù)時間rotateAnimation.setDuration(3000);//開始動畫girlImage.startAnimation(rotateAnimation);2.Tween動畫1)直接通過編程(硬編碼)的方式H.程序的修改A)對某一種動畫,修改持續(xù)的時間rotateAnimation.setDuration(6000);效果:旋轉(zhuǎn)明顯變慢B)改變位置變化的參數(shù)AnimationtranslateAnimation=newTranslateAnimation(10,100,10,200);效果:移動的目標(biāo)位置發(fā)生變化2.Tween動畫2)通過xml配置文件中定義,然后再調(diào)用的方式參考:Chapter12_Graphic_Animation1A.在res/amin/目錄中,定義每種動畫的xml文件如:my_scale.xml,定義scale動畫的參數(shù)<scale android:fromXScale="0.0" android:toXScale="1.0" android:fromYScale="0.0" android:toYScale="1.0" android:pivotX="50%"

android:pivotY="50%" android:duration="5000">2.Tween動畫2)通過xml配置文件中定義,然后再調(diào)用的方式B.在每個按鈕的響應(yīng)函數(shù)中,通過xml文件完成動畫AnimationscaleAnimation=AnimationUtils.loadAnimation(MainActivity.this,R.anim.my_scale);girlImage.startAnimation(scaleAnimation);3.Frame動畫將多幅圖片依次連續(xù)播放,實現(xiàn)動畫效果參考:Chapter12_Graphic_Animation21)將各幅圖片復(fù)制到res/drawable/目錄中3.Frame動畫2)在res/amin/目錄中建立dance.xml,設(shè)置各幀的圖片<itemandroid:drawable="@drawable/p01"android:duration="500"/><itemandroid:drawable="@drawable/p02"android:duration="500"/><itemandroid:drawable="@drawable/p03"android:duration="500"/><itemandroid:drawable="@drawable/p04"android:duration="500"/><itemandroid:drawable="@drawable/p05"android:duration="500"/><itemandroid:drawable="@drawable/p06"android:duration="500"/>3.Frame動畫3)在main.xml中,設(shè)置ImageView的背景為dance.xmlandroid:background="@anim/dance"4)在activity中,獲得背景色,并轉(zhuǎn)換為AnimationDrawable對象聲明AnimationDrawableprivateAnimationDrawabledanceAnimation;danceAnimation=(AnimationDrawable) myImage.getBackground();3.Frame動畫5)播放動畫danceAnimation.start();6)停止動畫danceAnimation.stop();7)修改程序修改dance.xml中的duration="1500"效果:動畫明顯變慢4.圖形的繪制參考:Chapter12_Graphic_03通過指令,實現(xiàn):各種顏色、各種形狀、各種樣式的圖形的繪制4.圖形的繪制下面先描述Canvas和Paint1)CanvasCanvas:理解為畫布,主要實現(xiàn)了屏幕的繪制過程,其中包含了很多實用的方法,比如繪制一條路徑、區(qū)域、貼圖、畫點、畫線、渲染文本4.圖形的繪制Canvas類常用的方法:A.voiddrawRect(RectFrect,Paintpaint)繪制區(qū)域,參數(shù)一為RectF一個區(qū)域B.voiddrawPath(Pathpath,Paintpaint)繪制一個路徑,參數(shù)一為Path路徑對象C.voiddrawBitmap(Bitmapbitmap,Rectsrc,Rectdst,Paintpaint)參數(shù)一就是我們常規(guī)的Bitmap對象,參數(shù)二是源區(qū)域(Android提示這里是bitmap),參數(shù)三是目標(biāo)區(qū)域(應(yīng)該在canvas的位置和大小),參數(shù)四是Paint畫刷對象4.圖形的繪制Canvas類常用的方法:D.voiddrawLine(floatstartX,floatstartY,floatstopX,floatstopY,Paintpaint)畫線,參數(shù)一起始點的x軸位置,參數(shù)二起始點的y軸位置,參數(shù)三終點的x軸水平位置,參數(shù)四y軸垂直位置,最后一個參數(shù)為Paint畫刷對象。4.圖形的繪制Canvas類常用的方法:E.voiddrawPoint(floatx,floaty,Paintpaint)畫點,參數(shù)一水平x軸,參數(shù)二垂直y軸,第三個參數(shù)為Paint對象。F.voiddrawText(Stringtext,floatx,floaty,Paintpaint)渲染文本,參數(shù)一是String類型的文本,參數(shù)二x軸,參數(shù)三y軸,參數(shù)四是Paint對象。4.圖形的繪制2)Paint如果我們把Canvas當(dāng)做繪畫師來看,那么Paint就是我們繪畫的工具,比如畫筆、畫刷、顏料等等。Paint類常用方法:A.voidsetARGB(inta,intr,intg,intb)設(shè)置Paint對象顏色,參數(shù)一為alpha透明通道4.圖形的繪制2)PaintB.voidsetAlpha(inta)設(shè)置alpha不透明度,范圍為0~255C.voidsetAntiAlias(booleanaa)//是否抗鋸齒D.voidsetColor(intcolor)設(shè)置顏色,這里Android內(nèi)部定義的有Color類包含了一些常見顏色定義4.圖形的繪制2)PaintE.voidsetFakeBoldText(booleanfakeBoldText)設(shè)置偽粗體文本F.voidsetLinearText(booleanlinearText)設(shè)置線性文本G.PathEffectsetPathEffect(PathEffecteffect)設(shè)置路徑效果4.圖形的繪制2)PaintH.RasterizersetRasterizer(Rasterizerrasterizer)設(shè)置光柵化I.ShadersetShader(Shadershader)//設(shè)置陰影J.voidsetTextAlign(Paint.Alignalign)//設(shè)置文本對齊4.圖形的繪制2)PaintK.voidsetTextScaleX(floatscaleX)//設(shè)置文本縮放倍數(shù),1.0f為原始L.voidsetTextSize(floattextSize)//設(shè)置字體大小M.TypefacesetTypeface(Typefacetypeface)//設(shè)置字體,Typeface包含了字體的類型,粗細,還有傾斜、顏色等。N.voidsetUnderlineText(booleanunderlineText)//設(shè)置下劃線4.圖形的繪制最終Canvas和Paint在onDraw中直接使用protectedvoidonDraw(Canvascanvas){PaintpaintRed=newPaint();paintRed.setColor(Color.Red);//在坐標(biāo)11,3上畫一個紅點

canvas.drawPoint(11,3,paintRed);}4.圖形的繪制3)具體實例:參考:Chapter12_Graphic_034.圖形的繪制3)具體實例:在OnDraw()函數(shù)中實現(xiàn)A.通過canvas設(shè)置背景顏色canvas.drawColor(Color.WHITE);B.設(shè)置畫筆的屬性Paintpaint=newPaint();paint.setAntiAlias(true);paint.setColor(Color.GREEN);paint.setStyle(Paint.Style.STROKE);paint.setStrokeWidth(3);4.圖形的繪制3)具體實例:通過canvas繪制不同的圖形C.第一排綠色的圖形canvas.drawCircle(40,40,30,paint);canvas.drawRect(10,90,70,150,paint);canvas.drawRect(10,170,70,200,paint);RectFre=newRectF(10,220,70,250);canvas.drawOval(re,paint);4.圖形的繪制3)具體實例:D.通過path對像設(shè)置路徑,繪制三角形和梯形//繪制三角形Pathpath=newPath();path.moveTo(10,330);path.lineTo(70,330);path.lineTo(40,270);path.close();canvas.drawPath(path,paint);4.圖形的繪制3)具體實例:D.通過path對像設(shè)置路徑,繪制三角形和梯形//繪制梯形Pathpath1=newPath();path1.moveTo(10,410);path1.lineTo(70,410);path1.lineTo(55,350);path1.lineTo(25,350);path1.close();canvas.drawPath(path1,paint);4.圖形的繪制3)具體實例:E.以實心方式繪制圖形//設(shè)置實心Paintpaint.setStyle(Paint.Style.FILL);paint.setColor(Color.RED);//繪制實心圖形canvas.drawCircle(120,40,30,paint);canvas.drawRect(90,90,150,150,paint);canvas.drawRect(90,170,150,200,paint);RectFre2=newRectF(90,220,150,250);canvas.drawOval(re2,paint);4.圖形的繪制3)具體實例:F.以渲染的方式顯示圖形//定義渲染shader的paint對像ShadermShader=newLinearGradient(0,0,100,100,newint[]{Color.GREEN,Color.RED,Color.BLUE,Color.YELLOW},null,Shader.TileMode.REPEAT);paint.setShader(mShader);canvas.drawCircle(200,40,30,paint);4.圖形的繪制3)具體實例:G.以渲染的方式顯示文字paint.setTextSize(24); canvas.drawText(getResources().getString(R.string.str_text1),240,50,paint);第十一章多媒體應(yīng)用1.音頻的播放2.視頻的播放3.音頻的錄制4.攝像頭1.音頻的播放播放音頻和視頻,主要采用MediaPlayer類,該類位于android.media包中要播放音頻或者視頻,首先需要有對應(yīng)的源文件,源文件主要分3中類型:資源中的文件、系統(tǒng)(sd卡)中的文件、網(wǎng)絡(luò)上的文件1.音頻的播放4)迷你音頻播放器參考:Chapter11_Media_MiniPlayer應(yīng)用:音樂播放、暫停、停止;圖標(biāo)按鈕的使用;按鈕的控制1.音頻的播放4)迷你音頻播放器A.圖標(biāo)按鈕布局文件中,通過ImageButton實現(xiàn)<ImageButton android:id="@+id/play" android:layout_width="wrap_content" android:layout_height="wrap_content" android:src="@drawable/play" />決定顯示的圖標(biāo)2.視頻的播放參考:Chapter11_Media_MiniPlayer_video1)準(zhǔn)備視頻文件在模擬器上運行,首先需要AVD的存儲空間中有一個視頻文件,需要一個比較小的mp4/3gp文件如復(fù)制一個20多兆的MP4,導(dǎo)入的過程總是有問題A.在PC上如何導(dǎo)入視頻到sd卡中3.音頻的錄制參考:Chapter11_Media_MiniRecorder1)在模擬器上,程序運行,可錄制音頻文件,文件存放路徑:path="/sdcard/test1.mp3";但是,錄制的文件存在問題,不能播放4.攝像頭的程序參考:cameratest

第十二章圖形圖像1.訪問圖片2.Tween動畫3.Frame動畫4.圖形的繪制5.通過Matrix實現(xiàn)動畫6.Shader類實現(xiàn)圖形特效7.圖像像素的操作1.訪問圖片1)顯示drawable中的圖像參考:Chapter12_Graphic_011.訪問圖片2)顯示sd卡上的圖片參考:Chapter12_Graphic_022.Tween動畫Android中的動畫分為:Tween動畫和Frame動畫完成一個圖片的簡單動畫,包括:尺寸、透明度、旋轉(zhuǎn)、位置4種變化實現(xiàn)方式分兩種:1)直接通過編程(硬編碼)的方式2)通過xml配置文件中定義,然后再調(diào)用的方式2.Tween動畫1)直接通過編程(硬編碼)的方式參考:Chapter12_Graphic_Animation在每個按鈕的分別實現(xiàn)不同的動畫效果,通過編程來實現(xiàn)3.Frame動畫將多幅圖片依次連續(xù)播放,實現(xiàn)動畫效果參考:Chapter12_Graphic_Animation21)將各幅圖片復(fù)制到res/drawable/目錄中4.圖形的繪制參考:Chapter12_Graphic_03通過指令,實現(xiàn):各種顏色、各種形狀、各種樣式的圖形的繪制4.圖形的繪制下面先描述Canvas和Paint1)CanvasCanvas:理解為畫布,主要實現(xiàn)了屏幕的繪制過程,其中包含了很多實用的方法,比如繪制一條路徑、區(qū)域、貼圖、畫點、畫線、渲染文本4.圖形的繪制2)Paint如果我們把Canvas當(dāng)做繪畫師來看,那么Paint就是我們繪畫的工具,比如畫筆、畫刷、顏料等等。Paint類常用方法:A.voidsetARGB(inta,intr,intg,intb)設(shè)置Paint對象顏色,參數(shù)一為alpha透明通道4.圖形的繪制3)具體實例:在OnDraw()函數(shù)中實現(xiàn)A.通過canvas設(shè)置背景顏色canvas.drawColor(Color.WHITE);B.設(shè)置畫筆的屬性Paintpaint=newPaint();paint.setAntiAlias(true);paint.setColor(Color.GREEN);paint.setStyle(Paint.Style.STROKE);paint.setStrokeWidth(3);4.圖形的繪制3)具體實例:通過canvas繪制不同的圖形C.第一排綠色的圖形canvas.drawCircle(40,40,30,paint);canvas.drawRect(10,90,70,150,paint);canvas.drawRect(10,170,70,200,paint);RectFre=newRectF(10,220,70,250);canvas.drawOval(re,paint);4.圖形的繪制3)具體實例:空心實線paint.setStyle(Paint.Style.STROKE);paint.setStrokeWidth(3);//設(shè)置實心Paintpaint.setStyle(Paint.Style.FILL);第十二章圖形圖像第十三章OPENGL第十四章游戲開發(fā)第十二章圖形圖像1.訪問圖片2.Tween動畫3.Frame動畫4.圖形的繪制5.通過Matrix實現(xiàn)動畫6.Shader類實現(xiàn)圖形特效7.圖像像素的操作5.通過Matrix實現(xiàn)動畫參考:Chapter12_Graphic_Matrix主要通過Matrix類實現(xiàn),通過函數(shù):setRotate()、setScale()、setTranslate()完成旋轉(zhuǎn)、縮放、平移5.通過Matrix實現(xiàn)動畫運行效果:通過上下鍵,對圖片進行縮放通過左右鍵,對圖片進行旋轉(zhuǎn)5.通過Matrix實現(xiàn)動畫1)獲得位圖的對象和屬性bm=BitmapFactory.decodeResource(this.getResources(),R.drawable.girl);w=bm.getWidth();h=bm.getHeight();5.通過Matrix實現(xiàn)動畫2)在OnDraw函數(shù)中根據(jù)scale和angle創(chuàng)建新的圖片,并進行顯示matrix.reset();if(!isScale){ //旋轉(zhuǎn)Matrix matrix.setRotate(angle);}else{//縮放Matrixmatrix.setScale(scale,scale);}5.通過Matrix實現(xiàn)動畫2)在OnDraw函數(shù)中根據(jù)scale和angle創(chuàng)建新的圖片,并進行顯示//根據(jù)原始位圖和Matrix創(chuàng)建新視圖Bitmapbm2=Bitmap.createBitmap(bm,0,0,w,h,matrix,true);//繪制新視圖canvas.drawBitmap(bm2,matrix,null);5.通過Matrix實現(xiàn)動畫3)根據(jù)手機上的方向鍵操作,對angle和scale進行修改A.通過KeyEvent獲取按鍵類型keyCode==KeyEvent.KEYCODE_DPAD_LEFTB.左右按鍵控制旋轉(zhuǎn)//向左旋轉(zhuǎn)if(keyCode==KeyEvent.KEYCODE_DPAD_LEFT){ isScale=false; angle++; postInvalidate();}5.通過Matrix實現(xiàn)動畫3)根據(jù)手機上的方向鍵操作,對angle和scale進行修改B.左右按鍵控制旋轉(zhuǎn)//向右旋轉(zhuǎn)if(keyCode==KeyEvent.KEYCODE_DPAD_R

溫馨提示

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

評論

0/150

提交評論