Yeni Facebook uygulaması ve navigasyonu çok havalı. Uygulamamda nasıl taklit edilebileceğini görmeye çalışıyordum.
Herkesin nasıl başarılabileceğine dair bir fikri var mı?

Sol üst düğmeye tıklandığında sayfa kayıyor ve aşağıdaki ekran gösteriliyor:

Yeni Facebook uygulaması ve navigasyonu çok havalı. Uygulamamda nasıl taklit edilebileceğini görmeye çalışıyordum.
Herkesin nasıl başarılabileceğine dair bir fikri var mı?

Sol üst düğmeye tıklandığında sayfa kayıyor ve aşağıdaki ekran gösteriliyor:

Yanıtlar:
Ben kendim bir oyun vardı ve bulabildiğim en iyi yolu bir FrameLayout kullanmak ve menünün üstüne özel bir HorizontalScrollView (HSV) koymak oldu. HSV'nin içinde uygulama Görünümleriniz vardır, ancak ilk çocuk olarak şeffaf bir Görünüm vardır. Bu, HSV'nin sıfır kaydırma ofseti olduğunda, menü içinden görünecek (ve yine de şaşırtıcı bir şekilde tıklanabilir).
Uygulama başlatıldığında, HSV'yi ilk görünür uygulama Görünümü'nün ofsetine kaydırırız ve menüyü göstermek istediğimizde menüyü şeffaf Görünüm üzerinden göstermek için geri kaydırırız.
Kod burada ve Başlatma etkinliğindeki alt iki düğme (HorzScrollWithListMenu ve HorzScrollWithImageMenu olarak adlandırılır), gelebileceğim en iyi menüleri gösterir:
Emülatörden ekran görüntüsü (orta kaydırma):

Cihazdan ekran görüntüsü (tam kaydırma). Simgemin Facebook menü simgesi kadar geniş olmadığını unutmayın, bu nedenle menü görünümü ve 'uygulama' görünümü hizalanmamıştır.

getDrawingCache()Menü dışı etkinliklerinizi arayarak ve bitmapten bir ImageView oluşturarak farklı etkinlikler kullanabilirsiniz . Ardından çağrı startActivity(intent)& overridePendingTransition(0, 0)at onClickyöntemine ClickListenerForScrollingsınıfında hemen yeni etkinlik gösteren ve istenen etkiyi elde etmek için.
Bu kütüphane projesinde facebook benzeri kayar navigasyon uyguladım .
Kolayca uygulamanıza, kullanıcı arayüzünüze ve navigasyonunuza entegre edebilirsiniz. Sadece bir Etkinlik ve bir Parçayı uygulamanız, kütüphaneye bunu bildirmeniz gerekir ve kütüphane istenen tüm animasyonları ve gezinmeyi sağlar.
Reponun içinde, facebook benzeri navigasyonu uygulamak için lib'in nasıl kullanılacağı ile demo-proje bulabilirsiniz. İşte demo proje kaydı ile kısa bir video .
Ayrıca bu lib, bu ActionBar kalıbıyla uyumlu olmalıdır, çünkü Etkinlikler işlemleri ve TranslateAnimations'a (Parça işlemleri ve özel Görünümler değil) dayanmaktadır.
Şu anda, en çok sorun hem portre hem de manzara modunu destekleyen uygulama için iyi çalışmasını sağlamaktır. Herhangi bir geri bildiriminiz varsa, lütfen github aracılığıyla sağlayın.
En iyi
dileklerimle , Alex
((MenuActivity) getActivity()).getSlideoutHelper().close(); startActivity(new Intent(getActivity(), MyActivity.class) .addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP).putExtra("category", position));
İşte başka bir lib ve bence en iyisi gibi görünüyor. Ben yazmadım ..
GÜNCELLEME:
Bu kod benim için en iyi şekilde çalışıyor ve tüm Actionbar'ı G + uygulamasına benzer şekilde taşıyor.
Google bunu nasıl başardı? Android uygulamasında Slayt ActionBar
Ben facebook uygulaması (Android'de düzenleri kullanarak demek istediğim yerel kod ile) yerel kod yazılmamış düşünüyorum ama bunun için webview kullandık ve sencha gibi bazı javascript ui kütüphaneleri kullandık . Sencha çerçevesi kullanılarak kolayca elde edilebilir.

İşte başka bir (çok güzel) açık kaynak kütüphanesi!
Bununla ilgili en iyi özellik, ActionBarSherlock ile kolayca entegre edilmesidir.
İşte github proje bağlantısı
İşte Google Play indirme bağlantısı
Kendi projem için de benzer bir görüş uyguladım. Buradan kontrol edebilirsiniz
İşte yazdığım kütüphaneye dayalı örnek uygulama ekranı:

Bu özel görünümü XML mizanpajı unsuru olarak kullanmak kolaydır. İşte örnek:
<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 kitaplığının kullanımı hakkında herhangi bir sorunuz olacak Wiki projelerinde küçük bir yazı yazabilirim.
Bu kütüphanenin bazı avantajları:
Bir sınırlama vardır:
Saygılarımla, Steven
Android destek paketi revizyonu 13 (Mayıs 2013) ile, bir pencerenin kenarından çekilebilen bir Gezinme Çekmecesi oluşturmak için DrawerLayout vardır. Ve gezinme çekmecesi şimdi bir tasarım deseni.
Mevcut bir uygulamanın toplanması bir kütüphane projesi ve örnek bir uygulamaya dönüştürüldü. Ayrıca XML ayrıştırma yanı sıra, muhtemelen mevcut bir eylem çubuğunun otomatik algılama ekledi, bu yüzden yerel ve ActionBarSherlock gibi bir destek eylem çubuğu ile çalışır.
Bu da eylem çubuğunu kaydırıyor!
Her şey örnek bir uygulama ile birlikte bir kütüphane projesidir ve google ve facebook uygulamaları gibi Android için bir kayan menüde açıklanmıştır . Sayesindeİlk fikir ve kod scirocco'ya!

Bence kütüphane bundan bahsetmiyor:
github url:https://github.com/jfeinstein10/SlidingMenu
@Paul Grime tarafından verilen cevap hakkında henüz yorum yapamam, yine de onun github projesinde titreşim sorunu için düzeltme gönderdim ....
Düzeltmeyi buraya gönderirim, belki birinin buna ihtiyacı vardır. Sadece iki satır kod eklemeniz gerekir. Anim.setAnimationListener çağrısının altındaki ilk kişi:
anim.setFillAfter(true);
Ve app.layout () çağrısından sonraki ikincisi:
app.clearAnimation();
Bu yardımcı olur umarım :)
AbsoluteLayout ve gizlemek için olumsuz bir ofset görünüm hareket basit bir slayt denetleyicisi ile bu uyguladım.
Herkes ilgilenirse, ben kod / düzen ve posta temizleyebilirsiniz. AbsoluteLayout'un kullanımdan kaldırıldığını biliyorum, ancak çok basit bir uygulama oldu. Soldan Görünüm / Sağdan Görünüm ve "kayan açık" durumdayken, sol görünümü bir -X ofsetinden cihazın genişliğine taşıyın - Sağdan Görünüşü göstermek istediğiniz her şey
Android Ortak Kitaplığımın (ACL) bir parçası olarak kendi SideBar'ımı uyguladım. Ana avantajlar:
Kaynak kodu: https://github.com/serso/android-common/tree/master/views/src/main/java/org/solovyev/android/view/sidebar
Kullanım: https://github.com/serso/android-common/blob/master/samples/res/layout/acl_view_layout.xml
Son zamanlarda sürgülü menü uygulama sürümü üzerinde çalıştım. Popüler J.Feinstein Android kütüphanesi SlidingMenu kullanır.
Lütfen GitHub'daki kaynak kodunu kontrol edin:
https://github.com/baruckis/Android-SlidingMenuImplementation
Denemek için uygulamayı doğrudan cihaza indirin:
https://play.google.com/store/apps/details?id=com.baruckis.SlidingMenuImplementation
Kod, yorumlar nedeniyle kendini açıklayıcı olmalıdır. Umarım faydalı olacaktır! ;)
Bunun ve çalışmanın en basit yolunu buldum. Basit Gezinme çekmecesini kullanın ve drawer.setdrawerListner () öğesini çağırın ve aşağıdaki drawerSlide yönteminde mainView.setX () yöntemini kullanın veya kodumu kopyalayın.
xml dosyası
<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 dosyası
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) {
}
});
}
}
Teşekkür ederim
Burada bazı cesur tahminler yapacağım ...
Görünmeyen menüyü temsil eden bir düzen var varsayıyorum. Menü düğmesine dokunulduğunda, yoldan çıkmak için üstteki düzeni / görünümü canlandırır ve menü düzeninin görünürlüğünü etkinleştirir. Bu görünümlerde herhangi bir z-endeksi sorunlarına neden ya da nasıl kontrol düşündüm değil.
Android gezinti çekmecesini ekledi. Buna bakın
İşte resmi android belgelerinde bulunan tasarım ve geliştirme kılavuzu, resmi olmayan harici kütüphane eklemeye gerek yok. Sadece android destek kütüphanesi yapacak. Bağlantıları burada bulabilirsiniz.
tasarım ve geliştirme .
Facebook Android uygulaması muhtemelen Fragments ile oluşturulmuştur . Menü bir Parçadır, derinlemesine Etkinlik (Haber Akışı / Etkinlikler / Arkadaşlar vb.) Diğer Parçadır. Temelde bir telefonda bir tablet 'ana ve detay' düzeni.
Bilgi için, uyumluluk kütüphanesi 1.6 ile başladığı ve bu facebook uygulaması Android 1.5 olan cihazlarda da çalıştığı için, Fragments ile yapılamadı.
Bunu yapmanın yolu şudur: Menü listeniz için onItemClickListener için tüm mantığı koyduğunuz ve 2 animasyonu ("open" ve "close") tanımlayan bir "base" etkinliği BaseMenuActivity oluşturun. Animasyonların sonunda / başında, BaseMenuActivity'nin düzenini gösterir / gizlersiniz (menu_layout diyelim). Bu etkinliğin düzeni basittir, yalnızca öğeler içeren bir liste + listenizin sağındaki saydam bir bölümdür. Bu bölüm tıklanabilir ve genişliği "taşıma düğmeniz" ile aynı genişlikte olacaktır. Bununla birlikte, content_layout öğesinin sola kaymasına ve tüm ekranı almasına izin vermek için animasyonu başlatmak için bu düzeni tıklayabilirsiniz. Her seçenek için (yani menü listesinin öğesi), BaseMenuActivity'yi genişleten bir "ContentActivity" oluşturursunuz. Ardından listenin bir öğesini tıkladığınızda, ItemSelectedContentActivity öğenizi görünür menü ile başlatırsınız (etkinliğiniz başlar başlamaz kapanır). Her ContentActivity için düzenler FrameLayout'tur ve ve öğelerini içerir. Sadece content_layout öğesini taşımanız ve menu_layout'u istediğiniz zaman görünür yapmanız yeterlidir.
Bunu yapmanın bir yolu ve umarım yeterince açıkım.
Son birkaç gündür bununla oynuyorum ve sonunda oldukça basit olan ve Petek öncesi çalışan bir çözüm buldum. Benim çözümüm kaydırmak istediğim görüntüyü canlandırmak ( FrameLayoutbenim için) ve animasyonun sonunu dinlemek (bu noktada Görünüm'ün sol / sağ konumunu dengelemek) idi. Çözümümü buraya yapıştırdım: Bir Görünümün çevirisine nasıl animasyon uygulanır?
Birkaç saat aradıktan sonra Paul Grime'ın çözümünün muhtemelen en iyisi olduğunu buldum. Ama içinde çok fazla işlevsellik var. Bu yüzden yeni başlayanlar için çalışmak zor olabilir. Bu yüzden Paul'ün fikrinden gelen uygulamamı sağlamak istiyorum, ancak daha basit ve okunması kolay olmalı.
XML olmadan java kodu kullanarak yan menü çubuğunun uygulanması
Yukarıdaki cevaplarda herhangi bir yerde belirtilen şaşırtıcı SimonVT / android-menudrawer görmedim. İşte bir bağlantı
https://github.com/SimonVT/android-menudrawer
Süper kullanımı kolaydır ve sol, sağ, üst veya alt tarafa koyabilirsiniz. Örnek kod ve Apache 2.0 lisansı ile çok iyi belgelenmiştir.
Haziran 2012'de Google, Eclipse ADT eklentisine "şablonlar" ekledi ve bunu tam olarak yapan "ana / ayrıntı akışı" adlı bir şablon var (parçalara göre)