欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

Android實(shí)現(xiàn)左側(cè)滑動(dòng)菜單

 更新時(shí)間:2022年02月16日 08:03:31   作者:風(fēng)云正  
這篇文章主要為大家詳細(xì)介紹了Android實(shí)現(xiàn)左側(cè)滑動(dòng)菜單,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下

本文實(shí)例為大家分享了Android實(shí)現(xiàn)左側(cè)滑動(dòng)菜單的具體代碼,供大家參考,具體內(nèi)容如下

效果圖:

SlideActivity.java:

package com.demo.slide;
?
import android.app.Activity;
import android.os.Bundle;
import android.view.View;
import android.view.Window;
?
import com.demo.broadcast.R;
?
public class SlideActivity extends Activity
{
?
?? ?private SlidingMenu mLeftMenu ;?
?? ?
?? ?@Override
?? ?protected void onCreate(Bundle savedInstanceState)
?? ?{
?? ??? ?super.onCreate(savedInstanceState);
?? ??? ?requestWindowFeature(Window.FEATURE_NO_TITLE);
?? ??? ?setContentView(R.layout.slide_main);
?? ??? ?
?? ??? ?mLeftMenu = (SlidingMenu) findViewById(R.id.id_menu);
?? ?}
?
?? ?public void toggleMenu(View view)
?? ?{
?? ??? ?mLeftMenu.toggle();
?? ?}
}

SlidingMenu.java:

package com.demo.slide;
?
import android.content.Context;
import android.util.AttributeSet;
import android.util.DisplayMetrics;
import android.util.TypedValue;
import android.view.MotionEvent;
import android.view.ViewGroup;
import android.view.WindowManager;
import android.widget.HorizontalScrollView;
import android.widget.LinearLayout;
?
public class SlidingMenu extends HorizontalScrollView
{
?? ?private LinearLayout mWapper;
?? ?private ViewGroup mMenu;
?? ?private ViewGroup mContent;
?? ?private int mScreenWidth;
?
?? ?private int mMenuWidth;
?? ?// dp
?? ?private int mMenuRightPadding = 80;
?
?? ?private boolean once;
?
?? ?private boolean isOpen;
?
?? ?/**
?? ? * 未使用自定義屬性時(shí),調(diào)用
?? ? *?
?? ? * @param context
?? ? * @param attrs
?? ? */
?? ?public SlidingMenu(Context context, AttributeSet attrs)
?? ?{
?? ??? ?this(context, attrs, 0);
?? ?}
?
?? ?/**
?? ? * 當(dāng)使用了自定義屬性時(shí),會(huì)調(diào)用此構(gòu)造方法
?? ? *?
?? ? * @param context
?? ? * @param attrs
?? ? * @param defStyle
?? ? */
?? ?public SlidingMenu(Context context, AttributeSet attrs, int defStyle)
?? ?{
?? ??? ?super(context, attrs, defStyle);
?
?? ??? ?WindowManager wm = (WindowManager) context
?? ??? ??? ??? ?.getSystemService(Context.WINDOW_SERVICE);
?? ??? ?DisplayMetrics outMetrics = new DisplayMetrics();
?? ??? ?wm.getDefaultDisplay().getMetrics(outMetrics);
?? ??? ?mScreenWidth = outMetrics.widthPixels;
?? ??? ?mMenuRightPadding = (int) TypedValue.applyDimension(
?? ??? ??? ??? ?TypedValue.COMPLEX_UNIT_DIP, 50, context
?? ??? ??? ??? ?.getResources().getDisplayMetrics());
?? ?}
?
?? ?public SlidingMenu(Context context)
?? ?{
?? ??? ?this(context, null);
?? ?}
?
?? ?/**
?? ? * 設(shè)置子View的寬和高 設(shè)置自己的寬和高
?? ? */
?? ?@Override
?? ?protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec)
?? ?{
?? ??? ?if (!once)
?? ??? ?{
?? ??? ??? ?mWapper = (LinearLayout) getChildAt(0);
?? ??? ??? ?mMenu = (ViewGroup) mWapper.getChildAt(0);
?? ??? ??? ?mContent = (ViewGroup) mWapper.getChildAt(1);
?? ??? ??? ?
?? ??? ??? ?mMenuWidth = mMenu.getLayoutParams().width = mScreenWidth
?? ??? ??? ??? ??? ?- mMenuRightPadding;
?? ??? ??? ?mContent.getLayoutParams().width = mScreenWidth;
?? ??? ??? ?once = true;
?? ??? ?}
?? ??? ?super.onMeasure(widthMeasureSpec, heightMeasureSpec);
?? ?}
?
?? ?/**
?? ? * 通過設(shè)置偏移量,將menu隱藏
?? ? */
?? ?@Override
?? ?protected void onLayout(boolean changed, int l, int t, int r, int b)
?? ?{
?? ??? ?super.onLayout(changed, l, t, r, b);
?? ??? ?if (changed)
?? ??? ?{
?? ??? ??? ?this.scrollTo(mMenuWidth, 0);
?? ??? ?}
?? ?}
?
?? ?@Override
?? ?public boolean onTouchEvent(MotionEvent ev)
?? ?{
?? ??? ?int action = ev.getAction();
?? ??? ?switch (action)
?? ??? ?{
?? ??? ?case MotionEvent.ACTION_UP:
?? ??? ??? ?// 隱藏在左邊的寬度
?? ??? ??? ?int scrollX = getScrollX();
?? ??? ??? ?if (scrollX >= mMenuWidth / 2)
?? ??? ??? ?{
?? ??? ??? ??? ?this.smoothScrollTo(mMenuWidth, 0);
?? ??? ??? ??? ?isOpen = false;
?? ??? ??? ?} else
?? ??? ??? ?{
?? ??? ??? ??? ?this.smoothScrollTo(0, 0);
?? ??? ??? ??? ?isOpen = true;
?? ??? ??? ?}
?? ??? ??? ?return true;
?? ??? ?}
?? ??? ?return super.onTouchEvent(ev);
?? ?}
?
?? ?/**
?? ? * 打開菜單
?? ? */
?? ?public void openMenu()
?? ?{
?? ??? ?if (isOpen)
?? ??? ??? ?return;
?? ??? ?this.smoothScrollTo(0, 0);
?? ??? ?isOpen = true;
?? ?}
?
?? ?public void closeMenu()
?? ?{
?? ??? ?if (!isOpen)
?? ??? ??? ?return;
?? ??? ?this.smoothScrollTo(mMenuWidth, 0);
?? ??? ?isOpen = false;
?? ?}
?
?? ?/**
?? ? * 切換菜單
?? ? */
?? ?public void toggle()
?? ?{
?? ??? ?if (isOpen)
?? ??? ?{
?? ??? ??? ?closeMenu();
?? ??? ?} else
?? ??? ?{
?? ??? ??? ?openMenu();
?? ??? ?}
?? ?}
}

slide_main.xml:

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
? ? android:layout_width="match_parent"
? ? android:layout_height="match_parent" >

? ? <com.demo.slide.SlidingMenu
? ? ? ? android:id="@+id/id_menu"
? ? ? ? android:layout_width="match_parent"
? ? ? ? android:layout_height="match_parent" >

? ? ? ? <LinearLayout
? ? ? ? ? ? android:layout_width="wrap_content"
? ? ? ? ? ? android:layout_height="match_parent"
? ? ? ? ? ? android:orientation="horizontal" >

? ? ? ? ? ? <include layout="@layout/left_menu" />

? ? ? ? ? ? <LinearLayout
? ? ? ? ? ? ? ? android:layout_width="match_parent"
? ? ? ? ? ? ? ? android:layout_height="match_parent"
? ? ? ? ? ? ? ? android:background="#ffffff" >

? ? ? ? ? ? ? ? <Button
? ? ? ? ? ? ? ? ? ? android:layout_width="wrap_content"
? ? ? ? ? ? ? ? ? ? android:layout_height="wrap_content"
? ? ? ? ? ? ? ? ? ? android:onClick="toggleMenu"
? ? ? ? ? ? ? ? ? ? android:text="切換" />

? ? ? ? ? ? ? ? <TextView
? ? ? ? ? ? ? ? ? ? android:layout_width="wrap_content"
? ? ? ? ? ? ? ? ? ? android:layout_height="wrap_content"
? ? ? ? ? ? ? ? ? ? android:layout_gravity="center"
? ? ? ? ? ? ? ? ? ? android:layout_marginLeft="20dp"
? ? ? ? ? ? ? ? ? ? android:text="我是主content"
? ? ? ? ? ? ? ? ? ? android:textColor="#ff00ff"
? ? ? ? ? ? ? ? ? ? android:textSize="20sp" />
? ? ? ? ? ? </LinearLayout>
? ? ? ? </LinearLayout>
? ? </com.demo.slide.SlidingMenu>

</RelativeLayout>

left_menu.xml:

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
? ? android:layout_width="match_parent"
? ? android:layout_height="match_parent"
? ? android:background="#000000" >

? ? <LinearLayout
? ? ? ? android:layout_width="match_parent"
? ? ? ? android:layout_height="wrap_content"
? ? ? ? android:layout_centerInParent="true"
? ? ? ? android:orientation="vertical" >

? ? ? ? <TextView
? ? ? ? ? ? android:layout_width="wrap_content"
? ? ? ? ? ? android:layout_height="wrap_content"
? ? ? ? ? ? android:layout_marginLeft="20dp"
? ? ? ? ? ? android:text="我是左側(cè)Menu"
? ? ? ? ? ? android:textColor="#ffffff"
? ? ? ? ? ? android:textSize="20sp" />

? ? </LinearLayout>

</RelativeLayout>

以上就是本文的全部內(nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。

相關(guān)文章

最新評(píng)論