三年中文在线观看免费大全_三年大片免费高清哔哩哔哩_三年在线观看免费大全哔哩_三年大全免费大片三年大片_三年在线观看免费大全_三年大片观看免费大全哔哩哔哩_三年中文在线观看免费高清第4版_三年中文免费视频大全_三年大片大全免费观看大全_三年大片在线观看哔哩哔哩_三年在线观看中文免费观看_三年成都中文在线观看免费版

自(zì)定義橫向的(de)ScrollView - 新聞資訊 - 雲南(nán)小(xiǎ‍≥o)程序開(kāi)發|雲南(nán)軟件(jiànβφ∑)開(kāi)發|雲南(nán)網站(zhàn)建設-雲南維串信息科技有限公司

159-8711-8523

雲南(nán)網建設/小(xiǎo)程序開(kāi)發/軟件(jiàn)開(kāi)發

知(zhī)識

不(bù)管是(shì)網站(zhàn),軟件β±δ(jiàn)還(hái)是(shì)小(xiǎo)程δε序,都(dōu)要(yào)直接或間(jiān)接能(néng)為(wèi)您産生(shē↕πng)價值,我們在追求其視(shì)覺表現(xiàn)的(de)同時(shí),更側重于功→&∏能(néng)的(de)便捷,營銷的(de)便利,運營的(de)高(gāo)效,讓網γ↑站(zhàn)成為(wèi)營銷工(gōng)具,讓軟件(jiàn)能(né≥•™ng)切實提升企業(yè)內(nèi)部管理(lǐ)水(shuǐ)平 ÷€<和(hé)效率。優秀的(de)程序為(wèi)後期升級提供便捷的(de)支持!

自(zì)定義橫向的(de)ScrollView

發表時(shí)間(jiān):2021-1-10

發布人(rén):葵宇科(kē)技(jì)

浏覽次數(shù):52


介紹一(yī)個(gè)自(zì)定義橫向的(de)Scroll♦✔ View,可(kě)以監聽(tīng)滑動的(de)狀态,可(k↓¥≥ě)以監聽(tīng)滑動到(dào)了(le)最左側,正在中間(ji ✘∏✘ān)滑動和(hé)滑到(dào)了(le)最右邊。
思路(lù):
  1.根據ScrollView中第一(yī)層的(de)子(zǐε↓✔)View,其實第一(yī)層也(yě)就(jiù)一(yī)≠ 個(gè)View,這(zhè)是(shì)Scrol &lView規定的(de),ScrollView包含的(de)內(nèi)容,必須全部<​≤放(fàng)到(dào)一(yī)個(gè)子(zǐ)Vε♣☆iew中。
  2.根據最第一(yī)個(gè)子(zǐ)View的(de)左側坐(z•∏★uò)标,右側坐(zuò)标,ScrollView的(de)寬度和(hé)橫向滑動的(de)距→®♥₩離(lí),來(lái)判斷滑動的(de)位置。
  3.定義滑動位置的(de)監聽(tīng)接口。



public class MyScrollView extends Horizoδ↓γ>ntalScrollView {
	public MyScrollView™≤↕(Context context) {
		super(contex↑'t);
	}

	public MyScrollView(Context context♥∏, AttributeSet attrs) {
		super(cont♥≠ext, attrs);

	}

	public M∏€™yScrollView(Context context, AttributeS<‍et attrs, int defStyle) {
		super(context, att↑γ₹rs, defStyle);
	}

	@Override
	protected void ★±onScrollChanged(int l, int t, i✘≠ nt oldl, int oldt) {
		View view = (View) ΩΩgetChildAt(getChildCount() - 1);
		// 如(rú)果為σ ←↓(wèi)0,證明(míng)滑動到(dào)最左邊
		if (&¶β£view.getLeft() - getScrollX() == 0) {
			onScr≠₽ollListener.onLeft();
			// 如(rú)果為(w&€₹×èi)0證明(míng)滑動到(dào)最右邊
		} else if ((view.getRi&Ω₽∏ght() - (getWidth() + getScrollX())) == ✘'​0) {
			onScrollListener.onRight();
			// 說<×(shuō)明(míng)在中間(jiān)
		} else {
			onSc♦±ασrollListener.onScroll();
		}
		super.onScrollC'£hanged(l, t, oldl, oldt);
	}

	/**
	 * 'εσ定義接口
	 * 
	 * @author admin
	 *≠₹>/
	public interface OnScrollLδ istener1 {
		void onRight();

		void onLeft↑​();

		void onScroll();
	}

	private OnSc§αrollListener1 onScrollListener;

	puσ§<★blic void setOnScrollListener(OnScrollList'≠♠ener1 onScrollListener) {
		this.onSc ≤→'rollListener = onScrollListener;
	}
}
 首先獲取ScrollView的(de)第一(yī)個(gè)孩子(zǐ),★♦獲取到(dào)左側的(de)坐(zuò)标view.getLef♥δβt(),獲取ScrollView在X方向滑動的(de)距離(lí):getScr←∞ollX(),就(jiù)是(shì)ScrollView和(hé)左側邊緣的(de)距離(lí)φ♠。獲取第一(yī)個(gè)孩子(zǐ)最右側X的(de↔ →π)坐(zuò)标:view.getRight().ScrllView的(de)寬度:ge↔ ​₹tWidth()
view.getLeft()和(hé)view.getLeft()的(de)值是 σ(shì)不(bù)變的(de)。
view.getLeft():ScrollView的(de)寬度,其實也(yě)是(shì)屏÷↓¥¶幕的(de)寬度。

[img]http://img.blog.csdn.net/±≠20150108111043953?watermark/2/text/aHR0cDovL2Jsb‍&​₩2cuY3Nkbi5uZXQvZm9yd2FyZHl6aw==/font/5a6L←®±5L2T/fontsize/400/fill/I0JBQk↑ FCMA==/dissolve/70/gravity/Center

使用(yòng)步驟:


activity_main.xml

<LinearLayout xmlns:and₽βroid="http://schemas.android.com/ap>÷k/res/android"
    android:layou≤♣±t_width="fill_parent"
    android≠β:layout_height="fill_parent£​ £"
    android:orientation="vertica ≠l" >

    <LinearLayout
      &§×  android:id="@+id/linearLayout1"
   >​'      android:layout_width="ma♣λ☆"tch_parent"
        android:layout_height=↕↕σ"wrap_content"
        andro☆β♦♠id:background="#fef4dc"
        and→≠₹σroid:gravity="center"
   ÷×     android:orientation=&q±αuot;horizontal" >

≈♠<        <com.example.view.MyScro‍‌✘llView
            android:id="@+idλπ☆/myView"
            anβ★droid:layout_width="ma××tch_parent"
            android:layout§∞ε×_height="match_parent"
       ∏​♥δ     android:scrollbars=&quo♦α∏t;none" >

            <Li≤γ✘nearLayout
                android:id="@←'+id/sortliner"
              ¥§  android:layout_width="match_↑♣εparent"
                android:layout_heighΩασ↕t="match_parent"
‌π                android:gra↕ <€vity="center"
                ☆βφandroid:orientation="hor♣↕izontal"
             ≠×✔   android:paddingLeft="10dp&quo§↑t;
                androidβδγφ:paddingRight="10dp" >
      ≥ ≥​      </LinearLayout>
        </c$πom.example.view.MyScrollView>
    </Liα ☆σnearLayout>

</LinearLayout>

MainActivity.java

public class MainActivity €∑∞₽extends Activity {
	private final ↔>  String TAG = MainActivity.class.getSimpl★©>♣eName();
	final String[] arr = { "骨₽₽₹€科(kē)", "婦科(kē)"©→₽;, "普外(wài)科(kē)", "神經內(nèi)科(kē "σδ)", "神經科(kē)", "神經外(wài)科(kē)©€®", "普外(wài)",
			"普內(nèi)&q←↓φuot;, "呼吸科(kē)", &♠♣quot;消化(huà)科(kē)", "兒(ér)科(kē♥ )", "心內(nèi)" };
	private MyScr∏£♦ollView myView;// 自(zì)定義的(de)滑動vie$β≤δw
	private LinearLayout sortliner;¶ε©☆// 滑動條

	@Override
	protected void onCr↑≈&πeate(Bundle savedInstanceState) {
		super.onC≈"±¶reate(savedInstanceState);
		setContentViαγ<•ew(R.layout.activity_main);
		ini↑≤tView();
		int screenWidth = getWindowManaπ¶'ger().getDefaultDisplay().getWidth(); 
		Toast✔♣.makeText(getApplicationContext(), &<>​¥quot;"+screenWidth, 0).show();
		
	}
↕ε→≈
	public void initView() {
		myVie¶"γw = (MyScrollView) findView♣♥×ById(R.id.myView);
		sortliner = (LinearLayout) " findViewById(R.id.sortliner);

Ωβ♣±		sortliner.removeAllViews();
		myView.se♦‌tOnScrollListener(new OnScrollListener1()×₩€€ {

			@Override
			public void onScroll(&<£) {
				Log.d(TAG, "在中間(jiān)滑動");
			©¥λ}

			@Override
			public void onRight() {
♥♦♠δ				Log.d(TAG, "滑動到(dào)了(le)最右邊");
			™♦	Toast.makeText(getApplicaπ ✔ tionContext(), "滑到(dào)了(le)最右邊&±♦← quot;, 0).show();
			}

			@Override
			pπ≤​ublic void onLeft() {
				‍"δ₹Log.d(TAG, "滑動到(dào)了(le)β§&£最左邊");
				Toast.makeText(getApplicationCo±‍€$ntext(), "滑到(dào)了(le)最左邊", 0).sσ§§how();
			}
		});
		initScrollChildV↔£•≥iew();
	}

	/**
	 * 準備向Scroller中•₽添加View
	 * 
	 * @param params
	 */
	p®φ☆ rivate void initScrollChildView() {
		L≠¶'ayoutParams params = new LayoutParams≥ •(LayoutParams.MATCH_PARENT,
				LayoutParams.WR€™AP_CONTENT);
		for (int i = 0; i < arr.length✘δΩ; i++) {// 往二級分(fēn)類中加載數(shù)據
<♦			Button sort = new Button(Maσσ♣inActivity.this);
			sort.setText(a€±₽'rr[i]);
			sort.setTextSize(¥♦"♠15);
			sort.setMinHeight(30);
	™&		sort.setPadding(20, 5, 20, 5);
			// 把T♦"≠<extView添加到(dào)滑動條內(nèi)
		♦↑¶	sortliner.addView(sort, i, params);
		$γ​}
	}
}

源碼下(xià)載地(dì)址:http://download.csdn.ne±φt/detail/forwardyzk/8339959
效果圖:
[img]http://img.blog.csdn.net/20♥®150108113330250?watermark/2/text/aHR0cDovL2Jsb2★&♠★cuY3Nkbi5uZXQvZm9yd2FyZHl6aw==/font/5a6L5L2T/font×σεsize/400/fill/I0JBQkFCMA==/dissolve/7δ♥×0/gravity/Center

相(xiàng)關案例查看(kàn)更多(duō)

相(xiàng)關閱讀(dú)

三年中文在线观看免费大全_三年大片免费高清哔哩哔哩_三年在线观看免费大全哔哩_三年大全免费大片三年大片_三年在线观看免费大全_三年大片观看免费大全哔哩哔哩_三年中文在线观看免费高清第4版_三年中文免费视频大全_三年大片大全免费观看大全_三年大片在线观看哔哩哔哩_三年在线观看中文免费观看_三年成都中文在线观看免费版