成人在线亚洲_国产日韩视频一区二区三区_久久久国产精品_99国内精品久久久久久久

您的位置:首頁技術文章
文章詳情頁

java - Fragment中的上下滑動事件會被上一個Fragment響應而不是當前的

瀏覽:158日期:2024-02-21 09:43:02

問題描述

我當前開發一個安卓app,只有一個activity,布局文件是中有一個ViewPager,其適配器綁了三個Fragment。前兩個Fragment的布局文件都是最外層SwipeRefreshLayout用于下拉刷新,然后嵌套一個ScrollView,第三個也準備這么弄但是發現問題。

當我進入app默認顯示第一個Fragment時,上下滑動屏幕是有滑動效果的,然而切換到第二個Fragment滑動就沒效果。接著我發現,當我在第二個Fragment中滑動后,再切換回第一個Fragment,發現反而是第一個Fragment界面響應了我的滑動操作。于是我嘗試切換到第三個Fragment,滑動后迅速切換到第二個Fragment,果然其界面正在滑動。

我并不知道這個原因到底是什么,但我試了一個辦法:通過重載setUserVisibleHint(),一旦離開一個Fragment,直接把整個Fragment設成Invisible,以這種方式,的確實現了滑動操作被當前Fragment響應。但我還是弄不懂之前為什么會有那樣的情況——在第一個和第二個Fragment中滑動屏幕,都是第一個Fragment響應,在第三個Fragment中滑動屏幕,則是第二個Fragment響應滑動操作。

我想知道,究竟出了什么問題,是什么原因導致的,我怎么才能解決(不通過設置Visibility的方法強行實現)?

Fragment布局文件代碼(只給出一個,另一個類似):

<?xml version='1.0' encoding='utf-8'?><android.support.v4.widget.SwipeRefreshLayout xmlns:android='http://schemas.android.com/apk/res/android' xmlns:app='http://schemas.android.com/apk/res-auto' android: android:layout_width='match_parent' android:layout_height='match_parent'> <ScrollViewandroid: android:layout_width='match_parent'android:layout_height='match_parent'android:descendantFocusability='blocksDescendants'> <FrameLayoutandroid:layout_width='match_parent'android:layout_height='match_parent'><WebViewandroid: android:layout_width='match_parent'android:layout_height='wrap_content'android:alpha='0'/><ProgressBar android: android:layout_width='wrap_content' android:layout_height='wrap_content' android:layout_gravity='center' android:visibility='gone'/> </FrameLayout> </ScrollView></android.support.v4.widget.SwipeRefreshLayout>

問題解答

回答1:

問題解決了。。有一個信息在問題中沒有描述。那就是,我為了使ViewPager切換page時動畫為淡入淡出而不是默認的滑動,實現了ViewPager類的一個接口ViewPager.PageTransformer。然后,我在Activity中實例化這個類,并執行mViewPager.setPageTransformer(true, pageTransformer);就可以將切換動畫設置成我自己寫的動畫。問題就出在這個動畫上,一開始這個接口我是這么實現的:

import android.support.v4.view.ViewPager;import android.view.View;/**設置Fragment切換時的動畫為淡入淡出*/public class NoSlidingPageTransformer implements ViewPager.PageTransformer { private static final float MIN_ALPHA = 0.0f; //最小透明度 public void transformPage(View view, float position) {int pageWidth = view.getWidth(); //得到view寬if (position < -1) { // [-Infinity,-1) // This page is way off-screen to the left. 出了左邊屏幕 view.setAlpha(0);} else if (position <= 1) { // [-1,1] view.setTranslationX(-pageWidth * position); //阻止頁面的滑動 float alphaFactor = Math.max(MIN_ALPHA, 1 - Math.abs(position)); //透明度改變 view.setAlpha(alphaFactor); if (alphaFactor == 0)view.setVisibility(View.INVISIBLE); //頁面不在當前界面顯示,則使其Invisible,這句是為了解決Fragment對上下滑動事件監聽的錯亂,暫不知原因 else if (view.getVisibility() == View.INVISIBLE)view.setVisibility(View.VISIBLE); //頁面在當前界面顯示,則使其Visible,這句是為了解決Fragment對上下滑動事件監聽的錯亂,暫不知原因} else { // (1,+Infinity] // This page is way off-screen to the right. 出了右邊屏幕 view.setAlpha(0);} }}

其中這一段代碼是我臨時用來解決問題中描述的“靈異”現象的:

if (alphaFactor == 0) view.setVisibility(View.INVISIBLE); //頁面不在當前界面顯示,則使其Invisible,這句是為了解決Fragment對上下滑動事件監聽的錯亂,暫不知原因 else if (view.getVisibility() == View.INVISIBLE)view.setVisibility(View.VISIBLE); //頁面在當前界面顯示,則使其Visible,這句是為了解決Fragment對上下滑動事件監聽的錯亂,暫不知原因

問題在哪里呢?問題就在view.setTranslationX()這個函數上,這個函數所設置的view的位置,不僅僅是視覺上的,也是實際的位置,那么看我實現的這段代碼,在view離開當前界面的時候,position的值處于[-Infinity,-1]和[1,+Infinity]的時候,我并沒有用setTranslationX()將其位置設置到當前界面之外,而是還是與新出現的view在同一位置,只不過由于用setAlpha()設置了透明度才看不見的。我是怎么發現這個問題的呢?就是把這個類中的調用selAlpha()的代碼全注釋掉,再次運行,終于發現,當我切換Fragment的時候,會出現兩個Fragment重疊顯示的現象。現在我將這個類修改如下,問題解決(臨時代碼注釋掉了):

import android.support.v4.view.ViewPager;import android.view.View;/**設置Fragment切換時的動畫為淡入淡出*/public class NoSlidingPageTransformer implements ViewPager.PageTransformer { public void transformPage(View view, float position) {int pageWidth = view.getWidth(); //得到view寬if (position <= -1) { // [-Infinity,-1] // This page is way off-screen to the left. 出了左邊屏幕 view.setTranslationX(0);} else if (position < 1) { // (-1,1) view.setTranslationX(-pageWidth * position); //阻止頁面的滑動,位置在左則設向右偏移位置,在右則設向左偏移位置 float alphaFactor = 1 - Math.abs(position); //透明度改變 view.setAlpha(alphaFactor); /* if (alphaFactor == 0)view.setVisibility(View.INVISIBLE); //頁面不在當前界面顯示,則使其Invisible,這句是為了解決Fragment對上下滑動事件監聽的錯亂,暫不知原因 else if (view.getVisibility() == View.INVISIBLE)view.setVisibility(View.VISIBLE); //頁面在當前界面顯示,則使其Visible,這句是為了解決Fragment對上下滑動事件監聽的錯亂,暫不知原因*/} else { // [1,+Infinity] // This page is way off-screen to the right. 出了右邊屏幕 view.setTranslationX(0);} }}

標簽: java
相關文章:
成人在线亚洲_国产日韩视频一区二区三区_久久久国产精品_99国内精品久久久久久久
国产一区不卡在线| 91精品欧美一区二区三区综合在 | 色综合一个色综合亚洲| 91精品国产综合久久久蜜臀粉嫩 | 欧美日韩成人一区二区| 一区二区三区精品视频| 亚洲国产欧美国产综合一区| 亚洲国产高清aⅴ视频| 97精品久久久久中文字幕| 91麻豆精品国产自产在线 | 久久国产精品色婷婷| 一本久道久久久| 综合激情网...| 国内精品视频在线播放| 国产免费观看久久| 欧美片网站免费| 欧美精彩视频一区二区三区| 91丝袜呻吟高潮美腿白嫩在线观看| 精品国产乱码久久久久久1区2区 | 精品第一国产综合精品aⅴ| 国产精品亚洲综合一区在线观看| 欧美军同video69gay| 久久66热偷产精品| 欧美日韩亚洲综合在线| 国产在线播精品第三| 欧美一区二区精品| 粉嫩aⅴ一区二区三区四区五区| 欧美一区二区在线不卡| 成人动漫视频在线| 欧美精品一区二区三区蜜桃| 99re这里只有精品首页| 国产午夜亚洲精品午夜鲁丝片| 99精品偷自拍| 国产欧美日韩视频在线观看| 欧美日韩免费观看一区=区三区| 国产精品美日韩| 日韩午夜一区| 偷偷要91色婷婷| 欧美午夜精品久久久| 国产乱一区二区| 精品国产露脸精彩对白| 欧美日韩蜜桃| 亚洲精品成人少妇| 欧美专区日韩专区| 大胆欧美人体老妇| 国产精品免费久久久久| 国产日韩欧美一区二区三区在线观看 | 日本欧洲一区二区| 欧美精品亚洲一区二区在线播放| 国产98色在线|日韩| 国产日韩av一区二区| 日韩一级精品| 麻豆一区二区在线| 欧美成人精品福利| 欧美三级视频| 亚洲无线码一区二区三区| 在线观看不卡一区| 狠狠色丁香久久婷婷综合_中 | 日本亚洲电影天堂| 欧美一级淫片007| 国产精品一区二区久久精品爱涩 | 一区二区三区欧美亚洲| 欧美亚洲动漫精品| 99久久精品国产一区| 亚洲美女视频在线观看| 色av综合在线| 成人综合在线网站| 亚洲男人的天堂av| 色欧美乱欧美15图片| 国产99久久久久| 欧美激情一二三区| 免费久久久一本精品久久区| 精品一区二区三区欧美| 久久久精品天堂| 国产精品一区在线观看| 激情成人综合网| 国产精品成人一区二区三区夜夜夜| 久久久999| 成人一级黄色片| 樱花影视一区二区| 欧美一区二区视频免费观看| 激情综合电影网| 看片的网站亚洲| 欧美国产乱子伦| 欧美性xxxxx极品少妇| 91在线视频在线| 日韩黄色在线观看| 久久久精品国产免大香伊| 午夜一区二区三视频在线观看| 国产成人免费高清| 一区二区三区四区在线免费观看| 欧美伦理视频网站| 在线观看视频免费一区二区三区| 激情深爱一区二区| 一区二区三区日韩精品视频| 日韩精品一区二区三区视频在线观看 | 欧美日韩一区在线视频| 免费久久99精品国产| 日本一区二区综合亚洲| 欧美性生活久久| 亚洲性人人天天夜夜摸| 国产精品一区二区三区乱码| 亚洲精品少妇30p| 欧美mv日韩mv国产| 色婷婷亚洲综合| 亚洲黄色免费| 99九九99九九九视频精品| 日本伊人精品一区二区三区观看方式| 欧美国产日韩a欧美在线观看| 91精品国产高清一区二区三区| 国产伦精品一区二区三区| 色综合天天狠狠| 国内成人精品2018免费看| 一区二区三区在线视频观看| 精品99一区二区| 欧美这里有精品| 一区二区三区四区五区精品| 99国产精品久| 国内精品视频666| 亚洲已满18点击进入久久| 久久品道一品道久久精品| 欧美日韩一级大片网址| 亚洲精品一级| 99精品欧美一区| 国内精品写真在线观看| 午夜精品视频在线观看| 一色屋精品亚洲香蕉网站| 26uuu精品一区二区| 久久精品九九| 女人天堂亚洲aⅴ在线观看| 国产精品99久久久久久久女警 | 国产私拍一区| 亚洲欧美伊人| 成人深夜视频在线观看| 蜜臀久久99精品久久久久宅男 | 欧美精品v日韩精品v国产精品| 国产激情视频一区二区在线观看| 首页国产欧美久久| 亚洲曰韩产成在线| 亚洲欧洲日本在线| 国产丝袜欧美中文另类| 日韩午夜激情视频| 欧美日韩视频第一区| 久热精品在线| 久久精品主播| 国产伦精品一区二区三区视频孕妇| 激情欧美亚洲| 欧美成人国产| 成人激情午夜影院| 国产乱人伦精品一区二区在线观看 | 亚洲色图色小说| 欧美极品少妇xxxxⅹ高跟鞋| 欧美精品一区二区三区蜜桃| 91精品国产91热久久久做人人| 欧美色精品天天在线观看视频| 久久久久se| 亚洲综合不卡| 亚洲精品在线免费| 亚洲无线观看| 欧美日韩天天操| 欧美久久在线| 欧美另类亚洲| 国产精品二区在线| 国产精品yjizz| 欧美日韩精品免费观看视频完整 | 国产精品影视在线| 精品在线免费视频| 蓝色福利精品导航| 精品一区二区免费在线观看| 日韩激情av在线| 日韩中文字幕区一区有砖一区| 亚洲成国产人片在线观看| 亚洲一区二区偷拍精品| 一区二区三区欧美久久| 亚洲国产综合在线| 午夜精品久久久久久久久久久 | 日韩久久久久久| 精品国产免费一区二区三区四区| 精品久久国产老人久久综合| 久久综合视频网| 中文字幕乱码久久午夜不卡| 国产精品天美传媒沈樵| 综合精品久久久| 亚洲午夜精品在线| 日韩在线a电影| 蓝色福利精品导航| 国产成人在线影院| 91麻豆swag| 亚洲精品少妇| 老司机精品福利视频| 欧美日韩一二三| 日韩欧美中文字幕一区| 久久久综合激的五月天| 中国色在线观看另类| 亚洲视频一二区| 亚洲成av人片一区二区| 日韩成人av影视| 韩国女主播成人在线| 成人激情小说网站| 欧美日韩1区2区3区|