2015年5月26日 星期二

Android-Android Studio 匯入Library

設定如下 :

File -> New Project -> Android -> Fradle: Android Module

build.gradle

buildscript {
    repositories {
        jcenter()

    }
    dependencies {
        classpath 'com.android.tools.build:gradle:1.1.1'
    }
}
apply plugin: 'com.android.application'

repositories {
    jcenter()
    flatDir {
        dirs 'libs'
    }
}

android {
    compileSdkVersion 22
    buildToolsVersion "22.0.1"

    defaultConfig {
        applicationId "com.example.activity"
        minSdkVersion 18
        targetSdkVersion 22
        versionCode 1
        versionName "1.0"
    }

    compileOptions {
        sourceCompatibility JavaVersion.VERSION_1_7
        targetCompatibility JavaVersion.VERSION_1_7
    }
    buildTypes {
        release {
            minifyEnabled false
            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
        }
    }
}

dependencies {
    // 針對 Libs 直接使用任何 jar 的檔案
    compile fileTree(dir: 'libs', include: ['*.jar'])
    // 針對原生 support jar
    compile 'com.android.support:support-v4:22.1.1'
    // 第三方 aar
    compile(name:'aarLinName', ext:'aar')
    // 第三方 Library
    compile project(":projectName")
}

歡迎轉載,請註明出處。

2015年5月24日 星期日

Android-Android Studio 安裝

目前遇到的問題 :
13:19:56.255 [INFO] [org.gradle.launcher.daemon.server.Daemon] start() called on daemon - DefaultDaemonContext[uid=543060fe-2024-4dbb-a167-c8c4271647c0,javaHome=C:\JAVA\jdk,daemonRegistryDir=C:\Users\Brian\.gradle\daemon,pid=5648,idleTimeout=10800000,daemonOpts=-XX:MaxPermSize=256m,-XX:+HeapDumpOnOutOfMemoryError,-Xmx1024m,-Dfile.encoding=x-windows-950,-Duser.country=TW,-Duser.language=zh,-Duser.variant]
13:19:56.267 [DEBUG] [org.gradle.launcher.daemon.server.DaemonStateCoordinator] updating lastActivityAt to 1432271996267
13:19:56.321 [DEBUG] [org.gradle.messaging.remote.internal.inet.InetAddressFactory] Adding IP addresses for network interface Software Loopback Interface 1
.
.
.
.

13:19:56.467 [DEBUG] [org.gradle.messaging.remote.internal.inet.InetAddressFactory] Is this a multicast interface? true
13:19:56.468 [DEBUG] [org.gradle.messaging.remote.internal.inet.InetAddressFactory] Adding loopback multicast interface Atheros AR5B97 Wireless Network Adapter-WFP LightWeight Filter-0000
13:19:56.484 [ERROR] [system.err]
13:19:56.485 [ERROR] [system.err] FAILURE: Build failed with an exception.
13:19:56.486 [ERROR] [system.err]
13:19:56.486 [ERROR] [system.err] * What went wrong:
13:19:56.487 [ERROR] [system.err] java.net.SocketException: Permission denied: listen
13:19:56.488 [ERROR] [system.err]
13:19:56.488 [ERROR] [system.err] * Try:
13:19:56.489 [ERROR] [system.err] Run with --stacktrace option to get the stack trace. Run with --info or --debug option to get more log output.
Daemon vm is shutting down... The daemon has exited normally or was terminated in response to a user interrupt.
13:19:56.494 [DEBUG] [org.gradle.launcher.daemon.registry.PersistentDaemonRegistry] Removing daemon address: null
13:19:56.511 [DEBUG] [org.gradle.launcher.daemon.server.Daemon] VM shutdown hook was unable to remove the daemon address from the registry. It will be cleaned up later.
org.gradle.internal.UncheckedException: java.net.BindException: Address already in use: Cannot bind
at org.gradle.internal.UncheckedException.throwAsUncheckedException(UncheckedException.java:39)
.
.
.
at org.gradle.launcher.daemon.server.Daemon$1.run(Daemon.java:100)
Caused by: java.net.BindException: Address already in use: Cannot bind
at java.net.TwoStacksPlainDatagramSocketImpl.bind0(Native Method)
.
.
.
at org.gradle.cache.internal.FileLockCommunicator.<init>(FileLockCommunicator.java:38)

... 9 more



總之,記得關防火牆...

2015年5月18日 星期一

Java-基本集合

Map

Map<String, Object> map = ...;

for (String key : map.keySet()) {
// if get key
}

for (Object value : map.values()) {
    // if get value
}

for (Map.Entry<String, Object> entry : map.entrySet()) {
    String key = entry.getKey();
    Object value = entry.getValue();
    // if you want get key and value
}

轉貼來源 : 來源

2015年5月12日 星期二

android-利用 color.xml 控制所有套板顏色

想必有些開發者可能要面對很多奇怪的需求
例如 :
A公司背景要紅色
B公司背景要橙色
C公司背景要黃色
...等,面對如果只是5張頁面還可以
但是到達10張以上的頁面要怎辦?

當然客戶沒有很奇怪的需求的話
我們只要把版面集中控管就可以方便去處理了

1 . 首先我們在專案底下的Value新增 : color.xml

2 . 參數如下 :

<?xml version="1.0" encoding="utf-8"?>
<resources>

    <color name="white">#FFFFFF</color>
    <color name="black">#000000</color>

</resources>

3 . 在介面使用自己設定的參數




























4 .  如果是在 Java 底下設定
R.color 是專案底下的 Color . xml
view.setBackgroundColor(getResources().getColor(R.color.black));


以後只需要在 color.xml做更改
所有套用的頁面也會一起更改

參考資料 : How to set background color of a View

歡迎轉載,請註明出處。

2015年5月11日 星期一

Android-EditText 監聽 字數 限制

想必各位大大多少會遇到輸入字框的字數限制
這裡就為大家整理一份出來
( 未完成 )
1 . addTextChangedListener
監聽文字被改變時

public class MainActivity extends Activity {

    private String TAG = "EditTextSample";
    private EditText editText;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        editText = (EditText) findViewById(R.id.editText1);
        editText.addTextChangedListener(new TextWatcher(){

            @Override
            public void beforeTextChanged(CharSequence s, int start, int count,
                    int after) {
                Log.d(TAG,"之前是 : " + s);

            }

            @Override
            public void onTextChanged(CharSequence s, int start, int before,
                    int count) {
                Log.d(TAG,"文字被改變時 : " + s);

            }

            @Override
            public void afterTextChanged(Editable s) {
                Log.d(TAG,"之後為 : " + s);

            }});
    }
}















2 .

參考資料 : 來源1