新しいFacebookアプリケーションとそのナビゲーションはとてもクールです。私は自分のアプリケーションでそれがどのようにエミュレートできるかを見ようとしていただけです。
それがどのようにして達成されることができるかについて誰かが手がかりを持っていますか?
左上のボタンをクリックすると、ページがスライドし、次の画面が表示されます。
私はこれを自分でプレイしました、そして私が見つけることができる最も良い方法はFrameLayoutを使用してメニューの上にカスタムHorizontalScrollView(HSV)を置くことでした。 HSVの内部にはアプリケーションビューがありますが、最初の子として透明なビューがあります。つまり、HSVのスクロールオフセットがゼロの場合、メニューは透けて見えます(それでも驚くほどクリック可能です)。
アプリが起動したら、HSVを最初に表示されているアプリケーションビューのオフセットまでスクロールします。メニューを表示したい場合は、スクロールバックして透明なビューを通してメニューを表示します。
コードはここにあり、Launchアクティビティの下の2つのボタン(HorzScrollWithListMenuとHorzScrollWithImageMenuと呼ばれます)は、私が思い付くことができる最高のメニューを示しています。
エミュレータからのスクリーンショット(中央スクロール):
デバイスからのスクリーンショット(フルスクロール)。私のアイコンはFacebookのメニューアイコンほど広くはないので、メニュービューと 'app'ビューは整列していません。
私は このライブラリプロジェクト にfacebook風のスライドアウトナビゲーションを実装しました。
あなたはそれをあなたのアプリケーション、あなたのUIとナビゲーションに簡単に組み込むことができます。 1つのActivityと1つのFragmentだけを実装する必要があります。それをライブラリに知らせます - そしてライブラリはすべての必要なアニメーションとナビゲーションを提供します。
リポジトリの中にはデモプロジェクトがあり、libを使ってfacebookのようなナビゲーションを実装する方法があります。 これはデモプロジェクトの記録がある短いビデオです 。
また、このライブラリは、このトランザクションバーパターンと互換性があるはずです。これは、アクティビティトランザクションとTranslateAnimationsに基づいているためです(フラグメントトランザクションとカスタムビューではありません)。
今のところ、最大の問題は、ポートレートモードとランドスケープモードの両方をサポートするアプリケーションに最適に機能させることです。何かご意見がありましたら、githubで提供してください。
ではごきげんよう、
アレックス
これが another libで、私の考えでは最高のようです。書きませんでした。
更新:
このコードは私にとっては最もうまくいくように思われ、それはG +アプリに似た全体のActionbarを動かします。
私はFacebookアプリはネイティブコードで書かれていないと思います(つまりネイティブコードではAndroidのレイアウトを使用しています)が、彼らはウェブビューを使用し、 sencha のようなjavascriptのuiライブラリを使用しています。 。それはsenchaフレームワークを使って簡単に達成できます。
これはまた別の(とても素敵な)オープンソースライブラリです。
これに関する優れた機能は、ActionBarSherlockと簡単に統合できることです。
これが github プロジェクトのリンクです。
これが Google Play ダウンロードリンクです。
私は自分のプロジェクトに対して同様のビューを実装したところです。確認できます ここ
これは私が書いたライブラリに基づいたサンプルアプリケーションの画面です。
このカスタムビューをXMLレイアウトの要素として使用するのは簡単です。これが例です。
<shared.ui.actionscontentview.ActionsContentView
Android:id="@+id/content"
Android:layout_width="match_parent"
Android:layout_height="match_parent"
app:actions_layout="@layout/actions"
app:content_layout="@layout/content" />
私はあなたが私がプロジェクトWikiで小さな記事を書くことができるActionsContentViewライブラリの使用法についての質問をするでしょう。
このライブラリのいくつかの利点:
1つ制限があります。
よろしく、スティーブン
Androidサポートパッケージのリビジョン13(2013年5月)では、ウィンドウの端から引き込むことができるNavigation Drawerを作成するためのDrawerLayoutがあります。そして今、ナビゲーション引き出しはデザインパターンです。
既存の実装 をまとめてライブラリプロジェクトとサンプルアプリケーションに変えました。また、XML解析と、存在する可能性があるアクションバーの自動検出も追加されたため、ネイティブアクションバーやActionBarSherlockなどのサポートアクションバーと連携します。
これもアクションバーをスライドさせます。
全体的なことは、サンプルアプリと一緒にライブラリプロジェクトであり、 GoogleやFacebookのアプリのようなAndroid用のスライディングメニュー で説明されています。最初のアイデアとコードを提供してくれた scirocco に感謝します。
これはシンプルでエレガントです: https://github.com/akotoe/Android-slide-out-menu.git
スナップショット:
図書館は言及していないと思います。
github url:
https://github.com/jfeinstein10/SlidingMenu
とにかく、私は彼のgithubプロジェクトでフリッカー問題の修正を提出しました。
私はここに修正を載せるつもりです、多分誰かがそれを必要とします。 2行のコードを追加するだけです。 anim.setAnimationListener呼び出しの下の最初のもの:
anim.setFillAfter(true);
そしてapp.layout()呼び出しの後の2番目のもの:
app.clearAnimation();
お役に立てれば :)
私はこれをAbsoluteLayoutとビューを隠すために負のオフセットに移動する簡単なスライドコントローラで実装しました。
誰か興味があるなら、私はコード/レイアウトを整理して投稿することができます。 AbsoluteLayoutは廃止予定ですが、非常に単純な実装でした。左ビュー/右ビュー、そして「スライドして開く」場合は、左ビューを-Xオフセットからデバイスの幅まで外側に移動します。
こんにちはこれはスライドメニューのようなフェイスブックを提供する最高のサンプルデモアプリです。コードを確認してください ここ
最近私はスライディングメニューの実装バージョンに取り組んできました。それは人気のあるJ.Feinstein AndroidライブラリSlidingMenuを使用しています。
GitHubでソースコードを確認してください。
https://github.com/baruckis/Android-SlidingMenuImplementation
試してデバイスに直接アプリをダウンロードしてください:
https://play.google.com/store/apps/details?id=com.baruckis.SlidingMenuImplementation
コメントのため、コードは一目瞭然です。お役に立てば幸いです。 ;)
私はそれとその作業のための最も簡単な方法を見つけました。単純なナビゲーションドロワーを使用してdrawer.setdrawerListner()を呼び出し、下記のdrawerSlideメソッドでmainView.setX()メソッドを使用するか、コードをコピーします。
xmlファイル
<Android.support.v4.widget.DrawerLayout
xmlns:Android="http://schemas.Android.com/apk/res/Android"
Android:id="@+id/drawer_layout"
Android:layout_width="match_parent"
Android:layout_height="match_parent"
Android:background="#000000" >
<RelativeLayout
Android:id="@+id/content_frame"
Android:layout_width="match_parent"
Android:layout_height="match_parent"
Android:background="#ffffff">
<ImageView
Android:layout_width="40dp"
Android:layout_height="40dp"
Android:id="@+id/menu"
Android:layout_alignParentTop="true"
Android:layout_alignParentLeft="true"
Android:layout_marginTop="10dp"
Android:layout_marginLeft="10dp"
Android:src="@drawable/black_line"
/>
</RelativeLayout>
<RelativeLayout
Android:id="@+id/left_drawer"
Android:layout_width="200dp"
Android:background="#181D21"
Android:layout_height="match_parent"
Android:layout_gravity="start"
>
</RelativeLayout>
</Android.support.v4.widget.DrawerLayout>
Javaファイル
public class MainActivity extends AppCompatActivity {
DrawerLayout drawerLayout;
RelativeLayout mainView;
ImageView menu;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
menu=(ImageView)findViewById(R.id.menu);
drawerLayout = (DrawerLayout) findViewById(R.id.drawer_layout);
mainView=(RelativeLayout)findViewById(R.id.content_frame);
menu.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
drawerLayout.openDrawer(Gravity.LEFT);
}
});
drawerLayout.setDrawerListener(new DrawerLayout.DrawerListener() {
@Override
public void onDrawerSlide(View drawerView, float slideOffset) {
mainView.setX(slideOffset * 300);
}
@Override
public void onDrawerOpened(View drawerView) {
}
@Override
public void onDrawerClosed(View drawerView) {
}
@Override
public void onDrawerStateChanged(int newState) {
}
});
}
}
ありがとうございました
私のAndroid Common Library(ACL)の一部として、私は独自のSideBarを実装しました。主な利点:
使用法: https://github.com/serso/Android-common/blob/master/samples/res/layout/acl_view_layout.xml
私はここでいくつかの大胆な推測をするつもりです...
見えないメニューを表すレイアウトがあると思います。メニューボタンがタップされると、それらは一番上のレイアウト/ビューをアニメートして邪魔にならないように動かし、単にメニューレイアウトの可視性を有効にします。私はこれがビューの中で何らかのz-indexの問題を引き起こすということ、またはそれらがどのようにそれを制御するかについて考えていませんでした。
FacebookのAndroidアプリはおそらく Fragments でビルドされています。メニューは1つのフラグメントです、詳細なアクティビティ(ニュースフィード/イベント/友達など)は他のフラグメントです。基本的には電話のタブレットの「マスターと詳細」のレイアウト。
情報としては、互換性ライブラリは1.6で始まり、このfacebookアプリはAndroid 1.5のデバイスでも動作しているので、Fragmentsではできませんでした。
あなたがそれをすることができる方法は:あなたがあなたのメニューリストのためにonItemClickListenerのためにすべてのロジックを置く「基本」アクティビティBaseMenuActivityを作成して、そして2つのアニメーション(「開く」と「閉じる」)を定義する。アニメーションの最後/最初に、BaseMenuActivityのレイアウトの表示/非表示を切り替えます(menu_layoutと呼びます)。このアクティビティのレイアウトは単純です。アイテムを含むリストと、リストの右側にある透明な部分だけです。この部分はクリック可能になり、その幅はあなたの「移動ボタン」と同じ幅になります。これで、このレイアウトをクリックしてアニメーションを開始し、content_layoutを左にスライドさせて画面全体を表示することができます。各オプション(メニューリストの項目)に対して、BaseMenuActivityを拡張する "ContentActivity"を作成します。次に、リストの項目をクリックすると、メニューが表示された状態でItemSelectedContentActivityが起動します(これは、アクティビティが開始されるとすぐに閉じます)。各ContentActivityのレイアウトはFrameLayoutであり、とが含まれます。必要なときにcontent_layoutを移動してmenu_layoutを見えるようにするだけです。
それはそれをする方法です、そして私は私が十分明確にしてくれたと思います。
私は上記の答えのどこかに言及されている驚くべきSimonVT/Android-menudrawerを見ませんでした。だからここにリンクがあります
https://github.com/SimonVT/Android-menudrawer
その非常に使いやすいとあなたは左、右、上または下に置くことができます。サンプルコードとApache 2.0ライセンスで非常によく文書化されています。
Androidはナビゲーション引き出しを追加しました。これを参照
私は過去数日間これで遊んできました、そして私は結局非常に簡単で、そしてハニカム以前に働く解決策を思い付きました。私の解決策は、スライドさせたいビューをアニメーション化し(私にとってはFrameLayout
)、アニメーションの終わり(ビューの左右の位置をオフセットするポイント)を監視することでした。私はここに私の解決策を貼り付けました: Viewの翻訳をアニメートする方法
数時間検索した結果、Paul Grimeの解決策がおそらく最善の解決策であることがわかりました。しかし、それにはあまりにも多くの機能があります。だから初心者のために勉強するのは難しいかもしれません。それで私はPaulの考えから来た私の実装を提供したいのですが、それはより簡単で読みやすいはずです。
2012年6月、 GoogleはEclipse ADTプラグインに "templates"を追加しました 、そしてそれを行う "master/detail flow"というテンプレートがあります(断片に基づいて)