Android 實(shí)現(xiàn)局部圖片滑動(dòng)指引效果
Android 實(shí)現(xiàn)局部圖片滑動(dòng)指引效果
而ViewPager的事件監(jiān)聽器代碼如下:
// 滑動(dòng)頁面更改事件監(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)題和圓點(diǎn)圖片。
由于滑動(dòng)區(qū)域下方的內(nèi)容是不變的,也就是不滑動(dòng)的,正如在我在上面提到的,內(nèi)容可能會(huì)超出屏幕的范圍,所以我們需要使用ScrollView以便內(nèi)容過多的時(shí)候顯示滾動(dòng)條。可能一部分朋友會(huì)想到,要顯示滾動(dòng)條我也知道使用ScrollView。我想在這里說的是,這里即有ViewPager控件,也有ScrollView,如果兩個(gè)View單獨(dú)使用不會(huì)有什么問題。然而不幸的是,兩個(gè)一結(jié)合使用就出現(xiàn)了問題。什么問題呢?就是在滑動(dòng)圖片時(shí)出現(xiàn)反彈的現(xiàn)象,就是在滑動(dòng)時(shí)很難滑動(dòng),我滑動(dòng)時(shí)感覺很吃力,而且圖片就是滑動(dòng)不過去,這個(gè)就是兩個(gè)View之間的沖突,因?yàn)閮蓚€(gè)View都是滑動(dòng)的View,都會(huì)計(jì)算相應(yīng)的位置和判斷相應(yīng)的距離。
我們?nèi)绾蝸斫鉀Q這個(gè)沖突呢?這里我們需要重寫ScrollView的onInterceptTouchEvent()回調(diào)函數(shù)。需要在程序里新加一個(gè)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中的滑動(dòng)反彈問題
* @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 {
// 滑動(dòng)距離及坐標(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);
}
}
感謝閱讀,希望能幫助到大家,謝謝大家對(duì) 本站的支持!
- Android自定義ImageView實(shí)現(xiàn)在圖片上添加圖層效果
- Android中從圖庫中選取圖片實(shí)例詳解
- Android ViewPager實(shí)現(xiàn)圖片輪翻效果
- Android編程實(shí)現(xiàn)支持拖動(dòng)改變位置的圖片中疊加文字功能示例
- Android中超大圖片無法顯示的問題解決
- Android自定義組件獲取本地圖片和相機(jī)拍照?qǐng)D片
- android自定義ImageView仿圖片上傳示例
- Android ViewPager加載圖片效果
- Android百度地圖應(yīng)用之圖層展示
- Android編程實(shí)現(xiàn)圖片背景漸變切換與圖層疊加效果
相關(guān)文章
Android用tabhost實(shí)現(xiàn) 界面切換,每個(gè)界面為一個(gè)獨(dú)立的activity操作
這篇文章主要介紹了Android用tabhost實(shí)現(xiàn) 界面切換,每個(gè)界面為一個(gè)獨(dú)立的activity操作,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧2020-09-09
說說Android的UI刷新機(jī)制的實(shí)現(xiàn)
這篇文章主要介紹了說說Android的UI刷新機(jī)制的實(shí)現(xiàn),文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2020-03-03
Android DrawLayout結(jié)合ListView用法實(shí)例
這篇文章主要介紹了Android DrawLayout結(jié)合ListView用法實(shí)例,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2020-09-09
如何利用Flutter實(shí)現(xiàn)酷狗流暢Tabbar效果
這篇文章主要給大家介紹了關(guān)于如何利用Flutter實(shí)現(xiàn)酷狗流暢Tabbar效果的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2022-02-02
Android實(shí)現(xiàn)訂單倒計(jì)時(shí)功能
這篇文章主要為大家詳細(xì)介紹了Android實(shí)現(xiàn)訂單倒計(jì)時(shí)的相關(guān)資料,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2017-01-01

