1. 程式人生 > >實現知乎app的主介面效果

實現知乎app的主介面效果

一、顯示效果

這裡寫圖片描述
這裡寫圖片描述

二、分析

很感謝軒轅的文章,學習了。實現這種效果先分析一下怎麼去實現。首先最上面的是一個自定義的ActionBar樣式。中間的側滑加主頁是利用DrawLayout控制元件來實現的。
這裡使用到ActionBar,為了向下相容,Activity類需要繼承ActionBarAvtivity,還需要依賴v7包。
1.實現自定義樣式
可以自定義一個Theme樣式
styles.xml

<?xml version="1.0" encoding="utf-8"?>
<resources>
    <!-- the theme applied to the application or activity -->
<style name="CustomActionBarTheme" parent="@style/Theme.AppCompat.Light.DarkActionBar"> <item name="android:actionBarStyle">@style/MyActionBar</item> <!-- Support library compatibility --> <item name="actionBarStyle">@style/MyActionBar</item>
</style> <!-- ActionBar styles --> <style name="MyActionBar" parent="@style/Widget.AppCompat.Light.ActionBar.Solid.Inverse"> <item name="android:background">@drawable/actionbar_background</item> <item name="android:titleTextStyle">@style/MyTitleStyle</item> <!-- Support library compatibility --> <item name="background"
>@drawable/actionbar_background</item> <item name="titleTextStyle">@style/MyTitleStyle</item>
</style> <style name="MyTitleStyle" parent="@android:style/TextAppearance.Holo.Widget.ActionBar.Title.Inverse"> <item name="android:textSize">20dp</item> </style> </resources>

colors.xml
其實就是一張純色的圖片

<?xml version="1.0" encoding="utf-8"?>
<resources>
    <drawable name="actionbar_background">#0077d9</drawable>
</resources>

結果就能達到下面的顯示效果:
這裡寫圖片描述
2.側滑
①實現側滑
首先新建一個Fragment繼承自v4.Fragment,在裡面載入左側的View佈局就可以了。在MainActivity中什麼都不用做。
activtiy_main.xml

<android.support.v4.widget.DrawerLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:id="@+id/drawer_layout"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    tools:context="com.sweetvvck.fakezhihu.MainActivity" >

    <FrameLayout
        android:id="@+id/container"
        android:layout_width="match_parent"
        android:layout_height="match_parent" />

    <fragment
        android:id="@+id/navigation_drawer"
        android:name="com.example.zhihudemo.NavigationDrawerFragment"
        android:layout_width="@dimen/navigation_drawer_width"
        android:layout_height="match_parent"
        android:layout_gravity="start" />

</android.support.v4.widget.DrawerLayout>

NavigationDrawerFragment .java

public class NavigationDrawerFragment extends Fragment{
    @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container,
            Bundle savedInstanceState) {
        View view = inflater.from(getActivity()).inflate(R.layout.fragment_navigation_drawer, null);
        return view;
    }
}

就上面的簡單程式碼就已經實現了抽屜和側滑功能。下面需要的就是對抽屜進行監聽。
這裡寫圖片描述
②對在Fragment中的選中位置反饋到Activity,需要定義回撥介面,來進行資料互動。
在Fragment中定義一個介面,該Activity中實現該介面。

 /**
     * 宿主activity要實現的回撥介面
     * 用於activity與該fragment之間通訊
     */
    public static interface NavigationDrawerCallbacks {
        /**
         * 當drawer中的某個item被選擇是呼叫該方法
         */
        void onNavigationDrawerItemSelected(String title);
    }

    @Override
    public void onNavigationDrawerItemSelected(String title) {
        //......
    }

選中某一個條目的邏輯:需要更新記錄的位置,ListView需要將該item設定為選中狀態,需要將選中的狀態通過上面定義的回撥介面反饋給Activtiy。

 private void selectItem(int position) {
        mCurrentSelectedPosition = position;
        if (mDrawerListView != null) {
            mDrawerListView.setItemChecked(position, true);
        }
        if (mDrawerLayout != null) {
            mDrawerLayout.closeDrawer(mFragmentContainerView);
        }
        if (mCallbacks != null) {
            if(mCurrentSelectedPosition == 0) {
                mCallbacks.onNavigationDrawerItemSelected(getString(R.string.app_name));
                return;
            }
            mCallbacks.onNavigationDrawerItemSelected(mData.get(position - 1).getTitle());
        }
    }

相關推薦

實現app介面效果

一、顯示效果 二、分析 很感謝軒轅的文章,學習了。實現這種效果先分析一下怎麼去實現。首先最上面的是一個自定義的ActionBar樣式。中間的側滑加主頁是利用DrawLayout控制元件來實現的。 這裡使用到ActionBar,為了向下相

仿app登入介面(Material Design設計框架拿來就用的TexnInputLayout)

在我腦子裡還沒有Material Design這種概念,就我個人而言,PC端應用扁平化設計必須成為首選,手當其衝的兩款即時通訊旺旺和QQ早就完成UI扁平化的更新,然而客戶端扁平化的設計本身就存在天生的缺陷,手指和滑鼠箭頭最大的區別是在於前者有溫度和感覺的,好吧,能不能不要亂

自定義CoordinatorLayout的Behavior實現和簡書快速返回效果

Design lib裡面的CoordinatorLayout是一個非常強大的控制元件,它接管了child元件之間的互動。讓你滑動互動使用更加方便簡單,效果也更加強大,不需要向以前那樣自己處理一坨什麼亂七八槽的滑動 事件傳遞之類的噁心東西了。 比如常見的頂部工具

android ViewPager實現App介面Tab選單頁面切換和點選事件

Tabhost實現頁面滑動切換比較麻煩,這裡介紹一下viewPage 控制元件。 實現了三屏滑動帶標題點選和tab頁面內按鈕的的點選事件實現; viewPage  的優點是可以滑動切換缺點是MainA

android Fragment實現APP介面Tab頁面切換和點選事件

Fragment 頁面切換不能滑動 所以對於listview 可以新增的左右滑動事件 ,不會有衝突例如(QQ的好友列表的刪除) Fragment 和viewpager 的區別 Viewpager 的事件都需要寫在 MainActivity 使

【Parallax Animation】實現 Android 客戶端啟動頁視差滾動效果

前言 Parallax Scrolling(視差滾動),是一種常見的動畫效果。視差一詞來源於天文學,但在日常生活中也有它的身影。在疾馳的動車上看風景時,會發現越是離得近的,相對運動速度越快,而遠處的山川河流只是緩慢的移動著,這就是最常見的視差效果。視差動畫獨有的層次感能

實現QQ介面效果[圖]

1. GC實現QQ的主介面截圖2.實現方法最主要的計算各個組和頭像的位置資訊,有了位置資訊,畫圖就很方便了.(畫圖請參考本專欄其他文章)2.1 一些概念: 項 : 組和頭像,如果組合並,那麼這個組只有組1項,如果展開那麼 組+ 組成員的個數m_scrollIndex : 滾動了幾個項(滾動時計算)m_scro

App介面Tab的四種實現方法(下)

上一篇我們介紹了 ViewPager 實現 Tab 和 Fragment 實現 Tab,本篇會繼續介紹剩下的兩種。FragmentPagerAdapter+ViewPager 實現 Tab 和 ViewPagerIndicator+ViewPager 實現

python 跨app發私信以及Python專欄30萬用戶資訊爬取

import requests class SendMsg: def __init__(self): self.url='https://www.zhihu.com/api/v4/messages' #要傳送的資訊 self.data={'co

微圖APP介面功能說明

一、功能概述 《微圖App》是《水經微圖》的移動端,是作為資料採集和資料雲同步必不可少的應用,該APP支援在Android和iOS系統上執行,暫時僅推出了Andriod版,後續會推出iOS版。

幾個主流的App介面比較

本文算是一篇漫談,談一談當前幾個流行應用的主介面佈局,找個經典的佈局我們自己也來實現一個。 不是為了追求到底有多難,而是為了明白我們確實需要這麼做。  走個題,android的UI差異化市場依然很大,依然值得去挖掘。  鑄就經典,是為了超越經典! 下面我們以下面10個應用來分析比較它們的主介面:1.QQ20

Android之實現百度雲介面框架

新版的Android版百度雲介面效果非常炫,給人煥然一新的感覺,如下圖所示。 其實仔細研究,會發現也並不是那麼複雜: 1.整個介面主容器是一個ViewPager,只是在左下角有一個切換的Button。 2.ViewPager有兩個介面,由Fragment實現,並且加入

首頁實戰之下載App模組

下載知乎App模組 這個模組只有一個按鈕,寬度與上方主模組 rectangle 相同,邊角如上一篇提到的方法,用 CSS3 border-radius 屬性向 div 元素新增圓角邊框

iOS 日報評論分組展開效果實現

參考部落格 CGAffineTransformMakeTranslation和CGAffineTransformTranslate tableView.contentOffset.y UITableView 移動到指定的區頭位置 在仿寫知乎日報評論介面時遇到

Kotlin實現仿底部導航欄顯示隱藏效果Behavior

        最開始遇見這個問題我的第一想法是給recyclerview新增滑動監聽,然後再給底部導航新增顯示隱藏動畫,可是這麼做很不優雅,一旦recyclerview不止一個就需要給每個都新增一遍監聽(雖然同樣的程式碼cv就行了),這絕不是一個優秀程式設計師的追求。所以就

日報APP:API介面分析

宣告 以下所有 API 均由 知乎(Zhihu.Inc) 提供,本人(Izzy Leung)採取非正常手段獲取。獲取與共享之行為或有侵犯知乎權益的嫌疑。若被告知需停止共享與使用,本人會及時刪除此頁面與整個專案。 請您暸解相關情況,並遵守知乎協議。 API 說明 知乎

WPF技術觸屏上的應用系列(六): 視覺衝擊、超炫系統介面、系統入口效果實現

        去年某客戶單位要做個大屏觸屏應用,要對檔案資源進行展示之用。客戶端是Window7作業系統,54寸大屏電腦電視一體機。要求有很炫的展示效果,要有一定的視覺衝擊力,可觸控操作。當然滿足客

安卓仿個人主頁,實現巢狀滑動和漸隱效果

本篇文章已經授權微信公共號guolin_blog(郭霖)獨家釋出 先看知乎的效果: 再看我們實現的效果: 網上也有很多巢狀滑動的例子,先說說我這個的優點。 1.頭部可以參與滑動 2.下面可以加viewpager 3.支援Recycler

UC瀏覽器介面滑動摺疊效果 使用自定義behavior實現 難度五顆星*****

RcycleView上的HeadScrollBehavior 思路: 1。讓recycleview居於頭部的下方 ---方案:重寫layoutDependsOn  讓當前recycleview去依賴頭部檢視重寫onDependentViewChanged 獲取到依賴的頭部檢視的高度,給recycleview設

用動畫實現android app啟動介面的漸變效果

幾乎所有的app在啟動的時候都會有一個類似於開機畫面的東西,往往是一張圖片,上面寫著這個應用程式的提示文字,比如騰訊微博的啟動介面就是這樣的: 其實實現這種效果的原理很簡單,啟動介面也是一個activity,當時間到了之後銷燬這個activity,並啟動下一個a