巧用第三方SDK快速開(kāi)發(fā)Android App-(一)課程介紹與項(xiàng)目準(zhǔn)備

1-1 課程介紹—功能技術(shù)點(diǎn)和課程安排


主要功能
主要技術(shù)點(diǎn)

1-3 準(zhǔn)備工作—項(xiàng)目架構(gòu)部署


創(chuàng)建相應(yīng)包結(jié)構(gòu)
創(chuàng)建相應(yīng)包結(jié)構(gòu)

相關(guān)類(lèi),先創(chuàng)建放著灵再,后面會(huì)去實(shí)現(xiàn)它
創(chuàng)建相應(yīng)類(lèi)
做一些初始化攒射,比如頭文件注釋?zhuān)蜷_(kāi)settings橄浓,搜索code,如圖
BaseApplication(位于application)
public class BaseApplication extends Application {
    //創(chuàng)建
    @Override
    public void onCreate() {
        super.onCreate();
    }

創(chuàng)建完BaseApplication后洒扎,需要在清單文件AndroidManifest.xml中生命application

    <application
        android:name=".application.BaseApplication"
        android:allowBackup="true"
        android:icon="@mipmap/ic_launcher"
        android:label="@string/app_name"
        android:supportsRtl="true"
        android:theme="@style/AppTheme">
        ....省略
</application>
BaseApplication(位于ui)

這個(gè)類(lèi)是用來(lái)設(shè)置一些公共的屬性船响。


顯示返回箭頭
/**
 * 主要做得事情
 * 1.統(tǒng)一的屬性
 * 2.統(tǒng)一的接口
 * 3.統(tǒng)一的方法
 */
public class BaseActivity extends AppCompatActivity {
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        getSupportActionBar().setElevation(0);
        //顯示返回鍵
        getSupportActionBar().setDisplayHomeAsUpEnabled(true);


    }
    //菜單欄操作
    @Override
    public boolean onOptionsItemSelected(MenuItem item) {
        switch (item.getItemId()) {
            case android.R.id.home://android自帶的id
                finish();//finish()就是直接返回了
                break;
        }
        return super.onOptionsItemSelected(item);
    }
}

drawable

如上圖包結(jié)構(gòu)創(chuàng)建相應(yīng)drawable

values

如上圖創(chuàng)建values-zh膜宋,values-en,用來(lái)做國(guó)際化

StaticClass,UtilTools

存放常量做个,常用工具類(lèi)鸽心,現(xiàn)在我們創(chuàng)建了滚局,先為空,以后用到再去寫(xiě)

1-4 首頁(yè)框架—TabLayout布局搭建


TabLayout簡(jiǎn)介
演示

//在build.gradle添加tablayout依賴(lài)
compile 'com.android.support:design:24.2.0'

TabLayout屬性詳解:http://www.reibang.com/p/2b2bb6be83a8

activity_main.xml

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    android:layout_width="match_parent"
    android:layout_height="match_parent">

    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:orientation="vertical">

        <android.support.design.widget.TabLayout
            android:id="@+id/mTablayout"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:background="@color/colorPrimary"
            app:tabGravity="fill"
            app:tabIndicatorColor="@color/colorAccent"
            app:tabMode="fixed"
            app:tabSelectedTextColor="@color/colorAccent"
            app:tabTextColor="@android:color/white"

            />

        <android.support.v4.view.ViewPager
            android:id="@+id/mViewPager"
            android:layout_width="match_parent"
            android:layout_height="0dp"
            android:layout_weight="1" />
    </LinearLayout>

    <android.support.design.widget.FloatingActionButton
        android:src="@drawable/icon_setting"

        android:layout_marginRight="15dp"
        android:layout_marginBottom="15dp"
        android:layout_alignParentBottom="true"
        android:layout_alignParentRight="true"
        android:id="@+id/fab_setting"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"

     />
</RelativeLayout>

一共四個(gè)fragment顽频,我們這里就不貼代碼了藤肢,直接放到github吧,剛開(kāi)始只有一個(gè)textview作為測(cè)試糯景,這里代碼嘁圈,我直接貼后面需要的控件,大家可以直接寫(xiě)個(gè)textview放著先蟀淮。

ButlerFragment

//導(dǎo)包import android.support.v4.app.Fragment;可以向下兼容
public class ButlerFragment extends Fragment implements View.OnClickListener {
@Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
        View view = inflater.inflate(R.layout.fragment_butler, null);
        findView(view);
        return view;
    }
}

GirlFragement最住,UserFragement,WecharFragement這其他三個(gè)Fragment也都是如此怠惶,創(chuàng)建好這樣放著涨缚。

MainActivity.java

public class MainActivity extends AppCompatActivity implements View.OnClickListener {

    //TabLayout
    private TabLayout mTabLayout;
    //ViewPager
    private ViewPager mViewPager;
    //Title
    private List<String> mTitle;
    //Fragment  一樣也是V4包
    private List<Fragment> mFragment;
  @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        //去掉陰影
        getSupportActionBar().setElevation(0);

        initData();
        initView();

    }

    //初始化數(shù)據(jù)
    private void initData() {
        mTitle = new ArrayList<>();
        mTitle.add(getString(R.string.text_butler_service));
        mTitle.add(getString(R.string.text_wechat));
        mTitle.add(getString(R.string.text_girl));
        mTitle.add(getString(R.string.text_user_info));

        mFragment = new ArrayList<>();
        mFragment.add(new ButlerFragment());
        mFragment.add(new WechatFragment());
        mFragment.add(new GirlFragment());
        mFragment.add(new UserFragment());
    }

    //初始化View
    private void initView() {
  mTabLayout = (TabLayout) findViewById(R.id.mTabLayout);
        mViewPager = (ViewPager) findViewById(R.id.mViewPager);
        //預(yù)加載
        mViewPager.setOffscreenPageLimit(mFragment.size());
 //設(shè)置適配器
        mViewPager.setAdapter(new FragmentPagerAdapter(getSupportFragmentManager()) {
            //選中的item
            @Override
            public Fragment getItem(int position) {
                return mFragment.get(position);
            }

            //返回item的個(gè)數(shù)
            @Override
            public int getCount() {
                return mFragment.size();
            }

            //設(shè)置標(biāo)題
            @Override
            public CharSequence getPageTitle(int position) {
                return mTitle.get(position);
            }
        });
 //綁定
        mTabLayout.setupWithViewPager(mViewPager);
    }

我們綁定好了就可以運(yùn)行了

運(yùn)行效果圖

1-5 首頁(yè)框架—TabLayout邏輯實(shí)現(xiàn)


我們現(xiàn)在要實(shí)現(xiàn)懸浮按鈕的邏輯


第一頁(yè)不顯示懸浮按鈕
其他頁(yè)面顯示懸浮按鈕

在上面activity_main.xml中已經(jīng)加入了FloatingActionButton,所以我們直接來(lái)看邏輯的實(shí)現(xiàn)策治。
在MainActivity.java的initView方法中加入如下代碼

 fab_setting = (FloatingActionButton) findViewById(R.id.fab_setting);
        fab_setting.setOnClickListener(this);
        fab_setting.setVisibility(View.GONE);//按鈕默認(rèn)是隱藏的

在第一個(gè)頁(yè)面不顯示按鈕仗岖,其他頁(yè)面顯示,在initView加入

 //mViewPager滑動(dòng)監(jiān)聽(tīng)
        mViewPager.addOnPageChangeListener(new ViewPager.OnPageChangeListener() {
            @Override
            public void onPageScrolled(int position, float positionOffset, int positionOffsetPixels) {

            }
            @Override
            public void onPageSelected(int position) {
                Log.i("TAG", "position:" + position);
                if (position == 0) {
                    fab_setting.setVisibility(View.GONE);
                } else {
                    fab_setting.setVisibility(View.VISIBLE);
                }
            }
            @Override
            public void onPageScrollStateChanged(int state) {
            }
        });

當(dāng)我們點(diǎn)擊這個(gè)懸浮按鈕就會(huì)進(jìn)入到設(shè)置頁(yè)面


設(shè)置頁(yè)面

這是我們的點(diǎn)擊事件的監(jiān)聽(tīng)

@Override
    public void onClick(View v) {
        switch (v.getId()) {
            case R.id.fab_setting:
                startActivity(new Intent(this, SettingActivity.class));
                break;
        }
    }

SettingActivity.java現(xiàn)在也是空實(shí)現(xiàn)

public class SettingActivity extends BaseActivity{

    @Override
    public void onCreate(Bundle savedInstanceState, PersistableBundle persistentState) {
        super.onCreate(savedInstanceState, persistentState);
        setContentView(R.layout.activity_setting);
    }
}

記得SettingActivity是一個(gè)Activity览妖,要在AndroidManifest.xml中聲明

   <!--設(shè)置-->
        <activity
            android:name=".ui.SettingActivity"
            android:label="@string/text_setting" />

到此已經(jīng)完成了框架的搭建~

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末轧拄,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子讽膏,更是在濱河造成了極大的恐慌檩电,老刑警劉巖,帶你破解...
    沈念sama閱讀 217,657評(píng)論 6 505
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件府树,死亡現(xiàn)場(chǎng)離奇詭異俐末,居然都是意外死亡,警方通過(guò)查閱死者的電腦和手機(jī)奄侠,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,889評(píng)論 3 394
  • 文/潘曉璐 我一進(jìn)店門(mén)卓箫,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái),“玉大人垄潮,你說(shuō)我怎么就攤上這事烹卒。” “怎么了弯洗?”我有些...
    開(kāi)封第一講書(shū)人閱讀 164,057評(píng)論 0 354
  • 文/不壞的土叔 我叫張陵旅急,是天一觀的道長(zhǎng)。 經(jīng)常有香客問(wèn)我牡整,道長(zhǎng)藐吮,這世上最難降的妖魔是什么? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 58,509評(píng)論 1 293
  • 正文 為了忘掉前任,我火速辦了婚禮谣辞,結(jié)果婚禮上迫摔,老公的妹妹穿的比我還像新娘。我一直安慰自己泥从,他們只是感情好句占,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,562評(píng)論 6 392
  • 文/花漫 我一把揭開(kāi)白布。 她就那樣靜靜地躺著歉闰,像睡著了一般辖众。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上和敬,一...
    開(kāi)封第一講書(shū)人閱讀 51,443評(píng)論 1 302
  • 那天凹炸,我揣著相機(jī)與錄音,去河邊找鬼昼弟。 笑死啤它,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的舱痘。 我是一名探鬼主播变骡,決...
    沈念sama閱讀 40,251評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼芭逝!你這毒婦竟也來(lái)了塌碌?” 一聲冷哼從身側(cè)響起,我...
    開(kāi)封第一講書(shū)人閱讀 39,129評(píng)論 0 276
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤旬盯,失蹤者是張志新(化名)和其女友劉穎台妆,沒(méi)想到半個(gè)月后,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體胖翰,經(jīng)...
    沈念sama閱讀 45,561評(píng)論 1 314
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡接剩,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,779評(píng)論 3 335
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了萨咳。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片懊缺。...
    茶點(diǎn)故事閱讀 39,902評(píng)論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖培他,靈堂內(nèi)的尸體忽然破棺而出鹃两,到底是詐尸還是另有隱情,我是刑警寧澤靶壮,帶...
    沈念sama閱讀 35,621評(píng)論 5 345
  • 正文 年R本政府宣布怔毛,位于F島的核電站,受9級(jí)特大地震影響腾降,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜碎绎,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,220評(píng)論 3 328
  • 文/蒙蒙 一螃壤、第九天 我趴在偏房一處隱蔽的房頂上張望抗果。 院中可真熱鬧,春花似錦奸晴、人聲如沸冤馏。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 31,838評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)逮光。三九已至,卻和暖如春墩划,著一層夾襖步出監(jiān)牢的瞬間涕刚,已是汗流浹背。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 32,971評(píng)論 1 269
  • 我被黑心中介騙來(lái)泰國(guó)打工乙帮, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留杜漠,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 48,025評(píng)論 2 370
  • 正文 我出身青樓察净,卻偏偏與公主長(zhǎng)得像驾茴,于是被迫代替她去往敵國(guó)和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子氢卡,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,843評(píng)論 2 354

推薦閱讀更多精彩內(nèi)容