android滑動菜單欄
『壹』 安卓手機怎麼設置主屏和菜單的滑動
GO桌面應用可以滿足你所需要的那種主屏和菜單的滑動,然後在下載個大鍾
下載完按住主屏幕---添加小部件-----選擇大鍾-----大功告成
『貳』 問一下,怎麼才能把這Android 5.1.1,的二級菜單改成左右滑動啊。我今天開機它就變成上下滑
設置菜單。 按菜單鍵 然後就有切換效果 把那換了就行了
『叄』 android側滑菜單的狀態欄一體化怎麼去實現
首先是兩個開啟沉浸模式和關閉沉浸模式的函數 ? @SuppressLint("NewApi") public static void hideSystemUI(View view) { view.setSystemUiVisibility(View.SYSTEM_UI_FLAG_LAYOUT_STABLE View.SYSTEM_UI_FLAG_LAYOUT_HIDE_NAVIGATION View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN View.SYSTEM_UI_FLAG_HIDE_NAVIGATION View.SYSTEM_UI_FLAG_FULLSCREEN View.SYSTEM_UI_FLAG_IMMERSIVE_STICKY); } @SuppressLint("NewApi") public static void showSystemUI(View view) { view.setSystemUiVisibility( View.SYSTEM_UI_FLAG_LAYOUT_STABLE View.SYSTEM_UI_FLAG_LAYOUT_HIDE_NAVIGATION View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN); } 這些代碼可以在google的開發者文檔中找到,可以看這里Using Immersive Full-Screen Mode,上面的代碼是在Android 4.4中才會生效,對應的Android版本兼容的判斷請自行處理。 此外還需要一個輔助函數,用於獲得狀態欄高度,使用反射獲得。 ? /** * 獲狀態欄高度 * * @param context 上下文 * @return 通知欄高度 */ public int getStatusBarHeight(Context context) { int statusBarHeight = 0; try { Class<?> clazz = Class.forName("com.android.internal.R$dimen"); Object obj = clazz.newInstance(); Field field = clazz.getField("status_bar_height"); int temp = Integer.parseInt(field.get(obj).toString()); statusBarHeight = context.getResources().getDimensionPixelSize(temp); } catch (Exception e) { e.printStackTrace(); } return statusBarHeight; } 點擊hide按鈕進入沉浸模式,也就是隱藏狀態欄,隱藏狀態欄的同時我們需要修改Toolbar的上內邊距,否則會顯得很難看,這里注冊一個監聽,當進入沉浸模式後我們改變Toolbar的上內邊距 ? hide.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { View view = getWindow().getDecorView(); hideSystemUI(view); mToolbar.set(new View.() { @Override public void onSystemUiVisibilityChange(int visibility) { mToolbar.setPadding(mToolbar.getPaddingLeft(), 0,mToolbar.getPaddingRight(), mToolbar.getPaddingBottom()); } }); } }); 進入沉浸模式後,手指從屏幕頂部向下劃,狀態欄就出現了,過2秒左右它又會自動消失。 點擊show按鈕退出沉浸模式,同時Toolbar的內邊距也要增加到狀態欄的高度。 ? show.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { View view = getWindow().getDecorView(); showSystemUI(view); mToolbar.set(new View.() { @Override public void onSystemUiVisibilityChange(int visibility) { mToolbar.setPadding(mToolbar.getPaddingLeft(), getStatusBarHeight(MainActivity.this),mToolbar.getPaddingRight(), mToolbar.getPaddingBottom()); } }); } }); 如果使用的是SystemBarTintManager這個類進行的狀態欄的著色,除上方的操作外,還要在對應的監聽里增加狀態欄著色的禁止和啟動的功能。 進入沉浸模式,要禁用 ? tintManager.setStatusBarTintEnabled(false); 退出沉浸模式,要啟動 ? tintManager.setStatusBarTintEnabled(true); 如果你想更加平滑,則可以對padding的改成增加動畫,具體動畫效果自行添加。
『肆』 安卓手機屏幕頂端的任務欄怎麼調出來
以華為榮耀20手機為例,調出手機屏幕頂端的任務欄具體步驟如下:
1、打開手機電源,進入手機主頁面,如下圖所示;
『伍』 android HorizontalScrollView, 橫向滾動菜單,點擊項,控制移動的距離
有好多實現方法,簡單的就是用GridView(安卓自帶網格布局)或者HorizontalListView(自定義橫向list,網上有好多的)
再就是在activity中ScrollView自定義添加子View
還可以用ViewPager,TabHost
『陸』 Android 滑動菜單(slide menu) 背景 亮度和透明度設置
首先在sdk目錄下source源碼目錄下搜索DrawerLayout文件,把相關的java文件導入工程
以5.0為例
@Override
protectedbooleandrawChild(Canvascanvas,Viewchild,longdrawingTime){
finalintheight=getHeight();
finalbooleandrawingContent=isContentView(child);
intclipLeft=0,clipRight=getWidth();
finalintrestoreCount=canvas.save();
if(drawingContent){
finalintchildCount=getChildCount();
for(inti=0;i<childCount;i++){
finalViewv=getChildAt(i);
if(v==child||v.getVisibility()!=VISIBLE||
!hasOpaqueBackground(v)||!isDrawerView(v)||
v.getHeight()<height){
continue;
}
if((v,Gravity.LEFT)){
finalintvright=v.getRight();
if(vright>clipLeft)clipLeft=vright;
}else{
finalintvleft=v.getLeft();
if(vleft<clipRight)clipRight=vleft;
}
}
canvas.clipRect(clipLeft,0,clipRight,getHeight());
}
finalbooleanresult=super.drawChild(canvas,child,drawingTime);
canvas.restoreToCount(restoreCount);
if(mScrimOpacity>0&&drawingContent){
/*
*這里是直接用畫筆畫了一層有透明度的方塊覆蓋在主內容上方,產生慢*慢變暗的效果,所以我們只需要在這里修改即可,
*根據代碼邏輯可以知道我們只需要改變imag即可
*/
finalintbaseAlpha=(mScrimColor&0xff000000)>>>24;
finalintimag=(int)(baseAlpha*mScrimOpacity);
finalintcolor=imag<<24|(mScrimColor&0xffffff);
mScrimPaint.setColor(color);
canvas.drawRect(clipLeft,0,clipRight,getHeight(),mScrimPaint);
}elseif(mShadowLeft!=null&&(child,Gravity.LEFT)){
finalintshadowWidth=mShadowLeft.getIntrinsicWidth();
finalintchildRight=child.getRight();
finalintdrawerPeekDistance=mLeftDragger.getEdgeSize();
finalfloatalpha=
Math.max(0,Math.min((float)childRight/drawerPeekDistance,1.f));
//這里是繪制菜單的覆蓋物
mShadowLeft.setBounds(childRight,child.getTop(),
childRight+shadowWidth,child.getBottom());
mShadowLeft.setAlpha((int)(0xff*alpha));
mShadowLeft.draw(canvas);
}elseif(mShadowRight!=null&&(child,Gravity.RIGHT)){
finalintshadowWidth=mShadowRight.getIntrinsicWidth();
finalintchildLeft=child.getLeft();
finalintshowing=getWidth()-childLeft;
finalintdrawerPeekDistance=mRightDragger.getEdgeSize();
finalfloatalpha=
Math.max(0,Math.min((float)showing/drawerPeekDistance,1.f));
mShadowRight.setBounds(childLeft-shadowWidth,child.getTop(),
childLeft,child.getBottom());
mShadowRight.setAlpha((int)(0xff*alpha));
mShadowRight.draw(canvas);
}
returnresult;
}
改變代碼之後保存
這時候在布局文件中就不要使用android-supportv4包下的DrawerLayout的,改成你工程里修改後的DrawerLayout,運行就達到效果了
『柒』 如何實現android菜單欄衷謁衋ctivity底部
您好,很高興為您解答。
ViewPager Menu
ViewPagerActivity.java
常見控制項ViewPager,多用於左右滑動頁面。此處實現底部菜單欄,當然也保留了左右滑動頁面的功能。
packagecom.wisdom.viewpager;
importjava.util.ArrayList;
importcom.wisdom.main.BaseActivity;
importcom.wisdom.main.R;
importcom.wisdom.model.BottomViewItem;
importandroid.os.Bundle;
importandroid.support.v4.view.ViewPager;
importandroid.support.v4.view.ViewPager.OnPageChangeListener;
importandroid.view.View;
importandroid.view.View.OnClickListener;
importandroid.widget.ImageView;
importandroid.widget.LinearLayout;
importandroid.widget.TextView;
er,OnPageChangeListener{
ViewPagerviewPager;
ViewPagerAdapterviewAdapter;
BottomViewItemitem;
ArrayList<View>mViewItems=newArrayList<View>();
@Override
protectedvoidonCreate(BundlesavedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.viewpager_layout);
item=BottomViewItem.getInstance();
initViews();
setTabSelection(0);
}
/**
*控制項初始化
*/
privatevoidinitViews(){
viewPager=(ViewPager)findViewById(R.id.main_viewpager);
for(inti=0;i<item.viewNum;i++){
mViewItems.add(getLayoutInflater().inflate(item.layouts_id[i],null));
}
viewAdapter=newViewPagerAdapter(this,mViewItems);
viewPager.setAdapter(viewAdapter);
viewPager.setOnPageChangeListener(this);
for(inti=0;i<item.viewNum;i++){
item.linears[i]=(LinearLayout)findViewById(item.linears_id[i]);
item.linears[i].setOnClickListener(this);
item.images[i]=(ImageView)findViewById(item.images_id[i]);
item.texts[i]=(TextView)findViewById(item.texts_id[i]);
}
}
/**
*@paramindex
*根據索引值切換fragment
*/
privatevoidsetTabSelection(intindex){
clearSelection();
item.images[index].setImageResource(item.images_selected[index]);
item.texts[index].setTextColor(getResources().getColor(R.color.bottom_text_selected));
}
/**
*清空所有圖標和文字狀態
*/
privatevoidclearSelection(){
for(inti=0;i<item.viewNum;i++){
item.images[i].setImageResource(item.images_unselected[i]);
item.texts[i].setTextColor(getResources().getColor(R.color.bottom_text_unselected));
}
}
@Override
publicvoidonClick(Viewv){
for(inti=0;i<item.linears_id.length;i++)
if(v.getId()==item.linears_id[i]){
viewPager.setCurrentItem(i);
setTabSelection(i);
}
}
@Override
(intarg0){
}
@Override
publicvoidonPageScrolled(intarg0,floatarg1,intarg2){
}
@Override
publicvoidonPageSelected(intarg0){
setTabSelection(arg0);
}
}
2、ViewPagerAdapter.java
自定義ViewPager的適配器,構造不同頁面布局。
packagecom.wisdom.viewpager;
importjava.util.ArrayList;
importandroid.support.v4.view.PagerAdapter;
importandroid.view.View;
importandroid.view.ViewGroup;
{
/**
*保存當前activity引用
*/
;
/**
*保存當前所有頁面
*/
privateArrayList<View>mViewItems;
/**
*當前頁面的布局
*/
privateViewconvertView;
publicViewPagerAdapter(ViewPagerActivitycontext,ArrayList<View>viewItems){
mContext=context;
mViewItems=viewItems;
}
@Override
publicvoiddestroyItem(ViewGroupcontainer,intposition,Objectobject){
container.removeView(mViewItems.get(position));
}
@Override
publicObjectinstantiateItem(ViewGroupcontainer,intposition){
convertView=mViewItems.get(position);
//此處自定義頁面數據處理
container.addView(mViewItems.get(position));
returnmViewItems.get(position);
}
@Override
publicintgetCount(){
if(mViewItems==null||mViewItems.size()==0)
return1;
returnmViewItems.size();
}
@Override
publicbooleanisViewFromObject(Viewarg0,Objectarg1){
returnarg0==arg1;
}
}
Fragment Menu
1、BaseFragment.java
此類作用同BaseView類似,作為實現單個頁面的父類。通過設置不用的xml布局文件返回不用的頁面View。
packagecom.wisdom.fragment;
importandroid.app.Fragment;
importandroid.os.Bundle;
importandroid.view.LayoutInflater;
importandroid.view.View;
importandroid.view.ViewGroup;
{
@Override
publicViewonCreateView(LayoutInflaterinflater,ViewGroupcontainer,BundlesavedInstanceState){
returninflater.inflate(getArguments().getInt("layoutId"),container,false);
}
}
2、FragmentActivity.java
頁面展示主類文件,通過設置不同xml布局,展示不同頁面。
packagecom.wisdom.fragment;
importjava.util.HashMap;
importjava.util.Map;
importcom.wisdom.main.BaseActivity;
importcom.wisdom.main.R;
importcom.wisdom.model.BottomViewItem;
importandroid.app.FragmentManager;
importandroid.app.FragmentTransaction;
importandroid.os.Bundle;
importandroid.view.View;
importandroid.view.Window;
importandroid.view.View.OnClickListener;
importandroid.widget.ImageView;
importandroid.widget.LinearLayout;
importandroid.widget.TextView;
r{
/**
*對fragment進行增刪替換處理的實例
*/
;
/**
*首次創建頁面的臨時fragment
*/
;
/**
*fragment構造函數不建議帶參數,So如此傳遞xml布局參數
*/
privateBundleargs=newBundle();
/**
*底部菜單欄初始化所有控制項類的一個實例
*/
privateBottomViewItemitem;
/**
*用於存放所有新建的fragment
*/
privateMap<Integer,BaseFragment>fragmentMap;
/**
*fragment管理器
*/
;
@Override
protectedvoidonCreate(BundlesavedInstanceState){
super.onCreate(savedInstanceState);
requestWindowFeature(Window.FEATURE_NO_TITLE);
setContentView(R.layout.fragment_layout);
item=BottomViewItem.getInstance();
fragmentMap=newHashMap<Integer,BaseFragment>();
initViews();
fragmentManager=getFragmentManager();
setTabSelection(0);
}
/**
*底部菜單欄控制項初始化
*/
privatevoidinitViews(){
for(inti=0;i<item.viewNum;i++){
item.linears[i]=(LinearLayout)findViewById(item.linears_id[i]);
item.linears[i].setOnClickListener(this);
item.images[i]=(ImageView)findViewById(item.images_id[i]);
item.texts[i]=(TextView)findViewById(item.texts_id[i]);
}
}
@Override
publicvoidonClick(Viewv){
for(inti=0;i<item.linears_id.length;i++)
if(v.getId()==item.linears_id[i]){
setTabSelection(i);
}
}
/**
*@paramindex
*根據索引值切換fragment
*/
privatevoidsetTabSelection(intindex){
clearSelection();
transaction=fragmentManager.beginTransaction();
hideFragments(transaction);
item.images[index].setImageResource(item.images_selected[index]);
item.texts[index].setTextColor(getResources().getColor(R.color.bottom_text_selected));
if(fragmentMap.get(index)==null){
newFragment=newBaseFragment();
args.putInt("layoutId",item.layouts_id[index]);
fragmentMap.put(index,newFragment);
fragmentMap.get(index).setArguments(args);
transaction.add(R.id.main_fragment,fragmentMap.get(index));
}else{
transaction.show(fragmentMap.get(index));
}
transaction.commit();
}
/**
*清空所有圖標和文字狀態
*/
privatevoidclearSelection(){
for(inti=0;i<item.viewNum;i++){
item.images[i].setImageResource(item.images_unselected[i]);
item.texts[i].setTextColor(getResources().getColor(R.color.bottom_text_unselected));
}
}
/**
*@paramtransaction
*隱藏所有非空fragment
*/
privatevoidhideFragments(){
for(inti=0;i<fragmentMap.size();i++){
if(fragmentMap.get(i)!=null){
transaction.hide(fragmentMap.get(i));
}
}
}
}
如若滿意,請點擊右側【採納答案】,如若還有問題,請點擊【追問】
希望我的回答對您有所幫助,望採納!
~ O(∩_∩)O~
『捌』 android開發中,底部菜單欄固定不動,上方的內容可以實現上下滑動,該如何實現
我也 搞了這 線性布局改為相對布局就可以了 android:layout_alignParentBottom="true"