標簽‘android’

純CSS解決iOS下網頁不滿一屏header、footer隨頁面滾動問題

前端頁面開發或是現在日漸增多的Hybird APP應用開發中,經常遇到模擬原生APP界面效果不佳情況,固定header、footer便是其中一種。

涉及header、footer固定,主體部分可滑動,最初想法一般是

position: fixed

然而,iOS各種下input獲取焦點后fixed失效等一系列問題,致使我們不得不選擇另辟他徑。于是,我們這樣玩 查看更多...

Kotlin Android擴展使用及流行框架支持

接上篇,整理一下Kotlin在Android平臺上應用的一些實例及方法。

Kotlin Android Extensions

Kotlin針對Android提供了Kotlin Android Extensions,可以很大程度上增強Android的開發體驗。
背景
相信每個Android開發人員都很清楚findViewById()函數,并且備受摧殘,毫無疑問,大量的findViewById()會造成代碼閱讀上的干擾和錯誤定位的難度,雖然有類似Butterknife之類的庫可以通過注解實現綁定,但在實際使用過程中還是要為每個變量增加注解,倘若出現大量注解,維護難度應該不亞于直接編碼,而其優點無非是代碼看起來簡潔了,但整體看似乎并不是特別優雅,且需要增加額外的運行庫。

現在,Kotlin Android Extensions插件給我們提供了更優雅的方法,且不需要額外引入運行庫,比如,我們的代碼可以像下面這樣寫: 查看更多...

是時候在Android開發中使用Kotlin了

早在2015年,就開始斷斷續續接觸Kotlin,最初是因為使用與Kotlin同公司的Intellij IDEA系列,從官網了解到Kotlin,也在博客記錄了《初識Kotlin》。去年2月份,Kotlin終于發布了1.0正式版,又一次引爆熱點,業內人員紛紛嘗試Kotlin開發Android等場景,也有人拿其與Groovy、Scala甚至Swift對比,但與Java相比終歸都是民間玩法。

直至今年5.18,Google 在 I/O 2017 上宣布 Android 加入了對 Kotlin 編程語言的支持,并將Kotlin語言作為安卓開發的一級編程語言。至此,Kotlin終于完全被IT界大眾所認識(據我所知,在此之前,很多使用Jetbrains系IDE的小伙伴,并不知道Kotlin的存在,也不知道自己日常離不開的IDE就是Kotlin開發的)。

有了Google的大力支持,相信未來必然像當年換ADT為Android Studio一樣順風順水,毋庸置疑,作為Android程序員的你,是時候開始嘗試在Android開發中使用Kotlin了。目前Android Studio 2.x可以安裝插件使用,Android Srudio 3.x之后將默認支持Kotlin。下面參考kotlinlang官方使用引導整理了簡單的引導教程,這里默認你是已經在使用Android Studio進行日常開發的程序員,細節將一帶而過。

安裝Kotlin插件

Kotlin插件與3.0版本的Android Studio捆綁在一起。 如果你使用的是較早版本,則需要安裝Kotlin插件。在Android Studio的插件管理中直接搜索安裝,安裝完成后重啟即可。 查看更多...

Android系統Web字體/行高異常解決

相信做前端開發的朋友很多時候會遇到這樣的問題,設置行高來達到文本垂直居中的目的,但移動端會遇到略偏上或者偏下,通常情況下輕微的偏移可能出現于設備像素密度、容器高度、字體大小等原因,比如30px容器內放15px文字,就做不到完全居中,這個不在今天問題范圍,不再贅述。

今天的問題其實算是舊事重提,遇到這個問題,最初是在2015年了,當時團隊其他同事做混合app有類似問題,同事最終似乎是采用padding的形式取代了行高,但實際上這個還會引起一些問題,主要是Android系統設置字體后,WebView內字體大小深圳和字體相關的屬性都受到影響。

在去年4月份曾寫過一篇文章《QQ內置瀏覽器下網頁行高、字體大小顯示異常解決》,但是當時只注意到Android系統下手機QQ內嵌的瀏覽器,直至后期做自己的Android App使用WebView內嵌網頁,也發現了同樣的問題,經過翻閱網上資料案例,發現近期挺多類似文章和提問,主要原因是Android系統多使用sp作為單位,會根據用戶設置縮放字體。

常規的解決方法主要有以下兩種 查看更多...

Android優化之SparseArray替代HashMap

Java開發過程中,一般免不了使用HashMap來存儲鍵值對以方便各種需求的實現,但是對于Android這種對內存非常敏感的移動平臺,很多時候使用一些Java的API并不能達到更好的性能,相反反而更消耗內存,所以針對Android這種移動平臺,也推出了更符合自己的API,比如SparseArray、ArrayMap用來代替HashMap在有些情況下能帶來更好的性能提升。

對于SparseArray,比HashMap更省內存,在某些條件下性能更好,主要是因為它避免了對key的自動裝箱(int轉為Integer類型等),它內部則是通過兩個數組來進行數據存儲的,一個存儲key,另外一個存儲value,為了優化性能,它內部對數據還采取了壓縮的方式來表示稀疏數組的數據,同時,還實現了SparseIntArray、SparseLongArray、SparseBooleanArray。 查看更多...

Android WebView內嵌網頁input無法選擇文件解決

最近發現公司APP內嵌的網頁點擊上傳圖片沒任何效果,查資料得知是Android安全限制,WebView內網頁默認沒有讀取本地文件的權限。雖然網上有解決方案,但是由于Android版本幾經波折,API簽名大相徑庭,想要完全兼容,要實現多個方法,為方便以后使用,簡單記錄一下。

首先,在使用WebView的頁面,增加如下全局變量,方便回調使用:
查看更多...

Android軟鍵盤遮擋輸入框問題解決

移動APP、網站有界面底部存在輸入框的情況,無論是原生還是WebView內嵌,在軟鍵盤彈出時,經常會有遮擋輸入框的問題,解決方法就是讓軟鍵盤彈出時窗口自適應,而非軟鍵盤直接懸浮,網上看到有三種解決方案:

1、在你的activity中的oncreate中setContentView之前加上如下代碼

getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_ADJUST_RESIZE | WindowManager.LayoutParams.SOFT_INPUT_STATE_HIDDEN);

2、在項目的AndroidManifest.xml文件中界面對應的Activity里加入android:windowSoftInputMode="stateVisible|adjustResize",這樣會讓屏幕整體上移。如果加上的是android:windowSoftInputMode="adjustPan"這樣鍵盤就會覆蓋屏幕。 查看更多...

Android Webview增加自定義userAgent、headers

最近維護公司app,要內嵌在線網站進來,因為在線移動網站是類似常見商城的形式,底部有幾個導航按鈕,而app內嵌的情況想從網頁層面控制頁面的返回,同時再針對app內嵌情況下的界面做一些控制。

可能前面說得比較晦澀難懂,下面舉個例子,比如,頁面有12345五個底部導航,默認進首頁(1),當點擊2345的時候,在android下點擊原生返回鍵還會回到首頁(1),這樣的效果體驗不是很好,所以頁面全局攔截a鏈接,通過js采用location.replace來做跳轉,這樣一來,只要內部頁面沒有直接跳回12345五個頁面的操作,整體跳轉體驗應該和app類似了。

另一個問題,要做微信分享,但是眾所周知,網頁目前是不可能直接分享到微信(除了二維碼形式),所以這里在定義了特定協議,網頁請求如share://share?title=樸人博客&content=樸人博客…,原生app內接收后解析處理,在webview上彈出分享界面。 查看更多...

Android Studio …aapt.exe” finished with non-zero…解決

升級Android Studio為2.2.2之后,舊項目編譯出錯,Android編譯時出現如下錯誤

Error:Execution failed for task ':app:processAndroid360XmDebugResources'.
> com.android.ide.common.process.ProcessException: org.gradle.process.internal.ExecException: Process 'command 'D:\Develop\Android\sdk\build-tools\21.0.0\aapt.exe'' finished with non-zero exit value -1073741819

搜索良久,很多做法都試了不好使,偶然間發現有人說可能使用JDK8的緣故,果斷切JDK7嘗試,嘗試結果是根本切不回去,Android Studio 2.2.2提示使用JDK 8或者更新的版本。 查看更多...

安卓Adapter中getView方法重復執行及索引錯位問題解決

Android開發中,經常會用到ListView,當然,也會用到Adapter為ListView綁定數據。通常,我們采用繼承BaseAdapter并實現getView等方法的方式為ListView渲染數據,ListView中每個元素都會去調用getView做渲染。但是,如果ListView要展示數據非常龐大,創建成百上千個View是不可取的,于是乎,Android為我們提供了一套Recycler機制,可以重復利用已創建的View,降低對象開銷。

原理如下:

在一個完整的ListView第一次出現時,每個Item都是null的,getView的時候會跑到需要inflate一個Item的代碼段,假設整個view只能最多顯示10個item,那么當滑動到第11個Item的時候,第一個item會放入"recycler",如果第11個Item和放入"Recycler"的item的view一致,那么就會使用"Recycler"里面的Item來顯示,從而不用再重復inflate一次。

圖示如下:

adapter-recycler
查看更多...

黑龙江22选5开奖