国产日韩欧美一区二区三区三州_亚洲少妇熟女av_久久久久亚洲av国产精品_波多野结衣网站一区二区_亚洲欧美色片在线91_国产亚洲精品精品国产优播av_日本一区二区三区波多野结衣 _久久国产av不卡

?

Android系統(tǒng)中使用ViewPager實(shí)現(xiàn)畫廊效果的應(yīng)用

2015-12-07 15:20:30溫曉宇宋偉奇
電腦知識(shí)與技術(shù) 2015年6期
關(guān)鍵詞:畫廊

溫曉宇 宋偉奇

摘要:在Android應(yīng)用中用戶少不了要使用照片瀏覽應(yīng)用軟件,但在該類應(yīng)用的開發(fā)中不少開發(fā)者還在使用Gallery畫廊組件實(shí)現(xiàn)。這樣既容易造成無(wú)法控制每次滑動(dòng)只滑動(dòng)一頁(yè),也容易導(dǎo)致無(wú)法修改第一項(xiàng)與Gallery的左邊距,影響用戶交互的體驗(yàn)。該文將介紹如何使用ViewPager組件解決上面的問(wèn)題。

關(guān)鍵詞:ViewPager組件;頁(yè)面布局;畫廊

中圖分類號(hào):TP37 文獻(xiàn)標(biāo)識(shí)碼:A 文章編號(hào):1009-3044(2015)06-0207-01

1 概述

在早期Android應(yīng)用開發(fā)中,不少相冊(cè)瀏覽應(yīng)用都使用Gallery畫廊組件實(shí)現(xiàn)。但是,在使用Gallery的時(shí)候大家會(huì)發(fā)現(xiàn)有幾個(gè)問(wèn)題:一是無(wú)法控制每次滑動(dòng)只滑動(dòng)一頁(yè),二是Gallery默認(rèn)第一個(gè)item居中,無(wú)法修改它與Gallery的左間距。在最新的Android API中,開發(fā)者可以使用ViewPager組件及android:clipChildren屬性解決這個(gè)問(wèn)題,在屏幕上顯示多個(gè)Fragment。

2 ViewPager組件簡(jiǎn)介

ViewPager組件用于實(shí)現(xiàn)多頁(yè)面的切換效果。ViewPager是android擴(kuò)展包v4包中的類,這個(gè)類可以讓用戶左右切換當(dāng)前的view。在使用ViewPager時(shí)需要注意幾點(diǎn)::

1)ViewPager類直接繼承了ViewGroup類,所有它是一個(gè)容器類,可以在其中添加其他的view類。

2)ViewPager類需要一個(gè)PagerAdapter適配器類給它提供數(shù)據(jù)。

3)ViewPager經(jīng)常和Fragment一起使用,并且提供了專門的FragmentPagerAdapter和FragmentStatePagerAdapter類供Fragment中的ViewPager使用。

在編寫ViewPager的應(yīng)用時(shí),還需要使用兩個(gè)組件類分別是PagerTitleStrip類和PagerTabStrip類,PagerTitleStrip類直接繼承自ViewGroup類,而PagerTabStrip類繼承PagerTitleStrip類,所以這兩個(gè)類也是容器類。但是有一點(diǎn)需要注意,在定義XML的layout的時(shí)候,這兩個(gè)類必須是ViewPager標(biāo)簽的子標(biāo)簽。

3 使用ViewPager實(shí)現(xiàn)畫廊效果

要實(shí)現(xiàn)相冊(cè)軟件中的畫廊效果,開發(fā)應(yīng)用時(shí)應(yīng)包括兩個(gè)步驟,一是設(shè)計(jì)UI界面,二是編寫實(shí)現(xiàn)功能的Java類。

3.1 定義xml布局頁(yè)面

在Android項(xiàng)目中,在相關(guān)布局頁(yè)面中需要導(dǎo)入Android擴(kuò)展包,并添加ViewPager組件,設(shè)置其寬、高、id、layout_gravity和clipChildren屬性。參考設(shè)計(jì)代碼如圖1。

發(fā)現(xiàn)上面的RelativeLayout(可以用其他layout替換)和ViewPager的android:clipChildren都設(shè)置為了false。android:clipChildren表示是否限制子View在其范圍內(nèi),在animations動(dòng)畫以及本文的情況下可以發(fā)揮很大的作用。默認(rèn)為true。

3.2 實(shí)現(xiàn)Java類

在編寫實(shí)現(xiàn)畫廊效果的Java類時(shí),主要使用了ViewPager類對(duì)象及其相關(guān)方法,并配合數(shù)據(jù)適配器PagerAdapter類,通過(guò)重寫該類的若干方法來(lái)實(shí)現(xiàn)數(shù)據(jù)的填充,實(shí)現(xiàn)照片的顯示。

a.ViewPager設(shè)置

需要setOnPageChangeListener,在onPageScrolled(int position, float positionOffset, int positionOffsetPixels)函數(shù)中不斷刷新layout。部分關(guān)鍵代碼如圖2。

setOffscreenPageLimit表示設(shè)置緩存,這樣左右拖動(dòng)即可看見(jiàn)后面的Fragment。setPageMargin表示設(shè)置Fragment之間的間距。

b. FrameLayout設(shè)置

需要在setOnTouchListener函數(shù)中將滑動(dòng)事件傳遞給viewPager,否則只有viewPager中間的view可以滑動(dòng),設(shè)置后整個(gè)viewPager都可以滑動(dòng)。部分關(guān)鍵代碼如圖3。

可能運(yùn)行后出現(xiàn)viewpager的部分Fragment無(wú)法看見(jiàn)或是突然消失的問(wèn)題,請(qǐng)確保RelativeLayout和ViewPager的android:clipChildren都設(shè)置為了false并且viewPager.setOffscreenPageLimit(TOTAL_COUNT);其中TOTAL_COUNT大于0. 當(dāng)然子Fragment本身不能是match_parent。viewpager設(shè)置了paddingTop也會(huì)導(dǎo)致無(wú)法實(shí)現(xiàn)畫廊而只是顯示一屏。

4 結(jié)束語(yǔ)

本文以Android平臺(tái)上用戶經(jīng)常使用的照片瀏覽軟件為例,介紹了使用ViewPager組件實(shí)現(xiàn)畫廊效果的方法,與使用傳統(tǒng)的Gallery組件相比,使用ViewPager組件更能提高用戶使用該類應(yīng)用的交互體驗(yàn)。

參考文獻(xiàn):

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

[2] Chris Haseman.Android應(yīng)用開發(fā)[M].北京:人民郵電出版社,2013.

[3] 王云林.Android應(yīng)用中跨版本集成新特性的研究與實(shí)現(xiàn)[D].上海:東華大學(xué)計(jì)算機(jī)系,2013.

猜你喜歡
畫廊
小小書畫廊
小小書畫廊
小小書畫廊
小小書畫廊
小小書畫廊
畫廊
畫廊
畫廊
小小書畫廊
畫廊
比如县| 奈曼旗| 龙口市| 海丰县| 法库县| 雷山县| 铁岭县| 新田县| 杂多县| 黄浦区| 和平区| 九龙坡区| 绥芬河市| 汝南县| 银川市| 云霄县| 荆州市| 怀化市| 大埔县| 聂拉木县| 察哈| 渭南市| 宜良县| 从化市| 闸北区| 沧州市| 乌鲁木齐县| 天长市| 岚皋县| 石棉县| 洪泽县| 清水县| 桃源县| 灵丘县| 尉氏县| 都安| 内黄县| 贵港市| 金川县| 贡嘎县| 化州市|