滑動(dòng)的時(shí)候動(dòng)態(tài)改變ImageView的scaleX和scaleY就好了。比如你滑動(dòng)100px需要方法1.5倍,那就在onScroll的時(shí)候計(jì)算出滑動(dòng)距離,設(shè)置相應(yīng)的scale。具體的可以參考下NoBoringActionbar,實(shí)現(xiàn)原理差不多。
成都創(chuàng)新互聯(lián)從2013年創(chuàng)立,是專業(yè)互聯(lián)網(wǎng)技術(shù)服務(wù)公司,擁有項(xiàng)目成都網(wǎng)站制作、網(wǎng)站建設(shè)、外貿(mào)網(wǎng)站建設(shè)網(wǎng)站策劃,項(xiàng)目實(shí)施與項(xiàng)目整合能力。我們以讓每一個(gè)夢(mèng)想脫穎而出為使命,1280元陜西做網(wǎng)站,已為上家服務(wù),為陜西各地企業(yè)和個(gè)人服務(wù),聯(lián)系電話:028-86922220
是要編寫一個(gè)這樣的功能么,android提供的API里面一般圖片都是Bitmap,可以通過Canvas.drawBItMap的方法在View進(jìn)行圖片的繪制,在方法中需要進(jìn)行傳入一個(gè)類型為Matrix的參數(shù),設(shè)置Martrix的一些參數(shù)就可以進(jìn)行圖片的放大的繪制,這只是顯示,也就是MVC中的View層,然后通過提供的一些觸摸函數(shù)的重寫并實(shí)現(xiàn)自己需要的一些功能,如拖動(dòng),實(shí)際上就是改變BitMap繪制的位置。關(guān)于觸摸的處理和圖片的繪制可以在網(wǎng)上進(jìn)行一些教程的搜索,我就不羅列了,最終就是需要通過控制函數(shù)來改變圖片的繪制方式,這也許就是你所需要的功能。
其實(shí)如果圖片像素比較高的話是不會(huì)影響他的清晰度的,一般都是用的bitmap位圖,矩陣像素。所以你要求圖片放大后還是很清晰,那么只能要求原圖片的像素比較高,而并不能通過其他的操作來實(shí)現(xiàn)清晰度的變化!
使用位圖(Bitmap)再重新繪制遍
//原位圖
Bitmap btm1 = BitmapFactory.decodeResource(Main.this.getResources(), R.drawable.hh);
BitmapDrawable bd1=BitmapDrawable(btm1);
imageView.setBackgroundDrawable(bd1);
放大后 滑動(dòng)時(shí)計(jì)算 圖片的邊是否在屏幕外,如果在屏幕外就可移動(dòng),比如 向上滑動(dòng),是想看圖片下面的部分,此時(shí)計(jì)算圖片的底邊是否在屏幕外,如果是,就可以向上移動(dòng)圖片。
Scaletype的設(shè)置的方式包括:
1、在layout xml中定義android:scaleType="CENTER"
2、或在代碼中調(diào)用imageView.setScaleType(ImageView.ScaleType.CENTER);
擴(kuò)展資料:
根據(jù)位深度,可將位圖分為1、4、8、16、24及32位圖像等。每個(gè)像素使用的信息位數(shù)越多,可用的顏色就越多,顏色表現(xiàn)就越逼真,相應(yīng)的數(shù)據(jù)量越大。
例如,位深度為 1 的像素位圖只有兩個(gè)可能的值(黑色和白色),所以又稱為二值位圖。位深度為 8 的圖像有 2^8(即 256)個(gè)可能的值。位深度為 8 的灰度模式圖像有 256 個(gè)可能的灰色值。
RGB圖像由三個(gè)顏色通道組成。8 位/通道的 RGB 圖像中的每個(gè)通道有 256 個(gè)可能的值,這意味著該圖像有 1600 萬個(gè)以上可能的顏色值。
有時(shí)將帶有 8 位/通道 (bpc) 的 RGB 圖像稱作 24 位圖像(8 位 x 3 通道 = 24 位數(shù)據(jù)/像素)。通常將使用24位RGB組合數(shù)據(jù)位表示的的位圖稱為真彩色位圖。
參考資料來源:百度百科-Bitmap
ImageView可以放大縮小,也可以通過Scaletype這個(gè)屬性來指定。
Scaletype的設(shè)置的方式包括:
1. 在layout xml中定義android:scaleType="CENTER"
2. 或在代碼中調(diào)用imageView.setScaleType(ImageView.ScaleType.CENTER);
Scaletype的取值和區(qū)別:
1. SetScaleType(ImageView.ScaleType.CENTER);
按圖片的原來size居中顯示,當(dāng)圖片長/寬超過View的長/寬,則截取圖片的居中部分顯示
2. SetScaleType(ImageView.ScaleType.CENTER_CROP);
按比例擴(kuò)大圖片的size居中顯示,使得圖片長(寬)等于或大于View的長(寬)
3. setScaleType(ImageView.ScaleType.CENTER_INSIDE);
將圖片的內(nèi)容完整居中顯示,通過按比例縮小或原來的size使得圖片長/寬等于或小于View的長/寬
4. setScaleType(ImageView.ScaleType.FIT_CENTER);
把圖片按比例擴(kuò)大/縮小到View的寬度,居中顯示
5. FIT_START, FIT_END在圖片縮放效果上與FIT_CENTER一樣,只是顯示的位置不同,F(xiàn)IT_START是置于頂部,F(xiàn)IT_CENTER居中,F(xiàn)IT_END置于底部。
在此就不給出示例了。
6. FIT_XY
不按比例縮放圖片,目標(biāo)是把圖片塞滿整個(gè)View。
ANDROID有一個(gè)放大鏡的圖標(biāo),你點(diǎn)擊加就放大,點(diǎn)擊減就縮小,或者用兩只手滑大滑小。