国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 系統(tǒng) > Android > 正文

Android 實現(xiàn)局部圖片滑動指引效果

2019-12-12 03:54:33
字體:
供稿:網(wǎng)友

Android 實現(xiàn)局部圖片滑動指引效果

而ViewPager的事件監(jiān)聽器代碼如下:

  // 滑動頁面更改事件監(jiān)聽器  private class ImagePageChangeListener implements OnPageChangeListener {    @Override     public void onPageScrollStateChanged(int arg0) {       // TODO Auto-generated method stub      }      @Override     public void onPageScrolled(int arg0, float arg1, int arg2) {       // TODO Auto-generated method stub      }      @Override     public void onPageSelected(int index) {       pageIndex = index;      slideLayout.setPageIndex(index);      tvSlideTitle.setText(parser.getSlideTitles()[index]);            for (int i = 0; i < imageCircleViews.length; i++) {         imageCircleViews[index].setBackgroundResource(R.drawable.dot_selected);                if (index != i) {           imageCircleViews[i].setBackgroundResource(R.drawable.dot_none);         }       }    }   } 

  事件監(jiān)聽器中主要在回調(diào)函數(shù)onPageSelected(int index)中變換標(biāo)題和圓點圖片。 

  由于滑動區(qū)域下方的內(nèi)容是不變的,也就是不滑動的,正如在我在上面提到的,內(nèi)容可能會超出屏幕的范圍,所以我們需要使用ScrollView以便內(nèi)容過多的時候顯示滾動條。可能一部分朋友會想到,要顯示滾動條我也知道使用ScrollView。我想在這里說的是,這里即有ViewPager控件,也有ScrollView,如果兩個View單獨使用不會有什么問題。然而不幸的是,兩個一結(jié)合使用就出現(xiàn)了問題。什么問題呢?就是在滑動圖片時出現(xiàn)反彈的現(xiàn)象,就是在滑動時很難滑動,我滑動時感覺很吃力,而且圖片就是滑動不過去,這個就是兩個View之間的沖突,因為兩個View都是滑動的View,都會計算相應(yīng)的位置和判斷相應(yīng)的距離。 

  我們?nèi)绾蝸斫鉀Q這個沖突呢?這里我們需要重寫ScrollView的onInterceptTouchEvent()回調(diào)函數(shù)。需要在程序里新加一個ScrollViewExtend類并繼承自ScrollView,下面是其代碼:

package com.image.indicator.control;import android.content.Context;import android.util.AttributeSet;import android.view.MotionEvent;import android.widget.ScrollView;/** * 能夠兼容ViewPager的ScrollView * @Description: 解決了ViewPager在ScrollView中的滑動反彈問題 * @File: ViewPagerCompatScrollView.java * @Package com.image.indicator.control * @Author Hanyonglu * @Date 2012-6-18 下午01:34:50 * @Version V1.0 */public class ScrollViewExtend extends ScrollView {  // 滑動距離及坐標(biāo)  private float xDistance, yDistance, xLast, yLast;  public ScrollViewExtend(Context context, AttributeSet attrs) {    super(context, attrs);  }  @Override  public boolean onInterceptTouchEvent(MotionEvent ev) {    switch (ev.getAction()) {      case MotionEvent.ACTION_DOWN:        xDistance = yDistance = 0f;        xLast = ev.getX();        yLast = ev.getY();        break;      case MotionEvent.ACTION_MOVE:        final float curX = ev.getX();        final float curY = ev.getY();                xDistance += Math.abs(curX - xLast);        yDistance += Math.abs(curY - yLast);        xLast = curX;        yLast = curY;                if(xDistance > yDistance){          return false;        }     }    return super.onInterceptTouchEvent(ev);  }}

感謝閱讀,希望能幫助到大家,謝謝大家對 本站的支持!

發(fā)表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發(fā)表
主站蜘蛛池模板: 托克逊县| 电白县| 星座| 湘潭县| 洛浦县| 安陆市| 凤庆县| 梁平县| 翁牛特旗| 慈利县| 青海省| 买车| 黔江区| 泸定县| 桂东县| 丰台区| 西吉县| 安仁县| 新源县| 建始县| 吉木乃县| 建平县| 边坝县| 临海市| 阜宁县| 东至县| 射洪县| 清河县| 新绛县| 香河县| 临漳县| 旺苍县| 龙游县| 滨海县| 红原县| 巴彦淖尔市| 九寨沟县| 津南区| 兴化市| 东安县| 南靖县|