Facebook アプリのようなスライド メニュー バーを実装したかったので、次のgithub の例を使用して実装しました。
すべてのアプリ画面にレイアウトを追加しています。私の問題は次のとおりです。
- アプリを開きます。
- メニューを開くアイコンをクリックします
- メニューを開いている間にアプリが読み込まれると、メニューが自動的に閉じます。
- メニューを開くアイコンをクリックすると、メニューが踊ります。
- これは、メニューが開いているときに追加がロードされた場合にのみ発生します。
ここに私の典型的なレイアウトファイルがあります
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
style="@style/Fill" >
<FrameLayout
android:id="@+id/FL_home"
style="@style/Fill"
android:layout_above="@id/adView" >
<include layout="@layout/app_com_menu" />
<LinearLayout
android:id="@+id/LL_app"
style="@style/Fill.RL"
android:orientation="vertical" >
<include layout="@layout/app_com_title" />
<ListView
style="@style/FillWrap.List" />
<include layout="@layout/network_error" />
<include layout="@layout/error_no_live"/>
</LinearLayout>
</FrameLayout>
<include layout="@layout/ad_layout" />
私の ad_layout ファイルは次のとおりです。
<?xml version="1.0" encoding="utf-8"?>
<com.google.ads.AdView xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:ads="http://schemas.android.com/apk/lib/com.google.ads"
android:id="@+id/adView"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:layout_alignParentBottom="true"
ads:adSize="BANNER"
ads:adUnitId="xxxxxxxxxxxx"
ads:loadAdOnCreate="true"
android:visibility="gone" />
そして、これがスライド式引き出しの主なロジックです
class AppMenuListener implements OnClickListener {
public void onClick(View v) {
doAnimation();
}
}
class AppMenuCloseListener implements OnClickListener {
public void onClick(View v) {
if (menuOut) {
doAnimation();
}
}
}
private void doAnimation() {
AppBase me = AppBase.this;
Animation animation = null;
int width = appPage.getMeasuredWidth();
int height = appPage.getMeasuredHeight();
int left = (int) (appPage.getMeasuredWidth() * 0.67);
if (menuOut) {
if (appMenu.getVisibility() == View.VISIBLE) {
animation = new TranslateAnimation(0, -left, 0, 0);
animation.setDuration(300);
animParams.set(0, 0, width, height);
}
} else {
if (appMenu.getVisibility() == View.INVISIBLE) {
animation = new TranslateAnimation(0, left, 0, 0);
appMenu.setVisibility(View.VISIBLE);
animParams.set(left, 0, left + width, height);
animation.setDuration(400);
}
}
animation.setAnimationListener(me);
animation.setFillEnabled(true);
appPage.startAnimation(animation);
}
public void onAnimationEnd(Animation animation) {
menuOut = !menuOut;
if (!menuOut) {
appMenu.setVisibility(View.INVISIBLE);
}
appPage.layout(animParams.left, animParams.top, animParams.right,
animParams.bottom);
}
public void onAnimationRepeat(Animation animation) {
}
public void onAnimationStart(Animation animation) {
}
static class AnimParams {
int left, right, top, bottom;
void set(int left, int top, int right, int bottom) {
this.left = left;
this.top = top;
this.right = right;
this.bottom = bottom;
}
}
メニューが表示されていない場合、adListener を使用して広告の読み込みを停止しようとしましたが、うまくいきませんでした。
誰かが私が違うことができることを提案できますか?