置頂文章

顯示具有 Android 標籤的文章。 顯示所有文章
顯示具有 Android 標籤的文章。 顯示所有文章

2018年6月1日 星期五

Android string.xml 的部分文字變色處理在某些手機上不會顯示出文字

之前發生整個文字在別的手機上消失不見,但是點擊該位置發現TextView還是存在的。

今天終於知道為什麼會消失了...

在某些手機上(非特定品牌、型號問題,在同型號的手機上發現一個正常顯示,一個消失不見),使用:

<string name="test_message">這是測試<font color="#345678">測試</font></string>

就會發生消失的情況。

使用:

<string name="test_message">這是測試<font color="red">測試</font></string>

在上述例子會消失的手機,才會正常顯示文字...

2018年4月30日 星期一

Android Studio 2.3 升級到 Android Studio 3 的除錯更新之路

1. library如果有用到

com.google.android.gms:play-services

這個統包的play services,要把它拆開只導入有用到的單一項library。
如:

com.google.android.gms:play-services-auth
com.google.android.gms:play-services-gcm

2. 打包出來的apk檔案命名設定要調整。
(還沒打包過就先不寫出來了,目前沒有報錯而已)

3.  發現2.3版 使用Java JDK 1.8 沒問題,升級到3就一直報錯....。最後是用下載Android Studio 3壓縮檔裡內建的才解決。

(陸續更新中)

2017年6月2日 星期五

[Android] 可以取代HashMap的物件

參考 http://blog.csdn.net/u010687392/article/details/47809295

注意事項,不可用來包在Intent傳遞給Activity/ Fragment,因為不是 Serializable 。

2017年3月13日 星期一

[Android] 手機拍攝的照片上傳之後,Server上的照片會旋轉的問題

用網路找的取得旋轉角度之後再轉照片之後上傳的方式都沒有用,

最後是用Glide解決。

Glide.with(mContext).load(fileUri).asBitmap().into(1024, 1024).get();

用取得的Bitmap來上傳。


開發環境AS 2.3,
buildToolsVersion : 25.0.0
minSdkVersion : 15
targetSdkVersion : 24
compileSdkVersion : 24
supportLibraryVersion : 24.2.1

2016年11月18日 星期五

2016年2月24日 星期三

[Android] - 在AndroidManifest.xml 的 parentActivityName設定

在AndroidManifest.xml中設定parentActivityName的屬性,
系統會在按下返回鍵之後自動回到parentActivityName所設的Activity。

不過缺點是,系統是onCreate一次Activity,較吃資源。

2016年1月12日 星期二

[Android] - Android 6.0的Primary Color必須是不透明的

Android 6.0的Primary Color必須是不透明的。

如果有設定到Alpha值的時候會crash報錯誤:

java.lang.RuntimeException: A TaskDescription's primary color should be opaque

2016年1月7日 星期四

[Android] - 使用Facebook做第三方登入的一些心得

1. Facebook現在可以用Email或是手機號碼註冊,如果一定需要Email的話就要想解決辦法。

2. Facebook App所得到的使用者ID,在不同的Facebook App所得到的值是不同的。

3. 2016/01/06所看到的Facebook範例裡面,有xml Provider的設定,不同的App如果用同一個Provider金鑰名稱的話,另一個App會裝不起來。

4. 雖然Facebook App設定上面要填Android package name,但是不在設定裡面的App似乎還是可以使用...。

2015年12月15日 星期二

[Android] - Android 6.0以後的權限設定與GCM

因應Android 6.0以後對於手機權限的管理方式(如存取相機、位置、聯絡人、手機、儲存、日曆權限等等),在舊版的開發方式上會導致crash。
必須增加版本判斷來對權限有不同的寫法

權限的簡介
http://developer.android.com/intl/zh-tw/training/permissions/index.html

即時要求權限的範例:
http://developer.android.com/intl/zh-tw/training/permissions/requesting.html

權限列表資訊
http://developer.android.com/intl/zh-tw/guide/topics/security/permissions.html#permission-groups


GCM:
按照之前舊版的方式取得DeviceId在6.0的手機上會crash
所以去爬了一下官方文件
範例參考:
https://developers.google.com/instance-id/guides/android-implementation

2015年11月27日 星期五

[Android] - 改變ToolBar左側的返回建顏色


除了一開始建立Project的顏色之外,在Code裡面改變顏色的方法:
final Drawable upArrow = getResources().getDrawable(R.drawable.abc_ic_ab_back_mtrl_am_alpha);
upArrow.setColorFilter(getResources().getColor(R.color.color_name), PorterDuff.Mode.SRC_ATOP);
getSupportActionBar().setHomeAsUpIndicator(upArrow);

不過這邊用的getDrawable跟getColor都快被棄用了,
也許以後要改成這樣:
final Drawable upArrow = getResources().getDrawable(R.drawable.abc_ic_ab_back_mtrl_am_alpha, getApplicationContext().getTheme());
upArrow.setColorFilter(getResources().getColor(R.color.color_name, getApplicationContext().getTheme()), PorterDuff.Mode.SRC_ATOP);
getSupportActionBar().setHomeAsUpIndicator(upArrow);


參考資料
http://stackoverflow.com/questions/26788464/how-to-change-color-of-the-back-arrow-in-the-new-material-theme


2015年11月24日 星期二

[Android] - 使用Parse + Layer做聊天功能

以我目前的了解

Parse是雲端資料庫

Layer是聊天訊息系統

這篇介紹一下怎麼使用Parse + Layer做即時聊天系統

網路上都有Sample跟介紹,這邊自己再做個紀錄

1. 成為Parse開發者
https://parse.com/

2. 成為Layer開發者
https://layer.com/

3. 下載Android範例
https://github.com/layerhq/Layer-Parse-Android-Example

4. 下載Parse comment 工具
https://github.com/ParsePlatform/parse-cli/releases/tag/release_3.0.1
我的電腦是Windows的所以下載parse.exe執行檔

5. 開啟命令提示字元,輸入{絕對路徑或相對路徑}parse.exe new

之後會要求輸入Parse的帳號密碼
登入成功之後會問要「新開一個Project」還是「使用現有的」
選擇「新開一個Project」要再輸入Project名稱
選擇「使用現有的」之後會選擇哪一個


接著會詢問服務提供商是哪一個,選擇Parse

再來要填寫本地端的資料夾名稱,以當前位置做根目錄,系統會在這兒底下新增該資料夾名稱


然後,會問你要不要設定空專案,這邊直接按下Enter就可以

按下Enter之後的資訊


6.. 下載Layer Parse Module
https://github.com/layerhq/layer-parse-module
解壓縮放在步驟5所開好的資料夾底下

7. 登入layer且開一個Project之後,選擇「Keys」,再到Account: Authentication keys的輸入框填入資訊並按下「Generate a new key」,如下圖

按下「Generate a new key」之後會出現如下圖的彈出視窗,把輸入框的內容複製起來,貼到layer-parse-module\keys\layer-key.js

8. 開啟在專案根目錄底下的main.js
將下列幾行Code貼上
======================Code===================
var fs = require('fs');
var layer = require('cloud/layer-parse-module/layer-module.js');

var layerProviderID = 'layer:///providers/.......';  // Should have the format of layer:///providers/<GUID>
var layerKeyID = 'layer:///keys/......';   // Should have the format of layer:///keys/<GUID>
var privateKey = fs.readFileSync('cloud/layer-parse-module/keys/layer-key.js');
layer.initialize(layerProviderID, layerKeyID, privateKey);


Parse.Cloud.define("generateToken", function(request, response) {
    var currentUser = request.user;
    if (!currentUser) throw new Error('You need to be logged in!');
    var userID = currentUser.id;
    var nonce = request.params.nonce;
    if (!nonce) throw new Error('Missing nonce parameter');
        response.success(layer.layerIdentityToken(userID, nonce));

});
======================End===================

記得把Layer的Account: Provider ID跟Account: Authentication keys改成自己的
這兩個資訊都在Layer的Keys頁面

9. 回到命令提示字元,將當前目錄放到步驟4時建立好的資料夾底下,輸入parse.exe deploy
就把本地端的檔案上傳到Parse的Cloud Code了


10. 開啟Android Studio,將步驟3的範例打開
再把LayerImpl的LayerAppID和ParseImpl的ParseAppID與ParseClientKey改成自己的

11. 安裝到兩台手機上面,註冊兩個帳號就可以好好的聊天了

參考網址:
https://www.parse.com/docs/cloudcode/guide#command-line-installation
https://github.com/layerhq/layer-parse-module
https://github.com/layerhq/Layer-Parse-Android-Example

2015年11月20日 星期五

[Android] - CardView 介紹

可做出矩形區域的背景圖片
可設定圓角方角、陰影等等

附上原始碼:
<android.support.v7.widget.CardView
xmlns:card_view="http://schemas.android.com/apk/res-auto" android:layout_gravity="center"
android:layout_width="match_parent"
android:layout_height="wrap_content"
card_view:cardPreventCornerOverlap="false"
card_view:cardCornerRadius="10dp"
card_view:cardElevation="5dp"></android.support.v7.widget.CardView>
效果如下圖


















說明:
cardPreventCornerOverlap
CardView內的元件要不要與圓角重疊

cardCornerRadius
CardView的四個角的弧度

cardElevation
CardView的的陰影