欧美三级国产三级日韩三级_亚洲熟妇丰满大屁股熟妇_欧美亚洲成人一区二区三区_国产精品久久久久久模特

HorizontalScrollView實(shí)現(xiàn)多頁(yè)左右滑動(dòng) - 新聞資訊 - 云南小程序開(kāi)發(fā)|云南軟件開(kāi)發(fā)|云南網(wǎng)站建設(shè)-昆明葵宇信息科技有限公司

159-8711-8523

云南網(wǎng)建設(shè)/小程序開(kāi)發(fā)/軟件開(kāi)發(fā)

知識(shí)

不管是網(wǎng)站,軟件還是小程序,都要直接或間接能為您產(chǎn)生價(jià)值,我們?cè)谧非笃湟曈X(jué)表現(xiàn)的同時(shí),更側(cè)重于功能的便捷,營(yíng)銷的便利,運(yùn)營(yíng)的高效,讓網(wǎng)站成為營(yíng)銷工具,讓軟件能切實(shí)提升企業(yè)內(nèi)部管理水平和效率。優(yōu)秀的程序?yàn)楹笃谏?jí)提供便捷的支持!

您當(dāng)前位置>首頁(yè) » 新聞資訊 » 技術(shù)分享 >

HorizontalScrollView實(shí)現(xiàn)多頁(yè)左右滑動(dòng)

發(fā)表時(shí)間:2020-10-19

發(fā)布人:葵宇科技

瀏覽次數(shù):105


先上圖看看效不雅:
[img]http://img.blog.csdn.net/20150104145052515
上代碼:
PageView是封裝后的一個(gè)類,持續(xù)了HorizontalScrollView。
package com.miquan;

import android.content.Context;
import android.util.AttributeSet;
import android.util.DisplayMetrics;
import android.view.MotionEvent;
import android.view.View;
import android.widget.HorizontalScrollView;
import android.widget.LinearLayout;

/**
 * 具體看博客:http://blog.csdn.net/qiantujava/article/details/42392127
 */
public class PageView extends HorizontalScrollView {
	private int mBaseScrollX;//滑動(dòng)基線。也就是點(diǎn)擊并滑動(dòng)之前的x值,以此值計(jì)算相對(duì)滑動(dòng)距離。
	private int mScreenWidth;
	private int mScreenHeight;
	
	private LinearLayout mContainer;
	private boolean flag;
	private int mPageCount;//頁(yè)面數(shù)量
	
	private int mScrollX = 200;//滑動(dòng)多長(zhǎng)距離翻頁(yè)
	
	public PageView(Context context, AttributeSet attrs) {
		super(context, attrs);

		DisplayMetrics dm = context.getApplicationContext().getResources()
				.getDisplayMetrics();
		mScreenWidth = dm.widthPixels;
		mScreenHeight = dm.heightPixels;
	}
	
	/**
	 * 添加一個(gè)頁(yè)面到最后。
	 * @param page
	 */
	public void addPage(View page) {
		addPage(page, -1);
	}
	
	/**
	 * 添加一個(gè)頁(yè)面。
	 * @param page
	 */
	public void addPage(View page, int index) {
		if(!flag) {
			mContainer = (LinearLayout) getChildAt(0);
			flag = true;
		}
		LinearLayout.LayoutParams params = new LinearLayout.LayoutParams(mScreenWidth, mScreenHeight);
		if(index == -1) {
			mContainer.addView(page, params);
		} else {
			mContainer.addView(page, index, params);
		}
		mPageCount++;
	}
	
	/**
	 * 移除一個(gè)頁(yè)面。
	 * @param index
	 */
	public void removePage(int index) {
		if(mPageCount < 1) {
			return;
		}
		if(index<0 || index>mPageCount-1) {
			return;
		}
		mContainer.removeViewAt(index);
		mPageCount--;
	}
	
	/**
	 * 移除所有的頁(yè)面
	 */
	public void removeAllPages() {
		if(mPageCount > 0) {
			mContainer.removeAllViews();
		}
	}
	
	/**
	 * 獲取頁(yè)面數(shù)量
	 * @return
	 */
	public int getPageCount() {
		return mPageCount;
	}
	
	/**
	 * 獲取相對(duì)滑動(dòng)地位。由右向左滑動(dòng),返回正值;由左向右滑動(dòng),返回負(fù)值。
	 * @return
	 */
	private int getBaseScrollX() {
		return getScrollX() - mBaseScrollX;
	}
	
	/**
	 * 使相對(duì)于基線移動(dòng)x距離。
	 * @param x x為正值時(shí)右移;為負(fù)值時(shí)左移。
	 */
	private void baseSmoothScrollTo(int x) {
		smoothScrollTo(x + mBaseScrollX, 0);
	}

	@Override
	public boolean onTouchEvent(MotionEvent ev) {
		int action = ev.getAction();
		switch (action) {
		case MotionEvent.ACTION_UP:
			int scrollX = getBaseScrollX();
			//左滑,大年夜于一半,移到下一頁(yè)
			if (scrollX > mScrollX) {
				baseSmoothScrollTo(mScreenWidth);
				mBaseScrollX += mScreenWidth;
			} 
			//左滑,不到一半,返回原位
			else if (scrollX > 0) {
				baseSmoothScrollTo(0);
			} 
			//右滑,不到一半,返回原位
			else if(scrollX > -mScrollX) {
				baseSmoothScrollTo(0);
			} 
			//右滑,大年夜于一半,移到下一頁(yè)
			else {
				baseSmoothScrollTo(-mScreenWidth);
				mBaseScrollX -= mScreenWidth;
			}
			return true;
		}
		return super.onTouchEvent(ev);
	}
}

接下來(lái)是構(gòu)造,fragment_main.xml:
<LinearLayout  
    xmlns:android="http://schemas.android.com/apk/res/android"  
    android:layout_width="fill_parent"  
    android:layout_height="fill_parent"  
    >
    <!-- pageview瑯綾擎必須有LinearLayout,這個(gè)寫逝世了。 -->
	<com.example.testandrid.PageView 
	    android:id="@+id/pageview"
	    android:layout_width="wrap_content"  
	    android:layout_height="fill_parent"  
	    android:scrollbars="none" >  
		    <LinearLayout
		        android:layout_width="wrap_content"  
		        android:layout_height="fill_parent"  
		        android:orientation="horizontal" >
		    </LinearLayout>
	</com.example.testandrid.PageView> 
</LinearLayout>

最后在Activity瑯綾擎調(diào)用久煨。
package com.example.testandrid;

import android.app.Activity;
import android.graphics.Color;
import android.os.Bundle;
import android.view.LayoutInflater;
import android.widget.LinearLayout;

public class MainActivity extends Activity {
	private LayoutInflater inflater;
	private PageView mPageView;

	@Override
	public void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.fragment_main);
		
		inflater = LayoutInflater.from(this);
		mPageView = (PageView) findViewById(R.id.pageview);
		
		//增長(zhǎng)幾個(gè)頁(yè)面
		LinearLayout layout = new LinearLayout(this);
		layout.setBackgroundColor(Color.BLUE);
		mPageView.addPage(layout);
		
		LinearLayout layout2 = new LinearLayout(this);
		layout2.setBackgroundColor(Color.YELLOW);
		mPageView.addPage(layout2);
		
		//這里就是個(gè)通俗的xml構(gòu)造文件
		LinearLayout view = (LinearLayout) inflater.inflate(R.layout.page1, null);
		mPageView.addPage(view);
		
		//刪除一個(gè)頁(yè)面
//		mPageView.removePage(1);
	}
}

代率攀瑯綾擎的注釋根本上都很清跋扈了,不多說(shuō)。

相關(guān)案例查看更多