精品欧美一区二区三区在线观看 _久久久久国色av免费观看性色_国产精品久久在线观看_亚洲第一综合网站_91精品又粗又猛又爽_小泽玛利亚一区二区免费_91亚洲精品国偷拍自产在线观看 _久久精品视频在线播放_美女精品久久久_欧美日韩国产成人在线

Android Gallery實現3D相冊(附效果圖+Demo源碼)

移動開發 Android
本文主要是說說如何實現Gallery的3D顯示切換,Demo的代碼很多是基于網上一些現成效果,感謝這些分享成果的開發者。文中有Demo的下載,不清楚的可以把Demo下載下來,運行看看效果然后分析一下代碼。代碼不多,也不是很復雜。

今天因為要做一個設置開機畫面的功能,主要是讓用戶可以設置自己的開機畫面,應用層需要做讓用戶選擇開機畫面圖片的功能。所以需要做一個簡單的圖片瀏覽選擇程序。最后選用Gallery作為基本控件。加入了一些炫一點的元素,做成3D滑動效果。下面是Demo例子截圖:

 

這個效果網上已經很多人做出來了,只是這次需要用到,所以自己也實踐了一下(這里例子我也是根據網上一些資料編寫)。特意找了幾張美女圖片給大家養養眼,O(∩_∩)O哈!下面針對一些關鍵代碼進行簡要說明,需要做這方面東西的朋友可以看看。這篇文章是實用性文章,理論分析不多。

(PS:新建的QQ群,有興趣可以加入一起討論:Android群:322599434)

1、重載Gallery類

因為需要加入倒影和3D切換的效果,因此我們需要重載Gallery類,其中有兩個方法我們需要重寫,一個是onSizeChanged(),另外一個是getChildStaticTransformation()。下面我們看看onSizeChanged()需要做的事情。

  1. @Override 
  2.     protected void onSizeChanged(int w, int h, int oldw, int oldh)  
  3.     {    //重寫計算旋轉的中心 
  4.         mCoveflowCenter = getCenterOfCoverflow(); 
  5.         super.onSizeChanged(w, h, oldw, oldh); 
  6.     }  

上面主要做的事情就是在改變大小的時候,重新計算滑動切換時需要旋轉變化的中心。下面計算圖片位置時,會重新計算。

  1. protected boolean getChildStaticTransformation(View child, Transformation trans)  
  2.     {     //圖像的中心點和寬度 
  3.         final int childCenter = getCenterOfView(child); 
  4.         final int childWidth = child.getWidth(); 
  5.         int rotationAngle = 0
  6.  
  7.         trans.clear(); 
  8.         trans.setTransformationType(Transformation.TYPE_BOTH);        // alpha 和 matrix 都變換 
  9.  
  10.         if (childCenter == mCoveflowCenter)  
  11.         {            // 正中間的childView 
  12.             transformImageBitmap((ImageView) child, trans, 0);     
  13.         }  
  14.         else  
  15.         {                // 兩側的childView 
  16.             rotationAngle = (int) ( ( (float) (mCoveflowCenter - childCenter) / childWidth ) * mMaxRotationAngle ); 
  17.             if (Math.abs(rotationAngle) > mMaxRotationAngle)  
  18.             { 
  19.                 rotationAngle = (rotationAngle < 0) ? -mMaxRotationAngle : mMaxRotationAngle; 
  20.             }       //根據偏移角度對圖片進行處理,看上去有3D的效果。 
  21.             transformImageBitmap((ImageView) child, trans, rotationAngle); 
  22.         } 
  23.  
  24.         return true
  25.     } 

上面就是重載Gallery的時候,需要注意處理的事情,其實主要就是做圖形變化,效果圖里面的圖片斜著顯示就是這里處理的結果,目的就是讓人看上去有立體感。

2、編寫Adapter適配器

我們使用很多控件都涉及適配器,就是用來綁定數據源和目標控件的一個中間件。這里我們需要重載BaseAdapter作為我們Gallery的適配器。主要是處理源圖像,加入倒影,生成新的數據源圖片。

  1. public boolean createReflectedForAdapter()  
  2.     { 
  3.         final int reflectionGap = 4
  4.         final int Height = 200
  5.         int index = 0
  6.         for (Map<String, Object> map : list)  
  7.         { 
  8.             Integer id = (Integer) map.get("image"); 
  9.             // 獲取原始圖片 
  10.             Bitmap originalImage = BitmapFactory.decodeResource(mContext.getResources(), id);     
  11.             int width = originalImage.getWidth(); 
  12.             int height = originalImage.getHeight(); 
  13.             float scale = Height / (float)height; 
  14.              
  15.             Matrix sMatrix = new Matrix(); 
  16.             sMatrix.postScale(scale, scale); 
  17.             Bitmap miniBitmap = Bitmap.createBitmap(originalImage, 00
  18.                     originalImage.getWidth(), originalImage.getHeight(), sMatrix, true); 
  19.              
  20.             //是否原圖片數據,節省內存 
  21.             originalImage.recycle(); 
  22.  
  23.             int mwidth = miniBitmap.getWidth(); 
  24.             int mheight = miniBitmap.getHeight(); 
  25.             Matrix matrix = new Matrix(); 
  26.             // 圖片矩陣變換(從低部向頂部的倒影) 
  27.             matrix.preScale(1, -1);             
  28.             // 截取原圖下半部分 
  29.             Bitmap reflectionImage = Bitmap.createBitmap(miniBitmap, 0, mheight/2, mwidth, mheight/2, matrix, false); 
  30.             // 創建倒影圖片(高度為原圖3/2) 
  31.             Bitmap bitmapWithReflection = Bitmap.createBitmap(mwidth, (mheight + mheight / 2), Config.ARGB_8888);     
  32.             // 繪制倒影圖(原圖 + 間距 + 倒影) 
  33.             Canvas canvas = new Canvas(bitmapWithReflection);     
  34.             // 繪制原圖 
  35.             canvas.drawBitmap(miniBitmap, 00null);         
  36.             Paint paint = new Paint(); 
  37.             // 繪制原圖與倒影的間距 
  38.             canvas.drawRect(0, mheight, mwidth, mheight + reflectionGap, paint); 
  39.             // 繪制倒影圖 
  40.             canvas.drawBitmap(reflectionImage, 0, mheight + reflectionGap, null);     
  41.  
  42.             paint = new Paint(); 
  43.             // 線性漸變效果 
  44.             LinearGradient shader = new LinearGradient(0, miniBitmap.getHeight(), 0, bitmapWithReflection.getHeight() 
  45.                     + reflectionGap, 0x70ffffff0x00ffffff, TileMode.CLAMP); 
  46.             paint.setShader(shader);     
  47.             // 倒影遮罩效果 
  48.             paint.setXfermode(new PorterDuffXfermode(Mode.DST_IN));         
  49.             // 繪制倒影的陰影效果 
  50.             canvas.drawRect(0, mheight, mwidth, bitmapWithReflection.getHeight() + reflectionGap, paint);         
  51.             ImageView imageView = new ImageView(mContext);        // 設置倒影圖片 
  52.             imageView.setImageBitmap(bitmapWithReflection);         
  53.             imageView.setLayoutParams(new GalleryView.LayoutParams((int)(width * scale), 
  54.                     (int)(mheight * 3 / 2.0 + reflectionGap))); 
  55.             imageView.setScaleType(ScaleType.MATRIX); 
  56.             mImages[index++] = imageView; 
  57.         } 
  58.         return true
  59.     } 

 

上面其實就是一個圖片處理過程,主要做的事情就是生成倒影,效果圖里面底下是有倒影的。就是利用上面算法生成。我們在適配器添加圖片的時候,會把適配器原生圖片進行處理,加入倒影的效果。這個我們在圖片初始化的時候就可以調用處理,具體代碼可以查看Demo里面的代碼關系。

具體圖片滑動的過程,Gallery會幫我們處理好,我們要做的事情其實就是提供添加了特效的圖片數據源,以及處理3D顯示的變化效果,最后都會提供View作為顯示圖像給Gallery用來顯示。

今天主要是說說如何實現Gallery的3D顯示切換,Demo的代碼很多是基于網上一些現成效果,感謝這些分享成果的開發者。下面是Demo的下載,不清楚的可以把Demo下載下來,運行看看效果然后分析一下代碼。代碼不多,也不是很復雜。

Gallery3D例子代碼:Grallery3DTest2013-7-19.rar

責任編輯:閆佳明 來源: cnblogs
相關推薦

2010-06-09 10:13:40

OpenSUSE 3D

2021-09-16 07:52:18

SwiftUScroll效果

2022-09-19 19:16:42

輪播圖has

2023-05-26 07:08:05

CSS模糊實現文字

2025-05-29 06:48:51

前端偽3D

2021-08-30 06:20:39

CSS 技巧3D 效果

2010-06-09 16:21:10

OpenSUSE界面

2013-06-25 11:21:35

Android開發幻燈片效果Gallery

2012-07-18 20:59:40

jQuery

2009-05-13 08:13:37

SUSELinux 10.3Nvidia

2011-09-07 10:00:53

Ubuntu3D

2010-01-04 15:17:52

Ubuntu啟動

2021-11-08 06:02:17

CSS 技巧代碼重構

2009-04-03 08:33:59

Symbian諾基亞Photo Brows

2011-09-22 10:07:52

奧圖碼投影儀

2011-12-21 12:46:43

2013-01-30 16:15:40

adobeHTML5css3

2012-06-16 16:57:52

WebGL

2012-02-27 10:00:50

HTML 5
點贊
收藏

51CTO技術棧公眾號

国产91aaa| 久久久久免费视频| 色播五月综合网| 黄色av电影在线观看| 国产麻豆精品95视频| 欧美黄色性视频| 四虎国产精品成人免费入口| 日韩深夜福利网站| 午夜精品久久久久久久| 色大师av一区二区三区| www.色亚洲| 日韩精品乱码av一区二区| 久久精品人人爽| 国产麻豆xxxvideo实拍| 欧美风情在线视频| 亚洲不卡av一区二区三区| 日本一区二区三区www| 国产99999| 免费成人在线视频观看| 欧美日韩高清区| japanese中文字幕| 91九色鹿精品国产综合久久香蕉| 91国偷自产一区二区开放时间 | 免费黄色av网址| 日韩免费va| 亚洲444eee在线观看| 涩涩涩999| 手机福利小视频在线播放| 韩日精品视频一区| 国产精品xxx视频| 日韩和一区二区| 亚洲精品888| 国产小视频国产精品| 国产吃瓜黑料一区二区| 欧美aaaaaa| 色狠狠综合天天综合综合| 青青草视频国产| 免费在线毛片网站| 久久精品一区二区三区不卡 | 欧美一级淫片aaaaaaa视频| 澳门黄色一级片| 成人av资源电影网站| 日韩电视剧免费观看网站| 一级黄色大片免费看| 9999精品| 91麻豆精品国产91久久久久久久久| 99精品免费在线观看| av福利在线导航| 伊人一区二区三区| 色哟哟免费网站| 麻豆影视在线观看_| 中文一区二区在线观看| 欧美一区二区综合| 免费一级毛片在线观看| 91在线精品一区二区| 国产综合第一页| 无码国产伦一区二区三区视频 | 97久久夜色精品国产九色 | 亚洲高清黄色| 91豆麻精品91久久久久久| 色欲av无码一区二区人妻| 黄色视屏在线免费观看| 精品国产成人av| www黄色日本| 日本免费久久| 欧美揉bbbbb揉bbbbb| 少妇一级淫免费播放| 91成人app| 日韩欧美区一区二| 中国免费黄色片| 午夜精品福利影院| 国产丝袜一区二区三区免费视频| 精品无码人妻一区| 精品无人区麻豆乱码久久久| 中文字幕精品在线视频| 亚洲一区电影在线观看| 欧美在线视屏| 91超碰caoporn97人人| 区一区二在线观看| 美女mm1313爽爽久久久蜜臀| 91久久国产婷婷一区二区| www.五月激情| 91最新地址在线播放| 欧美日本韩国国产| 欧美三级电影一区二区三区| 亚洲图片有声小说| 国产乱子夫妻xx黑人xyx真爽| 欧美性片在线观看| 91精品欧美一区二区三区综合在 | 91精品国产自产精品男人的天堂 | 日本蜜桃在线观看| 亚洲最色的网站| 久久婷婷国产精品| 日韩毛片免费视频一级特黄| 欧美电影免费提供在线观看| 在线免费观看麻豆| 欧美aⅴ99久久黑人专区| 69av成年福利视频| 一区二区日韩在线观看| av不卡免费在线观看| 日韩三级电影| 国产精品扒开做爽爽爽的视频| 亚洲国产中文字幕在线视频综合| 麻豆传传媒久久久爱| 国产乱码精品一区二区三区亚洲人| 欧美精品一区二| 国产精品视频在| 亚洲毛片一区| 亚洲自拍高清视频网站| 国模精品一区二区| 亚洲电影一区二区| 中文字幕在线视频精品| 日韩mv欧美mv国产网站| 久久影视电视剧免费网站| 欧美大胆视频| 欧美日韩高清影院| 日本黄色动态图| 97欧美在线视频| 97福利一区二区| 国产内射老熟女aaaa∵| 91最新地址在线播放| 99亚洲国产精品| 成人激情视屏| 亚洲男人7777| 日韩激情在线播放| 国产精品亚洲第一| 三区精品视频| 成人av观看| 亚洲成人免费网站| 国产成人aa精品一区在线播放| 日本少妇久久久| 日韩免费va| 欧美一区二区三区系列电影| 一级片视频免费看| 在线视频精品| 91久久久久久久一区二区| 亚欧洲精品视频| 亚洲一区国产视频| japan高清日本乱xxxxx| 国产不卡av一区二区| 久久久噜噜噜久久中文字免| 一区二区日韩视频| 国产精品久久久久桃色tv| 日本三级免费观看| 窝窝社区一区二区| 91精品国产91久久久久| 黄色小视频免费观看| 亚洲天堂成人在线观看| 日韩欧美国产片| 日韩毛片视频| 国产精品一区二区久久| 成人免费高清在线播放| 91极品视觉盛宴| 娇妻被老王脔到高潮失禁视频| 一区二区三区午夜视频| 成人激情av在线| 永久免费在线观看视频| 欧美日韩视频在线一区二区| 女人裸体性做爰全过| 麻豆一区二区在线| 亚洲一区二区在线免费观看| 亚洲日本免费电影| 久久这里有精品视频| 国产又粗又猛又黄| 亚洲欧美色综合| 污色网站在线观看| 天天做综合网| 99久久国产免费免费| 男人天堂亚洲天堂| 精品少妇一区二区三区免费观看 | 国产特级黄色片| 一区二区三区不卡视频在线观看| 国产人妖在线观看| 亚洲美女91| 日本中文不卡| 亚洲国产天堂| 欧美精品18videos性欧美| 黄色福利在线观看| 狠狠爱在线视频一区| 中国女人特级毛片| 极品少妇xxxx精品少妇偷拍| 国产1区2区3区中文字幕| 久久久久高潮毛片免费全部播放| 日本亚洲欧洲色α| 欧美一级二级三级区| 日韩欧美久久一区| 中文字幕一区二区人妻电影| 欧美国产一区视频在线观看| 亚洲天堂一区二区在线观看| 激情综合激情| 久久综合九色综合网站| 亚洲第一会所001| 夜夜躁日日躁狠狠久久88av| 国产精品主播一区二区| 亚洲成人午夜电影| 欧美人妻一区二区三区| 国产精品系列在线观看| 精品国产成人av在线免| 中文字幕一区二区精品区| 久久久神马电影| www.黄色小说.com| 91传媒视频在线播放| 五月婷婷一区二区| 国产亲近乱来精品视频| 成年人看片网站| 日韩精品亚洲一区| 霍思燕三级露全乳照| 日韩av有码| 久久久久无码国产精品一区| 欧美在线se| 青青精品视频播放| 肉肉视频在线观看| 中文字幕久久久| 亚洲av成人精品一区二区三区在线播放| 欧美精品一卡两卡| 在线观看污污网站| 香蕉成人伊视频在线观看| www.99re6| 久久精品视频免费| 性折磨bdsm欧美激情另类| 麻豆国产一区二区| 中文字幕无码不卡免费视频| 伊人久久亚洲热| 青春草在线视频免费观看| 精品一区电影| 欧美日韩国产一二| 欧美wwwwww| 国产91视觉| 精品视频在线观看免费观看| 国产精品丝袜视频| 日韩大尺度黄色| 2020欧美日韩在线视频| 国产盗摄一区二区| 欧美大片第1页| h片在线免费| 成人97在线观看视频| 97视频精彩视频在线观看| 亚洲精品一区二区三区婷婷月| 午夜精品无码一区二区三区| 91精品国产综合久久婷婷香蕉| 少妇又紧又色又爽又刺激视频| 欧美性色xo影院| 少妇一级淫片免费放中国| 亚洲国产日韩在线一区模特| 精品97人妻无码中文永久在线| 亚洲色图欧美在线| 老司机成人免费视频| 国产精品毛片久久久久久久| 99精品全国免费观看| 欧美极品美女视频| ass极品国模人体欣赏| 国产精品丝袜久久久久久app| 四季av中文字幕| 国产精品成人在线观看| 三级黄色录像视频| 亚洲激情一二三区| 国产亚洲第一页| 午夜电影久久久| 一级成人黄色片| 在线看不卡av| 91久久精品国产91性色69| 777色狠狠一区二区三区| 国产高清免费在线观看| 精品国产乱码久久久久久牛牛| 日日躁夜夜躁白天躁晚上躁91| 亚洲国产欧美一区二区丝袜黑人| 色视频在线观看免费| 亚洲一区999| 日本高清视频在线播放| 久久99热精品这里久久精品| 精精国产xxxx视频在线野外 | 樱空桃在线播放| 国产字幕视频一区二区| av高清在线免费观看| 午夜在线一区二区| 999精彩视频| 国产经典欧美精品| 国产ts丝袜人妖系列视频| 国产区在线观看成人精品| 久久99久久99精品免费看小说| 一区二区三区精品视频| 天天操天天摸天天干| 欧美日韩一级大片网址| 亚洲经典一区二区| 亚洲人成啪啪网站| 1区2区在线观看| 日本精品视频网站| 在线免费成人| 国产综合 伊人色| 欧美h版在线| 青娱乐自拍偷拍| 精品一区二区三区免费播放| 日本少妇xxxx| 国产精品伦一区二区三级视频| 久久久久久久久久久97| 91久久精品一区二区二区| 亚洲综合视频在线播放| 亚洲精品97久久| 国产精品久久麻豆| 欧美亚洲另类视频| 懂色av色香蕉一区二区蜜桃| 久久久久久久有限公司| 91tv精品福利国产在线观看| 国产精品宾馆在线精品酒店| 国产一区在线观看视频| 中文字幕第4页| 亚洲第一福利视频在线| 国产精品久久久久精| 亚洲码在线观看| 黄色小说在线播放| 国产欧美精品在线| 欧美美乳视频| 性欧美大战久久久久久久| 久久www免费人成看片高清| 亚洲蜜桃精久久久久久久久久久久| 综合电影一区二区三区| 亚洲不卡在线视频| 亚洲国产精品久久久久秋霞不卡| 国产福利在线播放麻豆| 国产精品成人久久久久| 欧美a级网站| www.射射射| 国产成人亚洲综合a∨婷婷| 亚洲区一区二区三| 在线观看av一区二区| 神马精品久久| 午夜精品久久久久久久久久久久久| 久久久91麻豆精品国产一区| 亚洲精品二区| 日韩激情一区二区| 熟女俱乐部一区二区视频在线| 亚洲高清久久久| 午夜精品久久久久久久爽| 久久国产精品久久久久久久久久| 欧美日韩伦理一区二区| 日本一区不卡| 日韩精品三区四区| 国产亚洲精品熟女国产成人| 日韩欧美在线字幕| 亚洲 美腿 欧美 偷拍| 国产最新精品视频| 久久亚洲道色| av免费观看网| 91麻豆免费观看| 国产91精品看黄网站在线观看| 亚洲精美色品网站| 国产免费拔擦拔擦8x在线播放| 国产精品永久入口久久久| 亚洲视频精品| 中文字幕影片免费在线观看| 无吗不卡中文字幕| 亚洲色图另类小说| 欧美做受高潮1| 精品盗摄女厕tp美女嘘嘘| 毛葺葺老太做受视频| 国产色综合一区| 国产女优在线播放| 精品国产一区二区三区久久久 | 久久99热只有频精品91密拍| 国产视频一区欧美| av网站免费在线看| 欧美少妇一区二区| 老司机午夜在线| 国产精品初高中精品久久| 亚洲国产国产亚洲一二三| 国产又黄又粗又猛又爽的视频| 色诱视频网站一区| 91ph在线| 国产精品12| 久久国产毛片| 亚洲区一区二区三| 精品国产免费久久| 日韩欧美看国产| 中文字幕一区二区三区有限公司 | 视频精品一区二区| 我不卡一区二区| 欧美一级二级三级乱码| 成人女同在线观看| 青青成人在线| 国产在线观看一区二区| 影音先锋男人资源在线观看| 欧美成人女星排名| 欧美香蕉视频| 黄色影视在线观看| 成人性生交大片免费看中文网站| 综合网在线观看| 久久在线视频在线| 丝袜美腿综合| www.偷拍.com| 日韩欧美一区二区在线| 黄色片网站在线| 久久涩涩网站| 国产一区二区三区国产| 超碰超碰超碰超碰| 欧美成人激情视频| 国产精品欧美在线观看| 99热这里只有精品2| 色狠狠av一区二区三区| 日本色护士高潮视频在线观看| 欧美日韩精品免费在线观看视频|