• 
    

    
    

      99热精品在线国产_美女午夜性视频免费_国产精品国产高清国产av_av欧美777_自拍偷自拍亚洲精品老妇_亚洲熟女精品中文字幕_www日本黄色视频网_国产精品野战在线观看 ?

      基于Android的數(shù)字機(jī)頂盒桌面啟動(dòng)器的設(shè)計(jì)與實(shí)現(xiàn)

      2015-09-22 09:29:38李栿麟李璋
      物聯(lián)網(wǎng)技術(shù) 2015年9期

      李栿麟+李璋

      摘 要:以Android為平臺(tái),結(jié)合Android動(dòng)畫技術(shù)和控件顯示等技術(shù),同時(shí)利用Eclipse、Genymotion開發(fā)了一款適用于安卓平臺(tái)的高清數(shù)字機(jī)頂盒的桌面啟動(dòng)器App。

      關(guān)鍵詞:Android;Genymotion;Eclipse;數(shù)字機(jī)頂盒啟動(dòng)器

      中圖分類號(hào):TP311 ? ? ? ? ? ? 文獻(xiàn)標(biāo)識(shí)碼:A ? ? ? ? ? 文章編號(hào):2095-1302(2015)09-00-03

      0 ?引 ?言

      目前,使用電視機(jī)產(chǎn)品的用戶相比使用個(gè)人電腦的用戶多,但電視機(jī)存在的諸多弊端日益顯現(xiàn),主要體現(xiàn)在分辨率和功能上。Android平臺(tái)的網(wǎng)絡(luò)電視機(jī)目前還處于推廣階段,有很多技術(shù)問題需要解決,也具有廣闊的市場前景。目前,Android平臺(tái)已經(jīng)成為廣大網(wǎng)絡(luò)電視機(jī)廠商的首選操作系統(tǒng),它具有強(qiáng)大的功能并具有很強(qiáng)的開放性,在系統(tǒng)中進(jìn)行網(wǎng)絡(luò)電視機(jī)軟件開發(fā)具有開發(fā)周期短、設(shè)計(jì)自由度高、可擴(kuò)展性強(qiáng)等優(yōu)勢。為更好地完成機(jī)頂盒與電視機(jī)的互聯(lián),設(shè)計(jì)了此App。

      1 ?總體設(shè)計(jì)

      1.1 ?總體功能概述

      TvLauncher是一款為電視機(jī)或者機(jī)頂盒設(shè)計(jì)的桌面啟動(dòng)器,它列出了機(jī)頂盒的主要功能如電視、電影、教育等主頁面、管理數(shù)字電視所安裝的App的應(yīng)用管理頁面以及查詢相關(guān)人員信息的管理頁面等。

      1.2 ?TvLauncher功能模塊的劃分

      根據(jù)TvLauncher的總體功能概述,我們可以將TvLauncher劃分為以下幾個(gè)功能模塊來分別實(shí)現(xiàn):

      (1)主頁面功能模塊(Home頁面):該模塊主要包括機(jī)頂盒的一些常見的快捷功能選項(xiàng)如電視、電影、娛樂、教育、搜素以及系統(tǒng)設(shè)置和系統(tǒng)更新等。

      (2)應(yīng)用管理功能模塊(Application頁面):在該模塊中將會(huì)把系統(tǒng)所有的應(yīng)用分頁顯示在屏幕上,并且提供可供用戶對(duì)這些應(yīng)用操作的一些功能選項(xiàng),如對(duì)應(yīng)用的查看、移動(dòng)和卸載等。

      (3)人員信息管理功能模塊(Information頁面)。

      2 ?功能設(shè)計(jì)與實(shí)現(xiàn)

      2.1 ?UI視圖的設(shè)計(jì)

      在該應(yīng)用中,將采用ViewPager+Fragment組合的方式實(shí)現(xiàn)Tab(主頁面和應(yīng)用管理頁面以及人員信息頁面)的分頁和滑動(dòng)的效果,采用ViewPager+Gridview組合的方式實(shí)現(xiàn)對(duì)應(yīng)用管理頁面的App進(jìn)行分頁并實(shí)現(xiàn)滑動(dòng)效果。

      2.1.1 ?主頁面的UI設(shè)計(jì)

      主頁面的設(shè)計(jì)文件為activity_main_framela yout.xml和activity_main_menu.xml。其中在activity_home_framelayout.xml中采用相對(duì)布局嵌套使用幀布局的方式實(shí)現(xiàn)主頁面圖片和文字的組合,在activity_main_menu.xml中采用在線性布局中嵌套使用線性布局的方式完成Tab的頁面布局。

      2.1.2 ?主頁面中電影菜單的二級(jí)頁面UI設(shè)計(jì)

      電影菜單的二級(jí)頁面設(shè)計(jì)文件為:activity_movie.xml和movie_viewpager_item.xml。其中在activity_movie.xml中采用線性布局嵌套線性布局的方式實(shí)現(xiàn)該頁面的總體布局,在movie_view pager_item.xml中采用在相對(duì)布局中嵌套使用幀布局的方式實(shí)現(xiàn)圖片和文字的組合。

      2.1.3 ?應(yīng)用管理頁面的UI設(shè)計(jì)

      應(yīng)用管理頁面的設(shè)計(jì)文件為:application_view pager.xml和application_ viewpager_item.xml文件。其中在app-lication_viewpager.xml文件中采用線性布局相互嵌套+自定義ViewPager控件組合的方式實(shí)現(xiàn)該頁面的總體布局,application_viewpager_item.xml文件中采用在相對(duì)布局中嵌套使用幀布局的方式將系統(tǒng)應(yīng)用的圖標(biāo)、名稱以及背景圖片進(jìn)行組合。

      2.1.4 ?應(yīng)用管理模塊二級(jí)功能(移動(dòng)和刪除)頁面的UI設(shè)計(jì)

      應(yīng)用管理模塊二級(jí)功能(移動(dòng)和刪除)頁面的設(shè)計(jì)文件為:activity_popupwindow.xml。文件采用在相對(duì)布局中嵌套使用線性布局的方式實(shí)現(xiàn)效果。

      2.1.5 ?人員信息查看頁面的UI設(shè)計(jì)

      人員信息管理頁面的設(shè)計(jì)文件為:activity_information.xml和information_listview_item.xml。在activity_informa-tion.xml中采用在線性布局中嵌套使用線性布局的方式實(shí)現(xiàn)人員信息界面的總體布局,在information_listview_item.xml文件中采用單純的線性布局方式實(shí)現(xiàn)多組文字的組合效果。

      2.2 ?特效的設(shè)計(jì)與實(shí)現(xiàn)

      2.2.1 ?主頁菜單焦點(diǎn)放大動(dòng)畫的設(shè)計(jì)與實(shí)現(xiàn)

      主頁菜單焦點(diǎn)的放大主要采用Tweened Animation動(dòng)畫中的Scale(縮放效果)類型的動(dòng)畫來實(shí)現(xiàn)。其主要代碼如下:

      (1)放大動(dòng)畫的代碼

      v.bringToFront();

      ScaleAnimation myAnimation_Scale = new ScaleAnimation(1.0f, 1.1f,1.0f, 1.1f, Animation.RELATIVE_TO_SELF, 0.5f,

      Animation.RELATIVE_TO_SELF, 0.5f); myAnimation_Scale.setDuration(300);

      v.startAnimation(myAnimation_Scale);

      myAnimation_Scale.setFillAfter(true);

      其中,v.bringToFront();函數(shù)用于把當(dāng)前視圖置于其他視圖上方。

      (2)縮小動(dòng)畫的代碼

      ScaleAnimation myAnimation_Scale = new ScaleAnimation(1.1f, 1.0f, 1.1f, 1.0f, Animation.RELATIVE_TO_SELF, 0.5f,Animation.RELATIVE_TO_SELF, 0.5f);

      myAnimation_Scale.setDuration(300);

      v.startAnimation(myAnimation_Scale);

      其實(shí)現(xiàn)的效果圖如圖1所示。

      圖1 ?主頁面菜單焦點(diǎn)放大動(dòng)畫實(shí)現(xiàn)效果圖

      2.2.2 ?主頁面Tab菜單焦點(diǎn)動(dòng)畫的設(shè)計(jì)與實(shí)現(xiàn)

      主頁面Tab菜單焦點(diǎn)動(dòng)畫將主要借助幀動(dòng)畫實(shí)現(xiàn),在文件main_menu_animation.xml中定義了兩幀圖片,間隔時(shí)間為0.3秒。其實(shí)現(xiàn)的主要代碼如下:

      (1)獲得焦點(diǎn)代碼

      v.setBackgroundResource(R.anim.main_menu_animation);

      mFrameAnimation = (AnimationDrawable) v.getBackground();

      mFrameAnimation.start();

      (2)失去焦點(diǎn)的代碼

      v.setBackgroundColor(Color.TRANSPARENT);

      其實(shí)現(xiàn)的效果圖如圖2所示。

      圖 2 ?主頁面Tab菜單焦點(diǎn)動(dòng)畫實(shí)現(xiàn)效果圖

      2.2.3 ?電影菜單二級(jí)菜單的翻頁動(dòng)畫設(shè)計(jì)與實(shí)現(xiàn)

      電影菜單二級(jí)菜單的翻頁動(dòng)畫將主要采用ViewPager自帶的setPageTransformer()來設(shè)置切換動(dòng)畫。其實(shí)現(xiàn)的效果如圖3所示。

      圖 3 ?電影菜單二級(jí)菜單的翻頁動(dòng)畫實(shí)現(xiàn)效果圖

      2.2.4 ?主頁面倒影效果的設(shè)計(jì)與實(shí)現(xiàn)

      主頁面倒影效果的主要設(shè)計(jì)思路是:首先獲得需要設(shè)置倒影的View的緩存,然后通過mMatrix.preScale(1,-1)利用該緩存創(chuàng)建一個(gè)和原View一模一樣的圖像 ;調(diào)用Bitmap.createBitmap(originalImage,o,height/2, width,height/2.mMatrix,false)使該圖像倒過來創(chuàng)建一個(gè)倒過來圖像,調(diào)用canvas.drawBitmap(reflectionImage,o,height/3f,null),把倒過來的圖像畫到畫布上。這樣就實(shí)現(xiàn)了倒影效果。其主要代碼如下:

      /*為需要設(shè)置倒影的View設(shè)置緩存*/

      for (int i = 0; i <reflectNum; i++){

      mFrameLayoutReflectArray[i].measure( ? ? ? ? ? ? ? ? ?MeasureSpec.makeMeasureSpec(0,

      MeasureSpec.UNSPECIFIED), ? ? ? ? ? ? ? ? ?MeasureSpec.makeMeasureSpec(0, MeasureSpec.UNSPECIFIED));

      mFrameLayoutReflectArray[i].layout(0, 0,

      mFrameLayoutReflectArray[i].getMeasuredWidth(),mFrameLayoutReflectArray[i].getMeasuredHeight());mFrameLayoutReflectArray[i].buildDrawingCache();mBitmapArray[i] = mFrameLayoutReflectArray[i].getDrawingCache(); }

      /*翻轉(zhuǎn)圖片、創(chuàng)建倒過來的圖像、將圖像畫到畫布上*/

      finalint reflectionGap = 4;

      int width = originalImage.getWidth();

      int height = originalImage.getHeight();

      Matrix matrix = new Matrix();

      matrix.preScale(1, -1);

      Bitmap reflectionImage = Bitmap.createBitmap(originalImage, 0,

      height / 2, width, height / 2, matrix, false);

      Bitmap bitmapWithReflection = Bitmap.createBitmap(width,

      (height + height / 3), Config.ARGB_8888);

      // 創(chuàng)建畫布

      Canvas canvas = new Canvas(bitmapWithReflection);

      canvas.drawBitmap(originalImage, 0, 0, null);

      canvas.drawBitmap(reflectionImage, 0, height + reflectionGap, null);

      Paint paint = new Paint();

      LinearGradient shader = new LinearGradient(0,

      originalImage.getHeight(), 0, bitmapWithReflection.getHeight()

      + reflectionGap, 0x70ffffff, 0x00ffffff,

      TileMode.MIRROR);paint.setShader(shader);

      paint.setXfermode(new PorterDuffXfermode(Mode.DST_IN));

      canvas.drawRect(0, height, width, bitmapWithReflection.getHeight() + reflectionGap, paint);return bitmapWithReflection;

      其實(shí)現(xiàn)的效果如圖4所示。

      圖 4 ?主頁面倒影實(shí)現(xiàn)效果圖

      2.2.5 ?應(yīng)用管理頁面的分頁、應(yīng)用的移動(dòng)和卸載的實(shí)現(xiàn)

      (1)應(yīng)用管理頁面的分頁的實(shí)現(xiàn)

      應(yīng)用管理頁面的分頁將主要采用ViewPager+GridView實(shí)現(xiàn)。利用gridview將應(yīng)用顯示到頁面上,利用ViewPager實(shí)現(xiàn)對(duì)應(yīng)用的分頁以及滑動(dòng)效果。

      (2)應(yīng)用的移動(dòng)和卸載的實(shí)現(xiàn)

      應(yīng)用管理頁面長按某一Item,會(huì)彈出popupwindow。此時(shí),如果選擇移動(dòng)(點(diǎn)取消則退回應(yīng)用界面),就記錄應(yīng)用的起始位置positionA,移動(dòng)到positionB,記錄positionB的位置,在List中交換二者的位置,然后更新gridview的Adapter,完成整個(gè)移動(dòng)過程。如果選擇卸載,程序會(huì)彈出一個(gè)確認(rèn)框,選擇確認(rèn)卸載(點(diǎn)取消則退回應(yīng)用界面),程序就獲取該應(yīng)用的packgName,激活系統(tǒng)卸載intent,然后在List中刪除該應(yīng)用,接著更新gridview的Adapter,完成卸載。

      3 ?結(jié) ?語

      安卓用戶界面設(shè)計(jì)使用的方法是使用XML來描述UI,使用XML來描述的好處是將用戶和程序邏輯分開,可以做到用戶界面的改變不影響程序邏輯,程序邏輯的變動(dòng)也可以不影響用戶界面,實(shí)際上是采用了MVC模式的設(shè)計(jì)。Activity是MVC中的Controller,Activity的ContentView則是MVC中的View。

      參考文獻(xiàn)

      [1]文璨.Android平臺(tái)網(wǎng)絡(luò)電視機(jī)的桌面系統(tǒng)與功能模塊的設(shè)計(jì)與實(shí)現(xiàn)[D].成都:電子科技大學(xué),2012.

      [2]楊豐盛.Android應(yīng)用開發(fā)揭秘[M].北京:機(jī)械工業(yè)出版社,2010.

      [3]李剛.瘋狂Android講義[M].北京:電子工業(yè)出版社,2011.

      [4]張領(lǐng),李根福,王敬杰.Android程序開發(fā)范例寶典[M].北京:人民郵電出版社, 2015.

      [5]張榮.Android開發(fā)與應(yīng)用[M].北京:人民郵電出版社,2014.

      锡林浩特市| 合川市| 岳池县| 平塘县| 星座| 徐水县| 句容市| 合水县| 临高县| 和平县| 元谋县| 昌邑市| 黄平县| 八宿县| 乌审旗| 岢岚县| 景谷| 广南县| 铜山县| 南阳市| 佛教| 中阳县| 仁布县| 五指山市| 依安县| 察隅县| 平塘县| 丰镇市| 南召县| 沁源县| 肥西县| 湘西| 姜堰市| 永靖县| 兰坪| 丰镇市| 务川| 定安县| 班玛县| 广东省| 聂拉木县|