Android 有没有可能实现无碎片的导航抽屉?
我已经在这个问题上纠缠了两天,试图自己解决。我想我的应用程序有导航抽屉,碎片对我来说很难理解。我不想更改我的任何代码。我看到过这样的例子,但它并不能帮助我理解太多 我只是不知道,如何在没有抽屉的情况下实现导航 感谢您的帮助Android 有没有可能实现无碎片的导航抽屉?,android,navigation,drawer,Android,Navigation,Drawer,我已经在这个问题上纠缠了两天,试图自己解决。我想我的应用程序有导航抽屉,碎片对我来说很难理解。我不想更改我的任何代码。我看到过这样的例子,但它并不能帮助我理解太多 我只是不知道,如何在没有抽屉的情况下实现导航 感谢您的帮助 谢谢 我也有这个问题。如果您的问题是有多个片段,您可以修复它,但这并不理想。您需要做的是创建多个活动,在每个活动中,您可能需要重新创建naviagation抽屉。但不管怎样,您仍然必须将视图设置为片段 但是。。如果不想使用片段,唯一的方法就是在每个xml布局中添加一个抽屉布局
谢谢 我也有这个问题。如果您的问题是有多个片段,您可以修复它,但这并不理想。您需要做的是创建多个活动,在每个活动中,您可能需要重新创建naviagation抽屉。但不管怎样,您仍然必须将视图设置为片段 但是。。如果不想使用片段,唯一的方法就是在每个xml布局中添加一个抽屉布局(导航抽屉只是屏幕一侧的抽屉布局)。这是谷歌推出自己的导航抽屉之前人们所做的
我知道这可能不是您想要的答案,但我希望它能帮助您使用此代码可以制作任何滑动动画 菜单布局是幻灯片表单左侧的布局 实际布局是用户首先可以看到的布局。 总布局包含这两个部分。 我曾经遇到过同样的问题,所以我已经完成了这个代码,它工作得非常好 祝你一切顺利:) MainActivity.java的代码
package com.example.slidemenuanimation;
import android.app.Activity;
import android.os.Bundle;
import android.view.Display;
import android.view.Menu;
import android.view.View;
import android.view.View.OnClickListener;
import android.view.animation.Animation;
import android.view.animation.Animation.AnimationListener;
import android.view.animation.TranslateAnimation;
import android.widget.FrameLayout;
import android.widget.ImageView;
import android.widget.LinearLayout;
import android.widget.RelativeLayout;
public class MainActivity extends Activity implements AnimationListener {
int ActualLayoutWidth, MenuLayoutWidth, TotalLayoutWidth;
RelativeLayout actualLayout, totalLayout;
LinearLayout menuLayout;
RelativeLayout.LayoutParams menuLayoutParams, actualLayoutParams;
FrameLayout.LayoutParams totallayoutParams;
ImageView menulayoutImage, actualLayoutImage;
TranslateAnimation MenuClickRightAnim, MenuClickLeftAnim;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
Display display = getWindowManager().getDefaultDisplay();
ActualLayoutWidth = display.getWidth();
MenuLayoutWidth = display.getWidth();
TotalLayoutWidth = ActualLayoutWidth + MenuLayoutWidth;
menuLayout = (LinearLayout) findViewById(R.id.menu_layout);
actualLayout = (RelativeLayout) findViewById(R.id.actuallayout);
totalLayout = (RelativeLayout) findViewById(R.id.totallayout);
// parmeters for total layout
totallayoutParams = new FrameLayout.LayoutParams(TotalLayoutWidth,
FrameLayout.LayoutParams.FILL_PARENT, 3);
totallayoutParams.setMargins(-MenuLayoutWidth, 0, 0, 0);
totalLayout.setLayoutParams(totallayoutParams);
// parmeters for menu layout
menuLayoutParams = new RelativeLayout.LayoutParams(MenuLayoutWidth,
RelativeLayout.LayoutParams.FILL_PARENT);
menuLayout.setLayoutParams(menuLayoutParams);
// parameters for actual layout
actualLayoutParams = new RelativeLayout.LayoutParams(ActualLayoutWidth,
RelativeLayout.LayoutParams.FILL_PARENT);
actualLayoutParams.addRule(RelativeLayout.RIGHT_OF, R.id.menu_layout);
actualLayout.setLayoutParams(actualLayoutParams);
// intializing animations
// menu moves right
MenuClickRightAnim = new TranslateAnimation(0, MenuLayoutWidth, 0, 0);
MenuClickRightAnim.setFillAfter(true);
MenuClickRightAnim.setAnimationListener(this);
MenuClickRightAnim.setDuration(750);
// menu moves left
MenuClickLeftAnim = new TranslateAnimation(0, -MenuLayoutWidth, 0, 0);
MenuClickLeftAnim.setAnimationListener(this);
MenuClickLeftAnim.setFillAfter(true);
MenuClickLeftAnim.setDuration(750);
// init widgets
menulayoutImage = (ImageView) findViewById(R.id.imagein_menulayout);
menulayoutImage.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
totalLayout.setAnimation(MenuClickLeftAnim);
totalLayout.startAnimation(MenuClickLeftAnim);
}
});
actualLayoutImage = (ImageView) findViewById(R.id.imagein_actuallayout);
actualLayoutImage.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
totalLayout.setAnimation(MenuClickRightAnim);
totalLayout.startAnimation(MenuClickRightAnim);
}
});
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
// Inflate the menu; this adds items to the action bar if it is present.
getMenuInflater().inflate(R.menu.main, menu);
return true;
}
@Override
public void onAnimationEnd(Animation animation) {
if (animation == MenuClickRightAnim) {
// setting params for total layout because naimtion transfers raw
// pizels not actual layout
totalLayout.clearAnimation();
totallayoutParams = new FrameLayout.LayoutParams(TotalLayoutWidth,
FrameLayout.LayoutParams.FILL_PARENT, 3);
totallayoutParams.setMargins(0, 0, 0, 0);
totalLayout.setLayoutParams(totallayoutParams);
}
if (animation == MenuClickLeftAnim) {
totalLayout.clearAnimation();
totallayoutParams = new FrameLayout.LayoutParams(TotalLayoutWidth,
FrameLayout.LayoutParams.FILL_PARENT, 3);
totallayoutParams.setMargins(-MenuLayoutWidth, 0, 0, 0);
totalLayout.setLayoutParams(totallayoutParams);
}
}
@Override
public void onAnimationRepeat(Animation arg0) {
// TODO Auto-generated method stub
}
@Override
public void onAnimationStart(Animation arg0) {
// TODO Auto-generated method stub
}
}
xml activitymain.xml的代码
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:id="@+id/totallayout"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="#F6F6F6"
tools:context=".MainActivity" >
<LinearLayout
android:id="@+id/menu_layout"
android:layout_width="fill_parent"
android:layout_height="match_parent"
android:orientation="horizontal" >
<ImageView
android:id="@+id/imagein_menulayout"
android:layout_width="50dp"
android:layout_height="50dp"
android:src="@drawable/ic_launcher" />
</LinearLayout>
<RelativeLayout
android:id="@+id/actuallayout"
android:layout_width="fill_parent"
android:layout_height="match_parent" >
<ImageView
android:id="@+id/imagein_actuallayout"
android:layout_width="150dp"
android:layout_height="150dp"
android:src="@drawable/ic_launcher" />
</RelativeLayout>
</RelativeLayout>
我最终使用了片段,这并不难理解。