สไลด์สไตล์ Facebook Android


283

แอปพลิเคชั่น Facebook ใหม่และการนำทางของมันยอดเยี่ยมมาก ฉันแค่พยายามที่จะดูว่ามันสามารถเลียนแบบในใบสมัครของฉันได้อย่างไร

ทุกคนมีเงื่อนงำว่ามันสามารถทำได้?

ป้อนคำอธิบายรูปภาพที่นี่

เมื่อคลิกปุ่มซ้ายบนสไลด์หน้าและหน้าจอต่อไปนี้จะแสดง:

ป้อนคำอธิบายรูปภาพที่นี่

วิดีโอ YouTube


2
ใช่วิดีโอจะมีประโยชน์เช่นกันเพื่อให้ได้ผลที่แน่นอน
bool.dev

@ bool.dev นี่คือวิดีโอ: youtube.com/watch?v=ANLMaL7zn20
Harsha MV

@HarshaMV: - ลองดูหัวข้อนี้ฉันคิดว่าอาจช่วยคุณได้บ้าง stackoverflow.com/questions/8453320/…
Shashank_Itmaster

3
บทความดีดีเกี่ยวกับการนำสไลด์ออกใน Android - androiduipatterns.com/2012/06/... ต้องอ่าน.
AlexKorovyansky

ฉันใช้เมนูตัวเลื่อนของตัวเองแล้วดูที่นี่stackoverflow.com/a/15880375/1939564
Muhammad Babar

คำตอบ:


176

ฉันเล่นด้วยตัวเองและวิธีที่ดีที่สุดที่ฉันสามารถหาได้คือใช้ FrameLayout และวาง HorizontalScrollView (HSV) ที่กำหนดเองไว้ด้านบนของเมนู ภายใน HSV เป็นแอปพลิเคชั่นของคุณแต่มีมุมมองที่โปร่งใสเหมือนลูกคนแรก ซึ่งหมายความว่าเมื่อ HSV มีออฟเซ็ตเลื่อนเป็นศูนย์เมนูจะแสดงผ่าน (และยังสามารถคลิกได้อย่างน่าประหลาดใจ)

เมื่อแอปเริ่มทำงานเราเลื่อน HSV ไปที่ออฟเซ็ตของมุมมองแอปพลิเคชั่นแรกที่มองเห็นและเมื่อเราต้องการแสดงเมนูที่เราเลื่อนกลับเพื่อแสดงเมนูผ่านมุมมองแบบโปร่งใส

รหัสอยู่ที่นี่และปุ่มสองปุ่มด้านล่าง (เรียกว่า HorzScrollWithListMenu และ HorzScrollWithImageMenu) ในกิจกรรมการเปิดตัวแสดงเมนูที่ดีที่สุดที่ฉันจะได้รับ:

การสาธิตเมนูเลื่อนบน Android

ภาพหน้าจอจากโปรแกรมจำลอง (เลื่อนกลาง):

ภาพหน้าจอจากโปรแกรมจำลอง (เลื่อนกลาง)

สกรีนช็อตจากอุปกรณ์ (full-scroll) โปรดทราบว่าไอคอนของฉันไม่กว้างเท่ากับไอคอนเมนู Facebook ดังนั้นมุมมองเมนูและมุมมอง 'แอป' จะไม่จัดแนว

ภาพหน้าจอจากอุปกรณ์ (เลื่อนเต็ม)


1
@AmokraneChentir คุณสามารถใช้กิจกรรมที่แตกต่างกันโดยการโทรgetDrawingCache()ในกิจกรรมที่ไม่ใช่เมนูของคุณและสร้าง ImageView จากบิตแมป จากนั้นโทรstartActivity(intent)& overridePendingTransition(0, 0)ที่onClickวิธีการClickListenerForScrollingเรียนเพื่อแสดงกิจกรรมใหม่ทันทีและรับผลที่ต้องการ
Siklab.ph

1
ฉันสงสัยว่า HorizontalScrollView แบบกำหนดเองสามารถใช้กับ ListView ได้หรือไม่เนื่องจากเอกสารอย่างเป็นทางการของ HorizontalScrollView ระบุว่าจะบังคับให้ ListView แสดงรายการทั้งหมด
shiami

1
ส้อมนี้เปลี่ยนกิจกรรมโดยไม่ต้องใช้ชิ้นส่วน!
Erik B

1
ขอบคุณสำหรับความช่วยเหลือของคุณฉันสามารถใช้ HorzScrollWithListMenu.java
KarenAnne

2
ขอบคุณมาก @PaulGrime ... นี่เป็นตัวอย่างที่ยอดเยี่ยมและสิ่งที่ยอดเยี่ยมที่สุดในการสาธิตนี้ง่ายต่อการเข้าใจและปรับแต่งได้ง่ายและไม่มีโครงการห้องสมุดที่จะใช้
Naveen Kumar

37

ฉันใช้การนำทางแบบสไลด์ไลค์เหมือน Facebook ในโครงการห้องสมุดนี้

คุณสามารถติดตั้งไว้ในแอปพลิเคชัน UI และการนำทางของคุณได้อย่างง่ายดาย คุณจะต้องดำเนินการเพียงกิจกรรมเดียวและส่วนเดียวแจ้งให้ห้องสมุดทราบ - และห้องสมุดจะให้ภาพเคลื่อนไหวและการนำทางที่ต้องการทั้งหมด

ภายใน repo คุณสามารถค้นหาโครงการตัวอย่างพร้อมวิธีใช้ lib เพื่อสร้างการนำทางแบบ Facebook นี่คือวิดีโอสั้น ๆ ที่มีการบันทึกของโครงการสาธิต

นอกจากนี้ lib นี้ควรเข้ากันได้กับรูปแบบ ActionBar นี้เพราะจะขึ้นอยู่กับธุรกรรมของกิจกรรมและ TranslateAnimations (ไม่ใช่ธุรกรรมชิ้นส่วนและมุมมองที่กำหนดเอง)

ตอนนี้ปัญหาที่พบบ่อยที่สุดคือการทำให้แอปพลิเคชั่นทำงานได้ดีซึ่งรองรับทั้งแนวตั้งและแนวนอน หากคุณมีข้อเสนอแนะใด ๆ โปรดให้มันผ่าน GitHub

ทั้งหมดที่ดีที่สุดของ
อเล็กซ์


4
สวัสดีฉันเพิ่งรู้ว่าวิธีการของคุณกำลังจะสร้างบิตแมปหน้าจอขนาดใหญ่ทุกครั้งที่คุณเปิดแถบด้านข้าง มันจะขยายขนาดฮีปและอาจทำให้หน่วยความจำผิดพลาด
shiami

3
ขอบคุณ korovyansk ที่รักมันเยี่ยมมาก แต่รูปแบบที่แน่นอนถูกคัดค้านในระบบปฏิบัติการใหม่ คุณสามารถรหัสอีกครั้งได้หรือไม่
Hesam

ขอบคุณทุกคนที่ให้ข้อเสนอแนะใน GitHub หรือที่นี่ ฉันรู้เกี่ยวกับข้อบกพร่องบางอย่างและมีแนวคิดที่จะทำให้แอปดีขึ้น ฉันทำเมื่อฉันจะมีเวลาว่าง
AlexKorovyansky

สวัสดี koroyansk ฉันใช้ห้องสมุดของคุณมันใช้งานได้ดี แต่ฉันมีปัญหาเล็กน้อย เมื่อรายการแถบเลื่อนเปิดขึ้นฉันกำลังเริ่มต้นกิจกรรมในรายการมุมมองให้คลิกกิจกรรมที่เริ่มต้นถูกต้อง แต่ภาพเคลื่อนไหวในสไลด์ไม่ทำงาน รหัส((MenuActivity) getActivity()).getSlideoutHelper().close(); startActivity(new Intent(getActivity(), MyActivity.class) .addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP).putExtra("category", position));
ซันนี่

ในกรณีของคุณกิจกรรมใหม่จะเปิดขึ้นทันทีโดยไม่ต้องรอให้จบแอนิเมชั่นคุณสามารถลองขยายไลบรารี่และเพิ่มการโทรกลับเมื่อสิ้นสุดแอนิเมชั่น อาจจะฉันจะเพิ่มคุณสมบัตินี้ไปยังห้องสมุดรุ่นต่อไป
AlexKorovyansky

24

นี่คือlib อื่นและดูเหมือนว่าจะดีที่สุดในความคิดของฉัน ฉันไม่ได้เขียนมัน ..

UPDATE:

ดูเหมือนว่ารหัสนี้จะทำงานได้ดีที่สุดสำหรับฉันและจะย้ายทั้ง Actionbar ที่คล้ายกับแอพ G +

Google จัดการเรื่องนี้ได้อย่างไร Slide ActionBar ในแอปพลิเคชัน Android


7
ฉันเขียนห้องสมุดนี้ดีใจที่คุณชอบ ตอนนี้มันเป็นพื้นฐานจริงๆ แต่ฉันจะปรับปรุงมันในอีกไม่กี่สัปดาห์ข้างหน้า มากกว่ายินดีต้อนรับผู้อื่นที่จะทำการเปลี่ยนแปลงเช่นกัน
David Scott

ห้องสมุดนี้ยอดเยี่ยมจริงๆ มันใช้ง่ายและทำงานได้อย่างสมบูรณ์แบบ ขอบคุณ. ฉันต้องการเพิ่มว่าตัวอย่างใช้งานได้เฉพาะกับ ICS (และ Honeycomb ฉันคิดว่า) .. แต่ห้องสมุดใช้งานได้จนถึง 2.1 ฉันไม่ได้ใช้มันเลย
Steven Elliott

ไม่เลวมันค่อนข้างเรียบง่าย แต่ใช้งานได้ดีและการติดตั้งนั้นรวดเร็วมาก อย่างไรก็ตามมันไม่สามารถกำหนดค่าได้มากจากนอกห้องสมุด: รายการทั้งหมดมีเค้าโครงที่เรียบง่ายเหมือนกันและในระหว่างการเดินทางจะไม่มีความเป็นไปได้ของรายการแบบไดนามิก ทั้งสองอย่างนั้นจะง่ายต่อการปรับตัว แต่ฉันต้องการจัดกลุ่มในรายการและนั่นไม่ใช่เรื่องง่าย
htafoya

22

ฉันคิดว่า app Facebook ไม่ได้เขียนในรหัสพื้นเมือง (โดยรหัสพื้นเมืองผมหมายถึงการใช้รูปแบบใน Android) แต่พวกเขามีมุมมองเว็บที่ใช้สำหรับมันและได้ใช้ห้องสมุด JavaScript UI บางอย่างเช่นSencha มันสามารถทำได้อย่างง่ายดายโดยใช้กรอบ Sencha

ป้อนคำอธิบายรูปภาพที่นี่


16
+1 UI สามารถเปลี่ยนแปลงได้โดยไม่ต้องอัปเดตแอปดังนั้นจึงเป็นเว็บแอปอย่างแน่นอนและแอปแอนดรอยด์นั้นเป็นเว็บเบราว์เซอร์
Rudy

7
ฉันไม่แน่ใจว่านี่เป็นสิ่งจำเป็น โครงกระดูกสำหรับ UI สามารถเป็นค่าดั้งเดิม (เช่นมุมมองเมนูจริงและมุมมองเนทีฟอื่น ๆ ) และเนื้อหาสำหรับ Views ที่โหลดแบบไดนามิก หากโครงของแอพเปลี่ยนไปอาจจำเป็นต้องมีการอัปเดต
Paul Grime

2
ฉันไม่คิดว่าแอพ facebook เป็น webapp คล่องแคล่วเกินไปรวดเร็ว ฉันรู้ว่าแอพพลิเคชั่นเว็บ / ไฮบริดที่ดูดี "เหมือนเจ้าของภาษา" แต่ก็ยังมีความล่าช้าเล็กน้อยเมื่อเทียบกับแอปทั่วไป ไม่เพียงแค่โครงกระดูก - รายการแผนที่และรูปลักษณ์และความรู้สึกดั้งเดิม อย่างน้อยด้วยสถานะปัจจุบันของเทคโนโลยี
Ixx

ตกลงมีบางคนบอกฉันว่าแอพนี้ไม่ได้เป็นแบบนี้ประมาณ 2 เดือนดังนั้นคุณกำลังอ้างถึงเวอร์ชั่นเก่าที่ฉันไม่รู้ อย่างไรก็ตามอาจมีข้อมูลที่จะแสดงความคิดเห็นว่าแอปปัจจุบันเป็นของพื้นเมืองแน่นอน
Ixx

20

ที่นี่เป็นอีกหนึ่งไลบรารีโอเพนซอร์ส (ดีมาก)!

คุณสมบัติที่ดีเกี่ยวกับอันนี้คือมันรวมเข้ากับ ActionBarSherlock ได้อย่างง่ายดาย

นี่คือลิงค์โครงการGitHub

นี่คือลิงค์ดาวน์โหลดของGoogle Play


2
ฉันคิดว่านี่เป็นสิ่งที่ดีที่สุด
Harsha MV

17

ฉันเพิ่งใช้มุมมองที่คล้ายกันสำหรับโครงการของฉันเอง คุณสามารถตรวจสอบได้ที่นี่

นี่คือหน้าจอของตัวอย่างแอปพลิเคชันที่อ้างอิงไลบรารีที่ฉันเขียน ตัวอย่าง ActionsContentView

มันง่ายต่อการใช้มุมมองที่กำหนดเองนี้เป็นองค์ประกอบของเค้าโครง 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

ข้อดีบางประการของห้องสมุดนี้:

  • ความสามารถในการเลื่อนดูด้วยการสัมผัส
  • มันง่ายในการปรับขนาดของแถบการกระทำใน XML
  • รองรับ Android SDK ทุกรุ่นตั้งแต่ 2.0 ขึ้นไป

ข้อ จำกัด หนึ่งข้อ:

  • มุมมองการเลื่อนแนวนอนทั้งหมดจะไม่ทำงานในขอบเขตของมุมมองนี้

ขอแสดงความนับถือสตีเว่น


วิธีการตั้งค่าเริ่มต้น UI เป็นรูปอัปโหลดของคุณ? ฉันทดสอบว่าเฟิร์สต์ UI คือ webView บนหน้าจอ ฉันหวังว่า listview จะแสดงเมื่อแอปเริ่มต้นขึ้น ผ่าน lib ของคุณคือ 2.0 แต่การสาธิตของคุณคือ 4.0 ฉันหวังว่าคุณจะสามารถใช้ 2.0 ได้นั่นก็เจ๋ง
pengwang

@pengwang: ฉันเพิ่งผลักรหัสเพื่อสนับสนุนคุณสมบัตินี้ คุณสามารถทำได้ในขณะที่ Activity.onResume () โดยการเรียก viewActionsContentView.showActions ();
หยาบ

เป็นไปได้ไหมที่จะปิดการใช้งานกิจกรรมการสัมผัสในส่วนที่ซ่อนอยู่? ตัวอย่างเช่นเมื่อส่วนด้านขวาเปิดใช้งานอยู่มุมมองทั้งหมดทางด้านขวาจะถูกปิดใช้งาน
Valeriy

มีความเป็นไปได้ที่จะบล็อกโครงร่างเนื้อหาในขณะที่การกระทำนั้นปรากฏขึ้น ฉันได้ส่งตัวอย่างโครงการให้คุณทางอีเมล
หยาบ

16

ด้วยการแก้ไขแพคเกจการสนับสนุน android 13 (พฤษภาคม 2556) มี DrawerLayout สำหรับการสร้าง Navigation Drawer ที่สามารถดึงเข้ามาจากขอบหน้าต่าง และลิ้นชักการนำทางเป็นรูปแบบการออกแบบในขณะนี้

ห้องสมุดสนับสนุน v4

รูปแบบการออกแบบการนำทางลิ้นชัก


2
ใช่ระดับ API ขั้นต่ำที่รองรับคือ 4
Wubao Li

1
และไลบรารีความเข้ากันได้ช่วยให้คุณใช้กับอุปกรณ์รุ่นเก่าได้ ฉันเพิ่งพัฒนาหนึ่งสำหรับ Gingerbread และในภายหลัง
Tony Maro

2
สิ่งนี้จะต้องมีการเพิ่มเติมที่ด้านบน มีห้องสมุดบุคคลที่สามมากเกินไปในคำตอบอื่น ๆ
Jason Axelson

15

ทำบทสรุปของการใช้งานที่มีอยู่และเปลี่ยนเป็นโครงการห้องสมุดพร้อมแอพตัวอย่าง นอกจากนี้ยังเพิ่มการแยกวิเคราะห์ XML และการตรวจสอบอัตโนมัติของแถบแอ็คชันที่อาจมีอยู่ดังนั้นจึงทำงานกับเนทีฟรวมถึงแถบแอ็คชั่นสนับสนุนเช่น ActionBarSherlock

อันนี้ก็เลื่อนแถบแอ็คชั่นออกไป!

สิ่งที่ทั้งเป็นโครงการห้องสมุดพร้อมกับตัวอย่างของแอปและมีการอธิบายมากกว่าที่เลื่อนเมนูสำหรับ Android เช่น Google และ Facebook ปพลิเคชัน ขอบคุณsciroccoสำหรับแนวคิดเริ่มต้นและโค้ด!

SlideMenu บน Gingerbread SlideMenu บน ICS ด้วย ActionBar


10

นี่คือเรียบง่ายและสง่างาม: https://github.com/akotoe/android-slide-out-menu.git

ภาพรวม:

ป้อนคำอธิบายรูปภาพที่นี่


คุณสามารถช่วยฉันได้ไหม?? คำถามที่เกี่ยวข้องกับแถบเลื่อน .. นี่คือลิงค์stackoverflow.com/questions/14500927/…
moDev

มันจะช่วยให้คุณสามารถเลื่อนโดยการสัมผัส? (หมายถึงปัดนิ้ว)
alicanbatur

@Edward ฉันได้ทำงานกับตัวอย่างของคุณฉันคิดว่ามันยอดเยี่ยมและใช้งานง่าย แต่ก็มีปัญหาเมื่อหมุนหน้าจอ (ฉันใช้ Android: configChanges = "การวางแนว" ในรายการกับ Android 3.1 เพราะฉันไม่ได้ ต้องการกิจกรรมที่จะเริ่มต้นใหม่) หมุนหน้าจอดี แต่ framelayout ช่วยให้ขนาดของมันและมันก็ไม่ได้ดูดีคุณมีทางรอบนี้? ฉันลองทุกอย่างแล้วแต่ไม่สามารถแก้ไขได้ ขอบคุณ
zvzej

@ Edward นี่คือคำถามของฉันโดยใช้ตัวอย่างของคุณโปรดช่วยฉันหรือให้คำแนะนำขอบคุณ stackoverflow.com/questions/16778911/…
zvzej

10

ฉันคิดว่าห้องสมุดไม่ได้กล่าวถึง:

jfeinstein10 / SlidingMenu

github url:https://github.com/jfeinstein10/SlidingMenu

  • ทำงานได้ดีกับActionBarSherlockซึ่งเป็นแถบแอ็คชั่นที่ช่วยในการทำงานร่วมกันได้แบบย้อนหลัง !
  • รองรับสไลด์ที่ถูกต้องและไม่เพียงเลื่อนผ่านปุ่มเท่านั้น!

8

ยังไม่สามารถออกความเห็นเกี่ยวกับคำตอบที่ได้รับจาก @Paul Grime ได้หรือไม่ฉันได้ส่งโครงการ github ของเขาเพื่อแก้ไขปัญหาการสั่นไหว ....

ผมจะโพสต์แก้ไขที่นี่อาจจะมีคนต้องการมัน คุณเพียงแค่ต้องเพิ่มโค้ดสองบรรทัด คนแรกที่ด้านล่างโทร anim.setAnimationListener นี้:

anim.setFillAfter(true);

และเป็นคนที่สองหลังจาก app.layout () โทร:

app.clearAnimation();

หวังว่าจะช่วย :)


6

ฉันได้ดำเนินการนี้กับ AbsoluteLayout และควบคุมสไลด์ง่ายที่จะย้ายมุมมองเชิงลบเพื่อชดเชยซ่อน

หากใครสนใจฉันสามารถล้างรหัส / เลย์เอาต์และโพสต์ได้ ฉันรู้ว่า AbsoluteLayout นั้นเลิกใช้แล้ว แต่มันก็เป็นการนำไปปฏิบัติได้อย่างตรงไปตรงมามาก มุมมองด้านซ้าย / มุมมองขวาและเมื่อ "เลื่อนเปิด" ให้เลื่อนมุมมองด้านซ้ายออกจาก -X ออฟเซ็ตไปที่ความกว้างของอุปกรณ์ - สิ่งที่คุณต้องการแสดงมุมมองด้านขวา


ฉันจะขออภัยถ้าคุณสามารถทำได้โดยไม่ต้อง AbsoluteLayout! ขอบคุณ!
Igor


3

ในฐานะที่เป็นส่วนหนึ่งของ Android Common Library (ACL) ฉันได้ติดตั้ง SideBar ของตัวเอง ข้อได้เปรียบหลัก:

  1. แถบด้านข้างสามารถตั้งค่าเป็นตำแหน่งใดก็ได้: ซ้าย, บน, ล่าง, ขวา
  2. ทั้งมุมมองหลักและมุมมองแบบเลื่อนสามารถคลิกได้
  3. แถบด้านข้างสามารถแสดงบางส่วนได้
  4. แอตทริบิวต์ Stylable สำหรับ SideBar ช่วยให้เปลี่ยนสไตล์ได้ง่ายขึ้น
  5. สิ่งประดิษฐ์ใน repo Maven
  6. ส่วนหนึ่งของห้องสมุดขนาดใหญ่

รหัสที่มา: 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


3

เมื่อเร็ว ๆ นี้ฉันได้ทำงานกับเวอร์ชันการนำไปใช้เมนูแบบเลื่อน จะใช้เป็นที่นิยมห้องสมุด J.Feinstein Android SlidingMenu

โปรดตรวจสอบซอร์สโค้ดที่ GitHub:

https://github.com/baruckis/Android-SlidingMenuImplementation

ดาวน์โหลดแอปโดยตรงไปยังอุปกรณ์เพื่อลอง:

https://play.google.com/store/apps/details?id=com.baruckis.SlidingMenuImplementation

รหัสควรอธิบายตนเองเนื่องจากความคิดเห็น ฉันหวังว่ามันจะเป็นประโยชน์! ;)


3

ฉันพบวิธีที่ง่ายที่สุดสำหรับมันและการทำงานของมัน ใช้การนำทางลิ้นชักอย่างง่ายและการเรียก drawer.setdrawerListner () และใช้ mainView.setX () วิธีการในวิธี drawerSlide ด้านล่างหรือคัดลอกรหัสของฉัน

ไฟล์ 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) {

        }
    });
 }
}

ป้อนคำอธิบายรูปภาพที่นี่

ขอบคุณ


2

ฉันจะเดาตัวหนาที่นี่ ...

ฉันคิดว่าพวกเขามีรูปแบบที่แสดงถึงเมนูที่มองไม่เห็น เมื่อแตะปุ่มเมนูปุ่มเหล่านั้นจะเคลื่อนไหวเค้าโครง / มุมมองด้านบนเพื่อเลื่อนออกไปให้พ้นทางและเปิดใช้งานการมองเห็นเค้าโครงเมนูได้อย่างง่ายดาย ฉันไม่ได้คิดเกี่ยวกับสิ่งนี้ทำให้เกิดปัญหา z-index ใด ๆ ในมุมมองหรือวิธีที่พวกเขาควบคุม


หากคุณใช้แอพ .. คุณจะเห็นว่าสไลด์เลย์เอาต์ไปทางขวาให้กับส่วนเมนู ฉันจะลองทำวิดีโอและอัปโหลด
Harsha MV

1
ฉันใช้เวอร์ชั่น iPhone หากเวอร์ชั่น Android เหมือนกันฉันสงสัยว่ามันต่างจากที่ฉันอธิบายไว้มากนัก ฉันยังไม่ได้เขียนแอนิเมชั่นมากมายบน Android ดังนั้นฉันจึงไม่สามารถบอกคุณได้ว่ารหัสภาพเคลื่อนไหวเป็นอย่างไร แต่โดยคร่าวๆฉันคิดว่าเป็นสิ่งที่ฉันอธิบาย
jlindenbaum

ขอขอบคุณคุณyoutube.com/watch?v=ANLMaL7zn20มันเป็นผลเช่นเดียวกันกับ iPhone
Harsha MV


2

นี่คือคู่มือการออกแบบและการพัฒนาที่พบในเอกสาร Android อย่างเป็นทางการไม่จำเป็นต้องเพิ่มไลบรารี่ภายนอกที่ไม่เป็นทางการ ห้องสมุดสนับสนุน android เท่านั้นที่จะทำ ค้นหาลิงค์ได้ที่นี่

การออกแบบและพัฒนา


1

แอพ Facebook Android อาจสร้างด้วยแฟรกเมนต์ เมนูเป็นหนึ่งส่วนกิจกรรมในเชิงลึก (ฟีดข่าว / กิจกรรม / เพื่อน ฯลฯ ) เป็นส่วนอื่น ๆ โดยทั่วไปแล้วเค้าโครง 'ต้นแบบ & รายละเอียด' แท็บเล็ตบนโทรศัพท์


ในกรณีนี้เราต้องสร้างแถบแอ็คชั่นภายในส่วนดังนั้นเราจึงไม่สามารถใช้คุณสมบัติของกรอบงาน Android เพื่อสร้างได้ใช่ไหม จริงๆแล้วฉันไม่แน่ใจเกี่ยวกับ facebook แต่สำหรับนักพัฒนาหลายคนยากเกินไปที่จะสร้างแอ็คชั่นบาร์โดยไม่ได้รับการช่วยเหลือฉันหวังว่าคราวนี้จะจบลงแล้ว
AlexKorovyansky

1

สำหรับข้อมูลเช่นห้องสมุดความเข้ากันได้เริ่มต้นด้วย 1.6 และนี้ app Facebook ยังทำงานบนอุปกรณ์ที่มี Android 1.5 ก็ไม่สามารถทำได้ด้วยเศษเล็กเศษน้อย

วิธีที่คุณสามารถทำได้คือ: สร้างกิจกรรม "ฐาน" BaseMenuActivity ที่คุณใส่ตรรกะทั้งหมดสำหรับ onItemClickListener สำหรับรายการเมนูของคุณและกำหนด 2 ภาพเคลื่อนไหว ("เปิด" และ "ปิด") ในตอนท้าย / เริ่มต้นของภาพเคลื่อนไหวคุณแสดง / ซ่อนเค้าโครงของ BaseMenuActivity (ให้เรียกมันว่า menu_layout) เลย์เอาต์สำหรับกิจกรรมนี้เป็นเรื่องง่ายมีเพียงรายการที่มีรายการ + ส่วนโปร่งใสที่ด้านขวาของรายการของคุณ ส่วนนี้จะสามารถคลิกได้และความกว้างจะเป็นความกว้างเดียวกับ "ปุ่มย้าย" ของคุณ ด้วยสิ่งนี้คุณจะสามารถคลิกที่เค้าโครงนี้เพื่อเริ่มต้นการเคลื่อนไหวเพื่อให้ content_layout เลื่อนไปทางซ้ายและเข้าสู่หน้าจอทั้งหมด สำหรับแต่ละตัวเลือก (เช่นรายการของรายการเมนู) คุณสร้าง "ContentActivity" ซึ่งขยาย BaseMenuActivity จากนั้นเมื่อคุณคลิกที่รายการใดรายการหนึ่งคุณจะเริ่มต้น ItemSelectedContentActivity ของคุณด้วยเมนูที่มองเห็น (ซึ่งคุณจะปิดทันทีที่กิจกรรมของคุณเริ่มต้น) เค้าโครงสำหรับแต่ละ ContentActivity คือ FrameLayout และรวมถึงและ คุณเพียงแค่ต้องย้าย content_layout และทำให้ menu_layout ปรากฏเมื่อคุณต้องการ

นั่นเป็นวิธีที่จะทำและฉันหวังว่าฉันจะชัดเจนพอ


1

ฉันได้เล่นกับเรื่องนี้เมื่อไม่กี่วันที่ผ่านมาและฉันก็ได้วิธีการแก้ปัญหาที่ค่อนข้างตรงไปตรงมาในที่สุดและใช้งานได้ล่วงหน้ากับ Honeycomb วิธีแก้ปัญหาของฉันคือทำให้ภาพเคลื่อนไหวที่ฉันต้องการเลื่อน ( FrameLayoutสำหรับฉัน) และฟังตอนท้ายของภาพเคลื่อนไหว (ตรงจุดที่จะชดเชยตำแหน่งซ้าย / ขวาของมุมมอง) ฉันได้วางวิธีแก้ปัญหาของฉันที่นี่: จะทำให้การแปลมุมมองเป็นอย่างไร


1

หลังจากค้นหาเป็นเวลาหลายชั่วโมงฉันพบว่าทางออกของ Paul Grime น่าจะดีที่สุด แต่มันมีฟังก์ชั่นการใช้งานมากเกินไป ดังนั้นอาจเป็นการยากสำหรับผู้เริ่มต้นศึกษา ดังนั้นฉันจึงต้องการให้การใช้งานของฉันซึ่งมาจากแนวคิดของ Paul แต่มันง่ายกว่าและควรอ่านได้ง่าย

การใช้งานแถบเมนูด้านข้างโดยใช้รหัส java โดยไม่มี XML


1

ฉันไม่เห็น SimonVT / android-menudrawer ที่น่าอัศจรรย์พูดถึงทุกที่ในคำตอบข้างต้น ดังนั้นนี่คือลิงค์

https://github.com/SimonVT/android-menudrawer

มันใช้งานง่ายสุด ๆ และคุณสามารถวางไว้บนซ้ายขวาบนหรือล่าง จัดทำเอกสารอย่างดีพร้อมรหัสตัวอย่างและใบอนุญาต Apache 2.0


0

ในเดือนมิถุนายน 2012 Google ได้เพิ่ม "เทมเพลต" ในปลั๊กอิน Eclipse ADTและมีเทมเพลตที่เรียกว่า "การไหลของข้อมูลหลัก / รายละเอียด" ซึ่งทำสิ่งนั้นอย่างแน่นอน


1
การไหลของข้อมูลหลัก / รายละเอียดไม่ใช่เมนูของแถบด้านข้าง มันเป็นเพียงสองส่วนที่แสดงด้วยกัน (แท็บเล็ต) หรือแยกต่างหาก (โทรศัพท์)
tomash

ในเดือนมิถุนายน 2013 มีการเพิ่ม Layout Navigation Layout ซึ่งเป็นสิ่งที่คล้ายคลึงกับความต้องการมากขึ้น แต่ ActionBar จะไม่เลื่อนด้วยลิ้นชักเนื่องจากแถบเลื่อนสไตล์ Facebook ต้องการที่นี่
Khulja Sim Sim
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.