Android教程網
  1. 首頁
  2. Android 技術
  3. Android 手機
  4. Android 系統教程
  5. Android 游戲
 Android教程網 >> Android技術 >> 關於Android編程 >> SlidingMenu初識

SlidingMenu初識

編輯:關於Android編程

SlidingMenu——方式1 1、初始化SlidingMenu對象 2、設置SlidingMenu的菜單模式。 只有左側菜單,只有右側菜單,或者雙側菜單 3、設置SlidingMenu顯示的菜單布局 4、設置菜單的顯示方式 5、設置滑動菜單的隱藏方式 6、設置菜單顯示寬度 7、將菜單附加到當前Activity中進行顯示   \   注意, 1、尋找菜單中控件,一定要在布局加入後,才要findViewById,否則會出現空指針異常 2、如果菜單中有點擊事件,則不可以將菜單的顯示設為內容滑動(兩者有沖突)   功能: 1、因為可以加入布局,所以菜單中可以隨意定義顯示的布局樣式 2、可以設置菜單的顯示,隱藏方式(邊緣滑動,內容滑動,兩者都不可以) 3、可以設置顯示方式(只有左側菜單,只有右側菜單,兩側都有) 4、可以設置菜單顯示的寬度 5、在添加到activity中,可以設置是否共享標題欄 6、可以控制菜單滾動時,先出現菜單哪部分 7、菜單滾動時,可以改變菜單的透明度變化   SlidingMenu——方式2 1.將繼承的Activity替換為框架中的SlidingFragmentActivity
2.調用setBehindContentView設置菜單的顯示
3.初始化SlidingMenu對象
4.設置SlidingMenu的菜單模式。 只有左側菜單,只有右側菜單,或者雙側菜單
5.設置菜單的顯示方式
6.設置滑動菜單的隱藏方式
7.設置菜單顯示寬度 \   注意: 1、尋找菜單中控件,一定要在sliding=getSlidingMenu()後,才要findViewById,否則會出現空指針異常   與1的不同: 1.因為沒有attachToActivit方法,所以就不存在是否共享標題欄,其實activity本身沒有標題欄 SlidingMenu——方式3
  • 1.在方式一或者方式二的基礎上先顯示一個基礎SlidingMenu
  • 2.在設置SlidingMenu菜單顯示的布局中,將內容變為一個FrameLayout
  • 3.通過FragmentManager的add或replace方法將要作為菜單顯示內容的Fragment替換第二步中FrameLayout中的內容即可 注意:
這樣寫對菜單內的控件的點擊事件,只能寫在fragMent中,並且更新UI還得通過回調接口     貼上部分代碼
SlidingMenu1:

package
 
com.wang.main;

 

import
 
android.graphics.Bitmap;

import
 
android.graphics.BitmapFactory;

import
 
android.support.v7.app.AppCompatActivity;

import
 
android.os.Bundle;

import
 
android.util.Log;

import
 
android.view.DragEvent;

import
 
android.view.View;

import
 
android.widget.Button;

import
 
android.widget.ImageView;

import
 
android.widget.LinearLayout;

import
 
android.widget.ScrollView;

import
 
android.widget.TextView;

import
 
android.widget.Toast;

 

import
 
com.jeremyfeinstein.slidingmenu.lib.SlidingMenu;

 

public
 
class
 
MainActivity 
extends
 
AppCompatActivity 
implements
 
View.OnClickListener {

 

    
private
 
SlidingMenu sliding;

    
private
 
ImageView iv;

    
private
 
LinearLayout layout1,layout2,layout3;

    
private
 
TextView bottom_tv1,bottom_tv2;

    
private
 
ScrollView scrollview;

 

    
@Override

    
protected
 
void
 
onCreate(Bundle savedInstanceState) {

        
super
.onCreate(savedInstanceState);

        
setContentView(R.layout.activity_main);

 

        
//1.初始化slidingmenu對象

        
sliding=
new
 
SlidingMenu(
this
);

 

        
//2、設置slidingmenu的顯示方式,left=只有左側菜單,rigth=只有右側菜單,LEFT_RIGHT=既能顯示左側,又能顯示右側

        
sliding.setMode(SlidingMenu.LEFT);

 

        
//3、設置slidingmenu的菜單布局

        
sliding.setMenu(R.layout.slidingleft);

        
initView();

        
//4、設置菜單的顯示方式

//        /*

//        *SlidingMenu.TOUCHMODE_FULLSCREEN  在屏幕的任意位置滑動即可打開側滑菜單

//        * SlidingMenu.TOUCHMODE_MARGIN   必須從邊緣開始滑動才能打開側滑菜單

//        * SlidingMenu.TOUCHMODE_NONE   無論在什麼位置滑動都不能打開側滑菜單,必須通過點擊按鈕,手動調用打開菜單的方法

//          * */

        
sliding.setTouchModeAbove(SlidingMenu.TOUCHMODE_MARGIN);

 

        
//5、設置滑動菜單的隱藏方式

        
sliding.setTouchModeBehind(SlidingMenu.TOUCHMODE_MARGIN);

 

        
//6、設置菜單顯示寬度,設為屏幕的1/3

        
int
 
i=getResources().getDisplayMetrics().widthPixels*
2
/
3
;

        
sliding.setBehindWidth(i);

 

        
//設置內容與菜單邊緣的陰影效果

        
sliding.setShadowDrawable(getResources().getDrawable(R.drawable.shape_sdshadowdraw));

        
sliding.setShadowWidth(
30
);

 

        
//設置菜單的透明度的改變,其中setFadeEnabled默認值為true

//        sliding.setFadeEnabled(false);

         
sliding.setFadeDegree(
1
.0f);

 

        
//0-1,其中0表示,拉動菜單滾動時先出現的是菜單的開頭控件,1表示先出現末尾控件,默認0.5

        
sliding.setBehindScrollScale(
0
.5f);

 

        
//7、將菜單添加到當前activity中顯示

//        /*

//         * SlidingMenu.SLIDING_WINDOW  以窗口方式將側滑菜單加到當前Activity中

//         * SlidingMenu.SLIDING_CONTENT  以內容方式將側滑菜單加到當前Activity中

//         * 兩者的區別在於是否共享標題欄

//         * */

        
sliding.attachToActivity(
this
,SlidingMenu.SLIDING_WINDOW);

 

        
//本來是要聯網讀取數據,並將圖片弄成圓形的,現在手動畫一下

 

        
GetRoundBitmap gp=
new
   
GetRoundBitmap();

        
Bitmap bp=gp.getRoundBitmap(BitmapFactory.decodeResource(getResources(), R.mipmap.naruto));

        
Log.i(
"mtag"
,
"start"
+bp);

        
Log.i(
"mtag"
,
"start"
+iv);

        
iv.setImageBitmap(bp);


 

    
}

 

 

    
/**

 
* 尋找控件

 
*

 
*@author WangShujie

 
*created at 2016/4/23 18:59

 
*/

    
private
 
void
 
initView() {

        
iv= (ImageView)sliding.getMenu().findViewById(R.id.slidingleft_iv);

        
layout1= (LinearLayout) sliding.getMenu().findViewById(R.id.slidingleft_layout1);

        
layout2=(LinearLayout) sliding.getMenu().findViewById(R.id.slidingleft_layout2);

        
layout3=(LinearLayout) sliding.getMenu().findViewById(R.id.slidingleft_layout3);

        
bottom_tv1= (TextView) sliding.getMenu().findViewById(R.id.sliding_botomtv1);

        
bottom_tv2= (TextView) sliding.getMenu().findViewById(R.id.sliding_botomtv2);

        
scrollview= (ScrollView) sliding.getMenu().findViewById(R.id.slidingleft_lv);

 

        
layout1.setOnClickListener(
this
);

        
layout2.setOnClickListener(
this
);

        
layout3.setOnClickListener(
this
);

        
bottom_tv1.setOnClickListener(
this
);

        
bottom_tv2.setOnClickListener(
this
);

 

    
}

 

 

    
/**

     
*對控件進行監聽

     
*

     
*@author WangShujie

     
*created at 2016/4/23 19:31

     
*/

    
@Override

    
public
 
void
 
onClick(View v) {

        
switch
 
(v.getId()){

            
case
 
R.id.slidingleft_layout1:

                
Toast.makeText(MainActivity.
this
, 
"你點擊了我的好友"
, Toast.LENGTH_SHORT).show();

                
break
;

            
case
 
R.id.slidingleft_layout2:

                
Toast.makeText(MainActivity.
this
, 
"你點擊了我的收藏"
, Toast.LENGTH_SHORT).show();

 

                
break
;

            
case
 
R.id.slidingleft_layout3:

                
Toast.makeText(MainActivity.
this
, 
"你點擊了退出"
, Toast.LENGTH_SHORT).show();

 

                
break
;

 

            
case
 
R.id.sliding_botomtv1:

                
Toast.makeText(MainActivity.
this
, 
"你點擊了設置1"
, Toast.LENGTH_SHORT).show();

 

                
break
;

            
case
 
R.id.sliding_botomtv2:

                
Toast.makeText(MainActivity.
this
, 
"你點擊了設置2"
, Toast.LENGTH_SHORT).show();

 

                
break
;

        
}

    
}

 

}
SlidingMenu2:

package
 
com.wang.main;

 

import
 
android.graphics.Bitmap;

import
 
android.graphics.BitmapFactory;

import
 
android.os.Bundle;

import
 
android.util.Log;

import
 
android.view.View;

import
 
android.widget.ImageView;

import
 
android.widget.LinearLayout;

import
 
android.widget.ScrollView;

import
 
android.widget.TextView;

import
 
android.widget.Toast;

 

import
 
com.jeremyfeinstein.slidingmenu.lib.SlidingMenu;

import
 
com.jeremyfeinstein.slidingmenu.lib.app.SlidingFragmentActivity;

import
 
com.wang.main.GetRoundBitmap;

 

public
 
class
 
MainActivity 
extends
 
SlidingFragmentActivity 
implements
 
View.OnClickListener {

 

    
private
 
SlidingMenu sliding;

    
private
 
ImageView iv;

    
private
 
LinearLayout layout1,layout2,layout3;

    
private
 
TextView bottom_tv1,bottom_tv2;

    
private
 
ScrollView scrollview;

 

    
@Override

    
public
 
void
 
onCreate(Bundle savedInstanceState) {

        
super
.onCreate(savedInstanceState);

 

 

        
//設置頁面顯示內容,不包括菜單

        
setContentView(R.layout.activity_main);

        
//1、將繼承的Activity替換為框架中的SlidingFragmentActivity

 

        
//2、調用setBehindContentView設置菜單的顯示

        
setBehindContentView(R.layout.slidingleft);

 

 

        
//3、獲取SlidingFragmentActivity中自帶的菜單對象

        
sliding=getSlidingMenu();

        
initView();

 

        
//4、設置slidingmenu的顯示方式,left=只有左側菜單,rigth=只有右側菜單,LEFT_RIGHT=既能顯示左側,又能顯示右側

        
sliding.setMode(SlidingMenu.LEFT);

 

 

        
//5、設置菜單的顯示方式

//        /*

//        *SlidingMenu.TOUCHMODE_FULLSCREEN  在屏幕的任意位置滑動即可打開側滑菜單

//        * SlidingMenu.TOUCHMODE_MARGIN   必須從邊緣開始滑動才能打開側滑菜單

//        * SlidingMenu.TOUCHMODE_NONE   無論在什麼位置滑動都不能打開側滑菜單,必須通過點擊按鈕,手動調用打開菜單的方法

//          * */

        
sliding.setTouchModeAbove(SlidingMenu.TOUCHMODE_MARGIN);

 

        
//6、設置滑動菜單的隱藏方式

        
sliding.setTouchModeBehind(SlidingMenu.TOUCHMODE_MARGIN);

 

        
//7、設置菜單顯示寬度,設為屏幕的1/3

        
int
 
i=getResources().getDisplayMetrics().widthPixels*
2
/
3
;

        
sliding.setBehindWidth(i);

 

        
//設置內容與菜單邊緣的陰影效果

        
sliding.setShadowDrawable(getResources().getDrawable(R.drawable.shape_sdshadowdraw));

        
sliding.setShadowWidth(
30
);

 

        
//設置菜單的透明度的改變,其中setFadeEnabled默認值為true

//        sliding.setFadeEnabled(false);

        
sliding.setFadeDegree(
1
.0f);

 

        
//0-1,其中0表示,拉動菜單滾動時先出現的是菜單的開頭控件,1表示先出現末尾控件,默認0.5

        
sliding.setBehindScrollScale(
0
.5f);

 

 

 

 

        
//本來是要聯網讀取數據,並將圖片弄成圓形的,現在手動畫一下

 

        
GetRoundBitmap gp=
new
   
GetRoundBitmap();

        
Bitmap bp=gp.getRoundBitmap(BitmapFactory.decodeResource(getResources(), R.mipmap.naruto));

        
Log.i(
"mtag"
,
"start"
+bp);

        
Log.i(
"mtag"
,
"start"
+iv);

        
iv.setImageBitmap(bp);

 

    
}

 

 

    
/**

     
* 尋找控件

     
*

     
*@author WangShujie

     
*created at 2016/4/23 18:59

     
*/

    
private
 
void
 
initView() {

        
iv= (ImageView)sliding.getMenu().findViewById(R.id.slidingleft_iv);

        
layout1= (LinearLayout) sliding.getMenu().findViewById(R.id.slidingleft_layout1);

        
layout2=(LinearLayout) sliding.getMenu().findViewById(R.id.slidingleft_layout2);

        
layout3=(LinearLayout) sliding.getMenu().findViewById(R.id.slidingleft_layout3);

        
bottom_tv1= (TextView) sliding.getMenu().findViewById(R.id.sliding_botomtv1);

        
bottom_tv2= (TextView) sliding.getMenu().findViewById(R.id.sliding_botomtv2);

        
scrollview= (ScrollView) sliding.getMenu().findViewById(R.id.slidingleft_lv);

        
Log.i(
"mtag"
,
"tianfuxiaoyan++iv===="
+iv);

        
Log.i(
"mtag"
,
"tianfuxiaoyan++layout1===="
+layout1);

        
Log.i(
"mtag"
,
"tianfuxiaoyan++bottom_tv1===="
+bottom_tv1);

        
layout1.setOnClickListener(
this
);

        
layout2.setOnClickListener(
this
);

        
layout3.setOnClickListener(
this
);

        
bottom_tv1.setOnClickListener(
this
);

        
bottom_tv2.setOnClickListener(
this
);

 

    
}

 

 

    
/**

     
*對控件進行監聽

     
*

     
*@author WangShujie

     
*created at 2016/4/23 19:31

     
*/

    
@Override

    
public
 
void
 
onClick(View v) {

        
switch
 
(v.getId()){

            
case
 
R.id.slidingleft_layout1:

                
Toast.makeText(MainActivity.
this
, 
"你點擊了我的好友"
, Toast.LENGTH_SHORT).show();

                
break
;

            
case
 
R.id.slidingleft_layout2:

                
Toast.makeText(MainActivity.
this
, 
"你點擊了我的收藏"
, Toast.LENGTH_SHORT).show();

 

                
break
;

            
case
 
R.id.slidingleft_layout3:

                
Toast.makeText(MainActivity.
this
, 
"你點擊了退出"
, Toast.LENGTH_SHORT).show();

 

                
break
;

 

            
case
 
R.id.sliding_botomtv1:

                
Toast.makeText(MainActivity.
this
, 
"你點擊了設置1"
, Toast.LENGTH_SHORT).show();

 

                
break
;

            
case
 
R.id.sliding_botomtv2:

                
Toast.makeText(MainActivity.
this
, 
"你點擊了設置2"
, Toast.LENGTH_SHORT).show();

 

                
break
;

        
}

    
}

 

}

 

  1. 上一頁:
  2. 下一頁:
熱門文章
閱讀排行版
Copyright © Android教程網 All Rights Reserved