第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號安全,請及時綁定郵箱和手機立即綁定
package?com.example.qqslidingmenu.view;

import?com.example.qqslidingmenu.R;
import?com.nineoldandroids.view.ViewHelper;

import?android.app.Notification.Action;
import?android.content.Context;
import?android.content.res.TypedArray;
import?android.provider.ContactsContract.CommonDataKinds.Event;
import?android.util.AttributeSet;
import?android.util.DisplayMetrics;
import?android.util.Log;
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?{??//這是一個自定義的viewgroup

	
	private?LinearLayout?mWapper;
	private?ViewGroup?mContent;
	private?ViewGroup?mMenu;
	private?boolean?isopen;
	private?int?mMenuWidth;
	private?boolean?once=false;
	private?int?mMenuRightPadding=50;//單位dp
	private?int?mScreenWidth;	
	
	//private?int?mScreenHeigth;
	/*需要繼承實現(xiàn)地方法
	?*?1?onMeasure??決定其子view的寬和高?以及自己的寬和高
	?*?2?onLayout???決定子view的放置的位置
	?*?3?onTouchEvent??決定內(nèi)部view的移動效果(如果沒有移動效果則不需要)??
	?*/
	
	/*
	?*?
	?*?	未使用自定義控件是調(diào)用
	?*/
	public?SlidingMenu(Context?context,?AttributeSet?attrs)?{
		//super(context,?attrs);
		this(context,attrs,0);
		
		/*
		WindowManager?wm=(WindowManager)?context.getSystemService(Context.WINDOW_SERVICE);
		DisplayMetrics?outMetrics=new?DisplayMetrics();
		wm.getDefaultDisplay().getMetrics(outMetrics);;
		mScreenWidth=outMetrics.widthPixels;
		
		//把dp轉(zhuǎn)化為px???????????????????????????????????????????????????//如果這里是px的話?就是把50px轉(zhuǎn)化為dp
		mMenuRightPadding=(int)TypedValue.applyDimension(TypedValue.COMPLEX_UNIT_DIP,50,context.getResources().getDisplayMetrics());
		Log.d("22222",?"進(jìn)入構(gòu)造函數(shù)");*/
	}

	
	
	
	/*
	?*?當(dāng)使用了自定義的屬性時?會調(diào)用次此構(gòu)造方法
	?*/
	
	public?SlidingMenu(Context?context,?AttributeSet?attrs,?int?defStyle)?{
		super(context,?attrs,?defStyle);
		//獲取我們自定義的屬性
		TypedArray?a=context.getTheme().obtainStyledAttributes(attrs,?R.styleable.SlidingMenu,?defStyle,?0);
		
		int?n=a.getIndexCount();//獲取自定義屬性的數(shù)量
		for(int?i=0;i<n;i++){
			
			int?attr=a.getIndex(i);
			switch?(attr)?{
			case?R.styleable.SlidingMenu_rightPadding:mMenuRightPadding=a.getDimensionPixelSize(attr,?(int)TypedValue.applyDimension(TypedValue.COMPLEX_UNIT_DIP,50,context.getResources().getDisplayMetrics()));
				
				break;
			}
			
		}
		
		
		a.recycle();//使用完必須釋放
		
		WindowManager?wm=(WindowManager)?context.getSystemService(Context.WINDOW_SERVICE);
		DisplayMetrics?outMetrics=new?DisplayMetrics();
		wm.getDefaultDisplay().getMetrics(outMetrics);;
		mScreenWidth=outMetrics.widthPixels;??//獲取屏幕寬度
		
		//把dp轉(zhuǎn)化為px???????????????????????????????????????????????????//如果這里是px的話?就是把50px轉(zhuǎn)化為dp
		//mMenuRightPadding=(int)TypedValue.applyDimension(TypedValue.COMPLEX_UNIT_DIP,50,context.getResources().getDisplayMetrics());
		
	}









	public?SlidingMenu(Context?context)?{
		this(context,null);
	}









	/*
	?*?設(shè)置子view的寬和高和自己的寬和高
	?*/
	@Override
		protected?void?onMeasure(int?widthMeasureSpec,?int?heightMeasureSpec)?{
			
			
			if(!once)
			{
				mWapper=(LinearLayout)?this.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);??//x如果為正值?滾動條向右移動?內(nèi)容區(qū)向左移動?
?????			
?????		}
	
	}
	
	
		@Override
		public?boolean?onTouchEvent(MotionEvent?ev)?{
		
		
			int?action=ev.getAction();
			switch(action)
				{
				case?MotionEvent.ACTION_UP:?
					//隱藏在左邊的寬度
				
					int?scrollx=getScrollX();
					if(scrollx?>=?mMenuWidth/2)
					{
						isopen=false;
						//this.scrollTo(mMenuWidth,?0);
						this.smoothScrollTo(mMenuWidth,?0);
						
						
						
					}else{
						isopen=true;
						//this.scrollTo(0,?0);
						this.smoothScrollTo(0,?0);
						
						}
						return?true;
				
			?
				default:break;
			
			
				}	
		
			return?super.onTouchEvent(ev);
		}
	
	
		public?void?openMenu(){
			
			if(isopen)return;
			else
			{
				this.smoothScrollTo(0,?0);
				isopen=true;
			}
		}
		
		public?void?closeMenu(){
			
			if(!isopen)return;
			else
			{
				this.smoothScrollTo(mMenuWidth,?0);
				isopen=false;
			}
		}
		
		public?void?toggle(){
			
			if(isopen)
			{
				closeMenu();
			}else?{

				openMenu();
			}
			
			
		}
		
		
		/*
		?*?滾動發(fā)生時
		?*/
		
		@Override
			protected?void?onScrollChanged(int?l,?int?t,?int?oldl,?int?oldt)?{
				super.onScrollChanged(l,?t,?oldl,?oldt);
				
				float?scale=l*1.0f/mMenuWidth;????//scale隨著右劃從1到0變化
				float?rightScale=0.7f+0.3f*scale;
				float?menuScale=1.0f-scale*0.3f;
				float?mMenuAlpha=0.6f+0.4f*(1-scale);
				//調(diào)用屬性動畫
				ViewHelper.setTranslationX(mMenu,?mMenuWidth*scale*0.7f);??//有空上網(wǎng)找找這個庫的源碼
				?//抽屜式菜單效果
				ViewHelper.setScaleX(mMenu,?menuScale);
				ViewHelper.setScaleY(mMenu,?menuScale);
				//----------------------------------------------控制菜單縮放從0.7到1
				ViewHelper.setAlpha(mMenu,mMenuAlpha);
				//----------------------------------------------控制內(nèi)容區(qū)域透明度從0.6到1
				
				//----------------------------------------------
				ViewHelper.setPivotX(mContent,?0);
				ViewHelper.setPivotY(mContent,mContent.getHeight()/2);
				ViewHelper.setScaleX(mContent,?rightScale);
				ViewHelper.setScaleY(mContent,?rightScale);
				//----------------------------------------------控制內(nèi)容區(qū)域從1到0.7縮放
		
		
		
		
		
		
		
		
		
		
		}??????
		
		
		
		
		
		
		
		
		
		
}

? 請問我這個代碼哪里出錯了,怎么動畫效果就是不一樣呢

正在回答

1 回答

你好,是背景效果不一樣,還是具體什么動畫效果不同;背景的話,leftmenu上的背景圖,記得移動至SlidingMenu上,對比視頻中的activity_main。

0 回復(fù) 有任何疑惑可以回復(fù)我~

舉報

0/150
提交
取消
QQ5.0側(cè)滑菜單
  • 參與學(xué)習(xí)       62515    人
  • 解答問題       304    個

本教程將帶領(lǐng)大家通過自定義控件實現(xiàn)QQ5.0側(cè)滑菜單

進(jìn)入課程
微信客服

購課補貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動學(xué)習(xí)伙伴

公眾號

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號