新しいFacebookアプリケーションとそのナビゲーションはとてもクールです。私のアプリケーションでそれをどのようにエミュレートできるかを確認しようとしていました。
誰かがそれをどのようにして達成することができるのか手掛かりを持っていますか?
左上のボタンをクリックすると、ページスライドと次の画面が表示されます。
新しいFacebookアプリケーションとそのナビゲーションはとてもクールです。私のアプリケーションでそれをどのようにエミュレートできるかを確認しようとしていました。
誰かがそれをどのようにして達成することができるのか手掛かりを持っていますか?
左上のボタンをクリックすると、ページスライドと次の画面が表示されます。
回答:
私自身もこれを試してみましたが、FrameLayoutを使用してカスタムのHorizontalScrollView(HSV)をメニューの上に配置するのが最善の方法でした。HSV内にはアプリケーションビューがありますが、最初の子として透過ビューがあります。これは、HSVのスクロールオフセットがゼロの場合、メニューが表示されることを意味します(意外にもクリック可能です)。
アプリが起動したら、HSVを最初に表示されるアプリケーションビューのオフセットまでスクロールし、メニューを表示したい場合は、スクロールして、透明なビューからメニューを表示します。
コードはここにあり、Launchアクティビティの下の2つのボタン(HorzScrollWithListMenuおよびHorzScrollWithImageMenuと呼ばれます)は、思いつく最高のメニューを表示します。
エミュレーターからのスクリーンショット(中央スクロール):
デバイスからのスクリーンショット(フルスクロール)。私のアイコンはFacebookメニューアイコンほど広くないため、メニュービューと「アプリ」ビューは整列していません。
getDrawingCache()
非メニューアクティビティを呼び出し、ビットマップからImageViewを作成することで、さまざまなアクティビティを使用できます。次に、クラスのメソッドでstartActivity(intent)
&overridePendingTransition(0, 0)
を呼び出して、新しいアクティビティをすぐに表示し、目的の効果を取得します。onClick
ClickListenerForScrolling
このライブラリプロジェクトに Facebookのようなスライドアウトナビゲーションを実装しました。
アプリケーション、UI、ナビゲーションに簡単に組み込むことができます。1つのアクティビティと1つのフラグメントのみを実装する必要があります。それをライブラリに知らせてください。ライブラリは、必要なすべてのアニメーションとナビゲーションを提供します。
リポジトリ内には、libを使用してfacebookのようなナビゲーションを実装する方法とともに、demo-projectがあります。これはデモプロジェクトの記録を含む短いビデオです。
また、このlibは、アクティビティトランザクションとTranslateAnimations(フラグメントトランザクションとカスタムビューではない)に基づいているため、このActionBarパターンと互換性があるはずです。
現在のところ、最も問題なのは、ポートレートモードとランドスケープモードの両方をサポートするアプリケーションでうまく機能させることです。フィードバックがある場合は、githubから提供してください。
最高です、
アレックス
((MenuActivity) getActivity()).getSlideoutHelper().close(); startActivity(new Intent(getActivity(), MyActivity.class) .addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP).putExtra("category", position));
私はFacebookのアプリはネイティブコードで書かれていないと思います(ネイティブコードで私は、Androidでのレイアウトを使用して、平均値)が、彼らはそれのために使用されるのWebViewを持っているなど、いくつかの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" />
ActionsContentViewライブラリの使用法について質問があります。プロジェクトWikiで小さな記事を書くことができます。
このライブラリのいくつかの利点:
制限が1つあります。
よろしく、スティーブン
Androidサポートパッケージリビジョン13(2013年5月)では、ウィンドウの端からプルできるナビゲーションドロワーを作成するためのDrawerLayoutがあります。そして今、ナビゲーションドロワーはデザインパターンです。
これはシンプルでエレガントです:https : //github.com/akotoe/android-slide-out-menu.git
スナップショット:
ライブラリは言及されていないと思います:
github url:
https://github.com/jfeinstein10/SlidingMenu
@Paul Grimeの回答にはまだコメントできませんが、とにかく私は彼のgithubプロジェクトにフリッカー問題の修正を提出しました...
ここに修正を投稿します。多分誰かがそれを必要としています。2行のコードを追加するだけです。anim.setAnimationListener呼び出しの下の最初のもの:
anim.setFillAfter(true);
そして、app.layout()呼び出しの後の2番目のもの:
app.clearAnimation();
お役に立てれば :)
私のAndroid共通ライブラリ(ACL)の一部として、独自のサイドバーを実装しました。主な利点:
ソースコード:https : //github.com/serso/android-common/tree/master/views/src/main/java/org/solovyev/android/view/sidebar
使用法:https : //github.com/serso/android-common/blob/master/samples/res/layout/acl_view_layout.xml
最近、スライディングメニューの実装バージョンに取り組みました。人気のあるJ.Feinstein AndroidライブラリーSlidingMenuを使用します。
GitHubでソースコードを確認してください:
https://github.com/baruckis/Android-SlidingMenuImplementation
アプリをデバイスに直接ダウンロードして試してください:
https://play.google.com/store/apps/details?id=com.baruckis.SlidingMenuImplementation
コメントのため、コードは自明です。お役に立てれば幸いです。;)
私はそれとその働きのための最も簡単な方法を見つけました。シンプルなナビゲーションドロワーを使用して、drawer.setdrawerListner()を呼び出し、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) {
}
});
}
}
ありがとうございました
ここで大胆な推測をします...
表示されないメニューを表すレイアウトがあると思います。メニューボタンがタップされると、レイアウト/ビューをアニメーション表示して邪魔にならないようにし、メニューレイアウトの表示を有効にします。私はこれがビューで何らかのz-indexの問題を引き起こすことや、それらがそれをどのように制御するかについては考えていません。
Androidがナビゲーションドロワーを追加しました。これを参照
Facebook Androidアプリは、おそらくFragmentsでビルドされています。メニューは片方のフラグメントで、詳細なアクティビティ(ニュースフィード/イベント/友達など)はもう片方のフラグメントです。基本的に、スマートフォンのタブレットの「マスター&ディテール」レイアウト。
ちなみに、互換性ライブラリは1.6で始まり、このFacebookアプリはAndroid 1.5搭載のデバイスでも実行されているため、Fragmentsでは実行できませんでした。
それを行う方法は次のとおりです。「基本」アクティビティBaseMenuActivityを作成します。ここで、メニューリストのonItemClickListenerのすべてのロジックを配置し、2つのアニメーション(「開く」と「閉じる」)を定義します。アニメーションの最後/最初に、BaseMenuActivityのレイアウトを表示/非表示にします(これをmenu_layoutと呼びます)。このアクティビティのレイアウトはシンプルで、アイテムとリストの右側にある透明な部分を含む唯一のリストです。この部分はクリック可能で、その幅は「移動ボタン」と同じ幅になります。これで、このレイアウトをクリックしてアニメーションを開始し、content_layoutを左にスライドさせて画面全体を表示できるようになります。オプション(メニューリストの項目)ごとに、BaseMenuActivityを拡張する「ContentActivity」を作成します。次に、リストの項目をクリックすると、メニューが表示された状態でItemSelectedContentActivityが開始されます(アクティビティが開始するとすぐにメニューが閉じます)。各ContentActivityのレイアウトはFrameLayoutであり、およびが含まれます。content_layoutを移動して、必要なときにmenu_layoutを表示するだけです。
それはそれを行う方法であり、私は十分に明確になっていれば幸いです。
私は過去数日間、これを試していましたが、結局のところ、非常に簡単で、Honeycombより前に機能するソリューションを考え出しました。私の解決策は、スライドしたいビューをアニメーション化し(FrameLayout
私にとって)、アニメーションの終わり(ビューの左/右の位置をオフセットするポイント)をリッスンすることでした。私のソリューションをここに貼り付けました:ビューの翻訳をアニメーション化する方法
数時間検索した後、ポールグライムのソリューションがおそらく最良のものであることがわかりました。ただし、機能が多すぎます。だから初心者には勉強が難しいかもしれません。したがって、Paulのアイデアに基づいた実装を提供したいと思いますが、それはよりシンプルで読みやすいはずです。
上記の回答のどこかに言及されている素晴らしいSimonVT / android-menudrawerは見当たりませんでした。だからここにリンクがあります
https://github.com/SimonVT/android-menudrawer
とても使いやすく、左、右、上、または下に置くことができます。サンプルコードとApache 2.0ライセンスで十分に文書化されています。
2012年6月に、GoogleはEclipse ADTプラグインに「テンプレート」を追加しました。「マスター/詳細フロー」と呼ばれるテンプレートがあり、これを正確に実行します(フラグメントに基づいて)