原创 android嵌套滑動NestedScrolling

首先來看我門要做的效果: 佈局是用一個linerLayout實現NestedScrollingParent 接口,然後裏面一次放了一個head,tablayout,viewpager,recyclerview。 Neste

原创 android6.0運行時權限回調沒執行

早就瞭解過6.0加了個運行時權限,拿着我6.0系統的魅族手機測試了一下,發現壓根就沒任何區別和以前,回調方法都不執行。檢查了沒發現哪裏寫錯了,就想到了估計是被魅族自己屏蔽了把然後繼續沿用自家的權限管理方法。然後去測試了一下主流的手

原创 android判斷應用在前臺還是後臺

有時候我們需要獲取自己的應用是否在前臺或者在後臺,然後根據不同的狀態處理: /** * 判斷應用是否在前臺 * * @param mContext * @return */

原创 android設計模式之build模式

當我們要複雜對象的創建過程和這個對象的表示(展示)分離開來,一般就會想到build模式。 在android開發中,AlertDialog就是一個很好的例子。初次使用AlertDialog的同學可能會很困惑。爲什麼AlertDia

原创 android消息機制(handler運行機制)解析

在android日常開發中,我們不可避免的會使用到有關handler的知識。可以利用handler來進行消息的傳遞。由於android不允許ui線程訪問網絡,非ui線程又不能更新ui。這種情況handler是怎麼處理的。還有想延遲

原创 androidstudio獲取sha1值的方法

有時候我們需要用到一些開發平臺上的東西需要我們填寫sha1值,在eclipase上很快就找得到,但是androidstudio中並沒有。所以我們只能在Terminal控制檯獲取。 C:\Users\Administrator.a

原创 android dialog實現底部彈出和手指滑動隱藏效果

直接來看效果圖: 第一次隱藏是點擊空白區域自動隱藏,第二次是通過手指滑動控制dialog隱藏。 實現這個效果的代碼量很少,直接來看代碼: @Override protected void onStart() {

原创 android Tablayout的使用

以往我們想要實現這樣的效果,要麼去找三方開源庫,要麼自己動手寫viewpager,然後根據viewpager的滑動計算指示器的滑動距離來實現。現在在google提供的design包裏有一個tablayout可以幫助我們快速實現

原创 android設計模式之狀態模式

我們在使用一些剛安裝的app會發現你需要執行某些操作,例如分享,評論會提示你沒有登錄,然後讓你去登錄。等你成功登錄後就快可以進行相應的操作了。android開發中,如果我們遇到這種情況相信大部分都會直接用if(登錄了){評論成功}

原创 androidstudio連接網易MUMU模擬器

androidstudio自帶的模擬器不好用,可以試試網易MUMU模擬器,連接簡單速度極快。 打開mumu模擬器後,打開命令行輸入: adb connect 127.0.0.1:7555 就能成功連上模擬器。

原创 android application方法執行多次

偶然發現我自定義的application中方法被調用了兩次,看了一下配置文件發現百度的定位service使用了一個單獨的進程: <service android:name="com.baidu.locat

原创 FragmentTabHost的簡單使用

現在很多主流的應用都喜歡底部幾個導航按鈕,點擊切換不同的頁面。通常我們可以自己底部寫按鈕,然後點擊不同的按鈕自己來控制切換fragment。今天我們用fragmentTabHost來快速的實現這個功能: <?xml version

原创 Flutter底部彈窗及修改彈窗最大高度

在Flutter中,想要實現底部彈窗只需要調用這個方法: showModalBottomSheet(context: null, builder: null) 具體使用方法: showModalBottomSheet(

原创 Flutter自定義圓形選擇框

flutter自帶的checkbox是方形的,需要圓形可以自定義一個,用法一樣: import 'package:flutter/material.dart'; class RoundCheckBox extends Statef

原创 Flutter獲取驗證碼倒計時按鈕

在Flutter中,有一個定時器類Timer,使用方法: Timer timer = new Timer(new Duration(milliseconds: 60), (){ //倒計時結束執行 })