<?xml version="1.0" encoding="utf-8"?><resources>    <attr name="rightPadding" format="dimension" />    <declare-styleable name="SlidingMenu">        <attr name="rightPadding" />    </declare-styleable></resources>

<com.baoy.demo.demoslidemenu.view.SlidingMenu     xmlns:android="http://schemas.android.com/apk/res/android"    xmlns:tools="http://schemas.android.com/tools"    xmlns:baoy="http://schemas.android.com/apk/res/com.baoy.demo.demoslidemenu"    android:id="@+id/id_menu"    android:layout_width="wrap_content"    android:layout_height="fill_parent"    android:background="@color/grey"    android:scrollbars="none"    baoy:rightPadding="100dp" >    <LinearLayout        android:layout_width="wrap_content"        android:layout_height="fill_parent"        android:orientation="horizontal" >        <include layout="@layout/layout_menu" />        <RelativeLayout            android:layout_width="match_parent"            android:layout_height="match_parent"              android:background="@color/red"             >            <LinearLayout                android:layout_width="match_parent"                android:layout_height="match_parent"                android:orientation="vertical" >                 <Button        android:id="@+id/title_btn_left"        android:layout_width="24dip"        android:layout_height="24dip"        android:layout_alignParentLeft="true"        android:layout_centerVertical="true"        android:layout_marginLeft="9dip"        android:background="@drawable/title_bar_menu"        android:visibility="visible" />                                             </LinearLayout>            <View                android:id="@+id/view_slide_touch"                android:layout_width="match_parent"                android:layout_height="match_parent" />        </RelativeLayout>    </LinearLayout></com.baoy.demo.demoslidemenu.view.SlidingMenu>

<?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="@color/yellow" >    <RelativeLayout        android:id="@+id/relativeLayout1"        android:layout_width="match_parent"        android:layout_height="wrap_content" >        <ImageView            android:id="@+id/three"            android:layout_width="60dp"            android:layout_height="60dp"            android:layout_marginBottom="12dp"            android:layout_marginLeft="25dp"            android:layout_marginTop="40dp"            android:src="@drawable/ic_launcher" />        <TextView            android:id="@+id/tv_loginname"            android:layout_width="wrap_content"            android:layout_height="match_parent"            android:layout_alignBottom="@+id/three"            android:layout_alignTop="@+id/three"            android:layout_marginLeft="13dp"            android:layout_toRightOf="@+id/three"            android:gravity="center_vertical"            android:textColor="@color/grey"            android:textSize="19sp" />    </RelativeLayout>    <View        android:id="@+id/view_line"        android:layout_width="match_parent"        android:layout_height="1px"        android:layout_marginTop="12dp"        android:layout_below="@+id/relativeLayout1"        android:layout_marginRight="40dp"        android:background="#000000" />    <View        android:layout_width="match_parent"        android:layout_height="1px"        android:layout_below="@+id/view_line"        android:layout_marginRight="40dp"        android:background="#41535b" />    <RelativeLayout        android:id="@+id/noticeLayout"        android:layout_width="match_parent"        android:layout_height="60dp"        android:layout_below="@+id/view_line"        android:layout_marginTop="1px"        android:background="@color/transparent"        android:onClick="onClick" >        <ImageView            android:id="@+id/imageViewNotice"            android:layout_width="33dp"            android:layout_height="30dp"            android:layout_alignParentLeft="true"            android:layout_centerVertical="true"            android:layout_marginLeft="26dp"            android:src="@drawable/ic_launcher" />        <TextView            android:id="@+id/textView_notice_show"            android:layout_width="match_parent"            android:layout_height="match_parent"            android:layout_centerVertical="true"            android:layout_marginLeft="26dp"            android:layout_toRightOf="@+id/imageViewNotice"            android:gravity="center_vertical"            android:paddingBottom="10dp"            android:paddingRight="30dp"            android:paddingTop="10dp"            android:text="@string/app_name"            android:textColor="@color/black"            android:textSize="17sp" />        <View            android:id="@+id/textView_notice_show_point"            android:layout_width="8dp"            android:layout_height="8dp"            android:layout_alignParentRight="true"            android:layout_centerVertical="true"            android:layout_marginRight="16dp"            android:background="@drawable/ic_launcher"            android:visibility="gone" />    </RelativeLayout>    <View        android:layout_width="match_parent"        android:layout_height="1px"        android:layout_below="@+id/noticeLayout"        android:layout_marginRight="40dp"        android:background="#000000" />    <View        android:layout_width="match_parent"        android:layout_height="1px"        android:layout_below="@+id/noticeLayout"        android:layout_marginRight="40dp"        android:layout_marginTop="1px"        android:background="#41535b" />    <RelativeLayout        android:id="@+id/exitLayout"        android:layout_width="match_parent"        android:layout_height="53dp"        android:layout_alignParentBottom="true"        android:layout_centerHorizontal="true"        android:alpha="0.8"        android:background="@color/grey"        android:onClick="onClick" >        <ImageView            android:id="@+id/imageExit"            android:layout_width="wrap_content"            android:layout_height="wrap_content"            android:layout_centerVertical="true"            android:layout_marginLeft="27dp"            android:src="@drawable/ic_launcher" />        <TextView            android:id="@+id/textView1"            android:layout_width="wrap_content"            android:layout_height="wrap_content"            android:layout_centerVertical="true"            android:layout_marginLeft="10dp"            android:layout_toRightOf="@+id/imageExit"            android:text="@string/app_name"            android:textColor="@color/black"            android:textSize="17sp" />    </RelativeLayout>    <RelativeLayout        android:id="@+id/contactLayout"        android:layout_width="match_parent"        android:layout_height="60dp"        android:layout_below="@+id/noticeLayout"        android:layout_marginTop="2px"        android:background="@color/transparent"        android:onClick="onClick" >        <ImageView            android:id="@+id/imageViewContact"            android:layout_width="33dp"            android:layout_height="30dp"            android:layout_alignParentLeft="true"            android:layout_centerVertical="true"            android:layout_marginLeft="26dp"            android:src="@drawable/ic_launcher" />        <TextView            android:id="@+id/TextView01"            android:layout_width="wrap_content"            android:layout_height="wrap_content"            android:layout_centerVertical="true"            android:layout_marginLeft="26dp"            android:layout_toRightOf="@+id/imageViewContact"            android:text="@string/app_name"            android:textColor="@color/black"            android:textSize="17sp" />    </RelativeLayout>    <View        android:layout_width="match_parent"        android:layout_height="1px"        android:layout_below="@+id/contactLayout"        android:layout_marginRight="40dp"        android:background="#000000" />    <View        android:layout_width="match_parent"        android:layout_height="1px"        android:layout_below="@+id/contactLayout"        android:layout_marginRight="40dp"        android:layout_marginTop="1px"        android:background="#41535b" />    <RelativeLayout        android:id="@+id/settingLayout"        android:layout_width="match_parent"        android:layout_height="60dp"        android:layout_below="@+id/contactLayout"        android:layout_marginTop="2px"        android:background="@color/transparent" >        <ImageView            android:id="@+id/imageViewSetting"            android:layout_width="33dp"            android:layout_height="30dp"            android:layout_alignParentLeft="true"            android:layout_centerVertical="true"            android:layout_marginLeft="26dp"            android:src="@drawable/ic_launcher" />        <TextView            android:layout_width="wrap_content"            android:layout_height="wrap_content"            android:layout_centerVertical="true"            android:layout_marginLeft="26dp"            android:layout_toRightOf="@+id/imageViewSetting"            android:text="@string/app_name"            android:textColor="@color/black"            android:textSize="17sp" />    </RelativeLayout>    <View        android:layout_width="match_parent"        android:layout_height="1px"        android:layout_below="@+id/settingLayout"        android:layout_marginRight="40dp"        android:background="#000000" />    <View        android:layout_width="match_parent"        android:layout_height="1px"        android:layout_below="@+id/settingLayout"        android:layout_marginRight="40dp"        android:layout_marginTop="1px"        android:background="#41535b" />    <RelativeLayout        android:id="@+id/reportLayout"        android:layout_width="match_parent"        android:layout_height="60dp"        android:layout_below="@+id/settingLayout"        android:layout_marginTop="2px"        android:background="@color/transparent" >        <ImageView            android:id="@+id/imageViewReport"            android:layout_width="33dp"            android:layout_height="30dp"            android:layout_alignParentLeft="true"            android:layout_centerVertical="true"            android:layout_marginLeft="26dp"            android:src="@drawable/ic_launcher" />        <TextView            android:layout_width="wrap_content"            android:layout_height="wrap_content"            android:layout_centerVertical="true"            android:layout_marginLeft="26dp"            android:layout_toRightOf="@+id/imageViewReport"            android:text="@string/app_name"            android:textColor="@color/black"            android:textSize="17sp" />    </RelativeLayout>    <View        android:layout_width="match_parent"        android:layout_height="1px"        android:layout_below="@+id/reportLayout"        android:layout_marginRight="40dp"        android:background="#000000" />    <View        android:layout_width="match_parent"        android:layout_height="1px"        android:layout_below="@+id/reportLayout"        android:layout_marginRight="40dp"        android:layout_marginTop="1px"        android:background="#41535b" /></RelativeLayout>

package com.baoy.demo.demoslidemenu.util;import android.app.Activity;import android.content.Context;import android.graphics.Bitmap;import android.graphics.Rect;import android.util.DisplayMetrics;import android.view.View;import android.view.WindowManager; public class ScreenUtils {private ScreenUtils() {/* cannot be instantiated */throw new UnsupportedOperationException("cannot be instantiated");}/** * 获得屏幕高度 *  * @param context * @return */public static int getScreenWidth(Context context) {WindowManager wm = (WindowManager) context.getSystemService(Context.WINDOW_SERVICE);DisplayMetrics outMetrics = new DisplayMetrics();wm.getDefaultDisplay().getMetrics(outMetrics);return outMetrics.widthPixels;}/** * 获得屏幕宽度 *  * @param context * @return */public static int getScreenHeight(Context context) {WindowManager wm = (WindowManager) context.getSystemService(Context.WINDOW_SERVICE);DisplayMetrics outMetrics = new DisplayMetrics();wm.getDefaultDisplay().getMetrics(outMetrics);return outMetrics.heightPixels;}/** * 获得状态栏的高度 *  * @param context * @return */public static int getStatusHeight(Context context) {int statusHeight = -1;try {Class<?> clazz = Class.forName("com.android.internal.R$dimen");Object object = clazz.newInstance();int height = Integer.parseInt(clazz.getField("status_bar_height").get(object).toString());statusHeight = context.getResources().getDimensionPixelSize(height);} catch (Exception e) {e.printStackTrace();}return statusHeight;}/** * 获取当前屏幕截图,包含状态栏 *  * @param activity * @return */public static Bitmap snapShotWithStatusBar(Activity activity) {View view = activity.getWindow().getDecorView();view.setDrawingCacheEnabled(true);view.buildDrawingCache();Bitmap bmp = view.getDrawingCache();int width = getScreenWidth(activity);int height = getScreenHeight(activity);Bitmap bp = null;bp = Bitmap.createBitmap(bmp, 0, 0, width, height);view.destroyDrawingCache();return bp;}/** * 获取当前屏幕截图,不包含状态栏 *  * @param activity * @return */public static Bitmap snapShotWithoutStatusBar(Activity activity) {View view = activity.getWindow().getDecorView();view.setDrawingCacheEnabled(true);view.buildDrawingCache();Bitmap bmp = view.getDrawingCache();Rect frame = new Rect();activity.getWindow().getDecorView().getWindowVisibleDisplayFrame(frame);int statusBarHeight = frame.top;int width = getScreenWidth(activity);int height = getScreenHeight(activity);Bitmap bp = null;bp = Bitmap.createBitmap(bmp, 0, statusBarHeight, width, height- statusBarHeight);view.destroyDrawingCache();return bp;}}

package com.baoy.demo.demoslidemenu.activity;import com.baoy.demo.demoslidemenu.R;import com.baoy.demo.demoslidemenu.view.SlidingMenu; import android.os.Bundle;import android.app.Activity;import android.view.MotionEvent;import android.view.View;import android.view.View.OnClickListener;import android.view.View.OnTouchListener;import android.widget.Button;public class MainActivity extends Activity  implements   OnClickListener,OnTouchListener {private SlidingMenu mLeftMenu;private View mSlideTouchView;private Button mMenuBtn;@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);initView();}public void initView() {mLeftMenu = (SlidingMenu) findViewById(R.id.id_menu);mSlideTouchView = findViewById(R.id.view_slide_touch);mMenuBtn = (Button) findViewById(R.id.title_btn_left);mMenuBtn.setOnClickListener(this);mSlideTouchView.setOnTouchListener(this);}@Overridepublic boolean onTouch(View v, MotionEvent event) {return mLeftMenu.isOpen();}@Overridepublic void onClick(View v) {switch (v.getId()) {case R.id.title_btn_left:openMenu();break;}}public void toggleMenu(View view) {mLeftMenu.toggle();} public void openMenu() {toggleMenu(null);}@Overrideprotected void onResume() {super.onResume();mLeftMenu.closeMenu();}}

package com.baoy.demo.demoslidemenu.view;import android.content.Context;import android.content.res.TypedArray;import android.util.AttributeSet;import android.util.TypedValue;import android.view.MotionEvent;import android.view.View;import android.view.ViewGroup;import android.widget.HorizontalScrollView;import android.widget.LinearLayout;import com.baoy.demo.demoslidemenu.R;import com.baoy.demo.demoslidemenu.util.ScreenUtils;import com.nineoldandroids.view.ViewHelper; public class SlidingMenu extends HorizontalScrollView {        private int       mScreenWidth;       private int       mMenuRightPadding;        private int       mMenuWidth;    private int       mHalfMenuWidth;    private boolean   isOpen;    private boolean   once;    private boolean   touchReturn = true;    private ViewGroup mMenu;    private ViewGroup mContent;    public SlidingMenu( Context context, AttributeSet attrs ) {        this( context, attrs, 0 );    }    public SlidingMenu( Context context, AttributeSet attrs, int defStyle ) {        super( context, attrs, defStyle );        mScreenWidth = ScreenUtils.getScreenWidth( context );        TypedArray a = context.getTheme().obtainStyledAttributes( attrs,                R.styleable.SlidingMenu, defStyle, 0 );        int n = a.getIndexCount();        for ( int i = 0; i < n; i++ ) {            int attr = a.getIndex( i );            switch ( attr ) {                case R.styleable.SlidingMenu_rightPadding:                    // 默认50                    mMenuRightPadding = a.getDimensionPixelSize( attr,                            ( int ) TypedValue.applyDimension(                                    TypedValue.COMPLEX_UNIT_DIP, 100f,                                    getResources().getDisplayMetrics() ) );// 默认为10DP                    break;            }        }        a.recycle();        setOverScrollMode( View.OVER_SCROLL_NEVER );    }    public SlidingMenu( Context context ) {        this( context, null, 0 );    }    public boolean isOpen() {        return isOpen;    }    @Override    protected void onMeasure( int widthMeasureSpec, int heightMeasureSpec ) {        if ( !once ) {            LinearLayout wrapper = ( LinearLayout ) getChildAt( 0 );            mMenu = ( ViewGroup ) wrapper.getChildAt( 0 );            mContent = ( ViewGroup ) wrapper.getChildAt( 1 );            mMenuWidth = mScreenWidth - mMenuRightPadding;            mHalfMenuWidth = mMenuWidth / 2;            mMenu.getLayoutParams().width = mMenuWidth;            mContent.getLayoutParams().width = mScreenWidth;        }        super.onMeasure( widthMeasureSpec, heightMeasureSpec );    }    @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 );            once = true;        }    }    @Override    public boolean onTouchEvent( MotionEvent ev ) {        int action = ev.getAction();        switch ( action ) {        // Up时,进行判断,如果显示区域大于菜单宽度一半则完全显示,否则隐藏            case MotionEvent.ACTION_UP:                int scrollX = getScrollX();                if ( scrollX > mHalfMenuWidth ) {                    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 ) {            this.smoothScrollTo( mMenuWidth, 0 );            isOpen = false;        }    }    public void toggle() {        if ( isOpen ) {            closeMenu();        }        else {            openMenu();        }    }    @Override    protected void onScrollChanged( int l, int t, int oldl, int oldt ) {        super.onScrollChanged( l, t, oldl, oldt );        float scale = l * 1.0f / mMenuWidth;        float leftScale = 1 - 0.3f * scale;        float rightScale = 0.8f + scale * 0.2f;        ViewHelper.setScaleX( mMenu, leftScale );        ViewHelper.setScaleY( mMenu, leftScale );        ViewHelper.setAlpha( mMenu, 0.6f + 0.4f * ( 1 - scale ) );        ViewHelper.setTranslationX( mMenu, mMenuWidth * scale * 0.7f );        ViewHelper.setPivotX( mContent, 0 );        ViewHelper.setPivotY( mContent, mContent.getHeight() / 2 );        ViewHelper.setScaleX( mContent, rightScale );        ViewHelper.setScaleY( mContent, rightScale );    }    @Override    public boolean onInterceptTouchEvent( MotionEvent ev ) {        return super.onInterceptTouchEvent( ev ) && touchReturn;    }    public void changeTouchReturn( boolean touchReturn ) {        this.touchReturn = touchReturn;    }}

更多相关文章

  1. Android屏幕分辨率
  2. 在android里面使用自定义字体
  3. Android的WindowManager解析
  4. Android实用小技巧
  5. Android(安卓)屏幕设置
  6. Android(安卓)dp方式的屏幕适配工具使用(Android(安卓)Studio插
  7. android 布局文件 layout_weight用法
  8. Android实现九宫格
  9. android:configChanges 屏幕横竖屏切换

随机推荐

  1. ***武器库---Metasploit***测试框架实战
  2. CSS:box-sizing理解与相对定位与绝对定位
  3. 金币问题
  4. CAD 入门 平面图
  5. elasticsearch历史数据清理
  6. gitlab迁移及迁移后500问题
  7. 仿写京东商城
  8. 210325 CSS flex布局 项目属性
  9. flex基础:flex容器中的四个属性的功能,参数
  10. 0325作业