2016年8月30日 星期二

Android ActivityLifecycleCallbacks 用法







AndroidManifest.xml:




這樣就可以監聽到所有ACTIVITY的生命周期 不用再一個一個寫

2016年8月26日 星期五

Swift Xcode 將編輯區的背景換成黑色的




step 1 ) 開啟 Xcode ,點選上方工具列的 Xcode
step 2 ) 點選 Preferences 
step 3 ) 點選 Fonts & Colors 
step 4 ) 左邊列,有許多的樣式可以自己選取,一般我們都使用 Default,黑色背景則是Midnight

完成。


2016年8月25日 星期四

Swift 基本型別篇




型別標註

宣告變數或常數時,可以加上型別標註(type annotation),說明這個值的型別(像是整數、字串)。使用方法是在值的後面加上冒號 : 接著加上型別名稱

var number: Int
通常很少需要寫型別標註,如果在宣告時給了一個初始值, Swift 則會自動推斷出型別。



整數

整數(Int)指的是沒有小數點的數字,可以有符號 (正、負、零)或是無符號 (正、零)

浮點數

浮點數(FloatDouble)指的是有包含小數點的數字,FloatDouble的差別在於精確度,Float有 6 位數,而Double可以達到 15 位數,選擇使用哪一個則是看你程式需要處理值的範圍而定

整數和浮點數轉換

整數和浮點數的轉換必須指定型別。

// 型別為整數 Int
let number1 = 3

// 型別為浮點數 Double
let number2 = 0.1415926

// 相加前 需要將 Int 轉換成 Double 否則會報錯誤
let pi = Double(number1) + number2

布林值

布林值(bool)指的是邏輯上的值,只能為真或假。在後續的學習中會使用到這個特性,依據一個條件式(像是數字比大小或兩數是否相等)會返回真或假,進而使用不同的程式碼。 Swift 有兩個布林常數:truefalse

元組

元組(tuple)是將多個值組合成一個複合值,其內的型別可以不同,以一對小括號()前後包起來,每個值以逗號
// 宣告一個元組並填值進去 依序是字串、整數、浮點數
let myInfo = ("Jack", 25, 178.25)

可選型別

這是 Swift 的一個特性,讓變數或常數可以有沒有值的情況,這與零0或是空字串""不同,當沒有值時,變數或常數會返回nil。而nil代表的就是沒有值,任何型別只要有加上可選型別(optional type)都可以設置成nil。使用方法為在型別標註後面加上一個問號?
// 在宣告變數時 型別標註後面加上一個問號 ?
var someScore: Int?
// 因為目前尚未指派 所以目前 score 會被設置成 nil 
// 也就是沒有值的狀態

// 設值為 100
someScore = 100
// 再將變數設為 nil 目前又是沒有值的狀態
someScore = nil

// 但如果沒有加上 ? 則是尚未指派的狀態 這時如果直接使用會報錯誤
var totalScore: Int
// 也不能設成 nil 這行同樣也會報錯誤
//totalScore = nil

// 宣告常數也是一樣 在型別標註後面加上一個問號 ?
let someName: String?

Swift 基本常識篇




變數及常數

程式碼中,會使用變數常數來暫時保存資料,以供後續程式碼存取、操作或儲存。
+

兩者的差別在於,常數是宣告後就不能改變的值,像是用來表示一個人的名字或是身分證號碼。變數則是宣告後,還可以依照需求更改這個值,像是要計算累計的購買價錢或計算人數。
使用let來宣告常數,使用var宣告變數。








2016年8月22日 星期一

Android 打包出現 com.android.build.api.transform.TransformException: java.util.zip.ZipException: duplicate entry




Android 打包出現 com.android.build.api.transform.TransformException: java.util.zip.ZipException: duplicate entry

有可能是 libs 出現相同的檔案  檢查刪除不用的檔案   即可成功打包

2016年8月9日 星期二

Android Facebook 分享


目前 Sdk 已經出到 4.12.1 
AndroidManifest.xml 設定

<provider android:authorities="com.facebook.app.FacebookContentProvider{APP_ID}"
          android:name="com.facebook.FacebookContentProvider"
          android:exported="true"/>


若要對連結顯示 ShareDialog,請在 ShareDialog 方法中建立 onCreate 實例


public class MainActivity extends Activity {
    CallbackManager callbackManager;
    ShareDialog shareDialog;
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        FacebookSdk.sdkInitialize(getApplicationContext());
        callbackManager = CallbackManager.Factory.create();
        shareDialog = new ShareDialog(this);
        // this part is optional
        shareDialog.registerCallback(callbackManager, new FacebookCallback<Sharer.Result>() { ... });
    }
然後顯示 ShareDialog:
if (ShareDialog.canShow(ShareLinkContent.class)) {
    ShareLinkContent linkContent = new ShareLinkContent.Builder()
            .setContentTitle("Hello Facebook")
            .setContentDescription(
                    "The 'Hello Facebook' sample  showcases simple Facebook integration")
            .setContentUrl(Uri.parse("http://developers.facebook.com/android"))
            .build();

    shareDialog.show(linkContent);
}
最後在 callbackManager 中呼叫 SDK 的 onActivityResult 以處理回應:
@Override
protected void onActivityResult(final int requestCode, final int resultCode, final Intent data) {
    super.onActivityResult(requestCode, resultCode, data);
    callbackManager.onActivityResult(requestCode, resultCode, data);
}



參考連結:https://developers.facebook.com/docs/sharing/android





2016年8月2日 星期二

swift 線上環境 IBM Swift Sandbox




IBM 提供了一個線上環境 IBM Swift Sandbox ,讓你可以直接在瀏覽器上測試 Swift 語法

2016年8月1日 星期一

Android webview post javascript 問題


方法


要記得 加 雙引號 或者單引號  不然會被當成變數
String js = "javascript:" + "scan(\"" + contents + "\")";Log.d(TAG, "onActivityResult " + js);mWebView.loadUrl(js);