2017年12月17日

Android App Privacy Policy

Android App Privacy Policy


Information that may be collected from you

When you use this app, you do not need to enter your personal information (such as your name, ID number, email address, etc.). You will not acquire your personal information without your knowledge, unless you know in advance.

Third-party website
This service may include links to third party services or other third party websites that include the retailer with whom you deal. Please note that this policy applies only to personal information we collect through our services and we are not responsible for the personal information that third parties may collect, store and use through their websites or services. You should always read through the privacy policies of every web site you visit.

This policy change
We may from time to time make changes to this policy for a variety of reasons, for example, to reflect changes in laws and regulations or changes in industry specifications and technology.

If you have any questions or comments about this policy, please contact us.





Android App 隱私權政策

可能向您收集之資訊
您使用此APP時,並不需要輸入個人資料 (例如姓名、身分證字號、電子郵件地址等 ) ,除非事先告知,此APP不會在您不知情的狀況下,取得您個人資料。


第三方網站
本服務可能包含連至第三方服務或第三方其他網站之連結,這個第三方包括與您進行交易的零售商。請注意,本政策僅適用於我方透過服務收集的個人資訊,我方不對第三方可能透過其網站或服務收集、存儲及使用的個人資訊負有責任。您應始終仔細閱讀每個您瀏覽網站的隱私權政策。


本政策的變更
我方可能因各種原因而需不時對本政策進行變更,例如,為了反應法律與法規的變更或行業規範與技術發展的改變。


如果您對本政策有任何問題或意見,請聯絡我們。

2017年12月14日

Android ToolBar

Android ToolBar

ToolBar是在安卓5.0中引入的(android.widget.Toolbar)。在不引入兼容庫的情况下,只能在5.0以上的版本運行;而在引用android.support.v7.widget.Toolbar類之後,可以支持安卓2.1以上版本。


引入了android.support.v7兼容庫。
//build.gradle
    compile 'com.android.support:appcompat-v7:25.3.0'


然後更改Application的主题,找到values文件夾下的styles.xml,更改主题為NoActionBar
<!--AndroidManifest.xml-->
<application
        android:allowBackup="true"
        android:icon="@mipmap/ic_launcher"
        android:label="@string/app_name"
        android:supportsRtl="true"
        android:theme="@style/AppTheme
        <!--修改AppTheme的定义-->
        >

<!--styles.xml-->
<style name="AppTheme" parent="Theme.AppCompat.Light.NoActionBar">



Layout布置

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout
        xmlns:android="http://schemas.android.com/apk/res/android"
        xmlns:tools="http://schemas.android.com/tools"
        xmlns:app="http://schemas.android.com/apk/res-auto"
        android:id="@+id/activity_main"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        tools:context="me.zxm.learnactionbartoolbar.MainActivity"
        >
    <android.support.v7.widget.Toolbar
            android:id="@+id/ToolBar"
            android:minHeight="?attr/actionBarSize"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            app:titleTextColor="@android:color/white"
            android:background="?attr/colorPrimary"
            ></android.support.v7.widget.Toolbar>
</RelativeLayout>




在res文件夾下新建menu文件夾,然後在该文件夾下新增一个布局文件

<?xml version="1.0" encoding="utf-8"?>
<menu
    xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:android="http://schemas.android.com/apk/res/android">
<item
        android:id="@+id/mySearch"
        android:icon="@android:drawable/ic_menu_search"
        app:showAsAction="ifRoom"
        android:title="Search">
</item>
<item
        android:id="@+id/myMore"
        android:icon="@android:drawable/ic_menu_more"
        app:showAsAction="ifRoom|withText"
        android:title="More">
</item>
</menu>




Activity Toolbar Code

import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.support.v7.widget.Toolbar;
import android.view.Menu;
public class MainActivity extends AppCompatActivity implements Toolbar.OnMenuItemClickListener{
    private Toolbar toolbar;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        toolbar = (Toolbar) findViewById(R.id.ToolBar);
        toolbar.setNavigationIcon(R.mipmap.ic_launcher);
        toolbar.setLogo(R.mipmap.ic_launcher);
        toolbar.setTitle("ToolBar");

        toolbar.setSubtitle("toolbar");
        setSupportActionBar(toolbar);
        toolbar.setOnMenuItemClickListener(this);
    }

    @Override
    public boolean onCreateOptionsMenu(Menu menu) {
        getMenuInflater().inflate(R.menu.menu,toolbar.getMenu());
        return true;
    }
}




顯示Back圖示
toolbar = (Toolbar) findViewById(R.id.hack_toolbar);
        setSupportActionBar(toolbar);

        getSupportActionBar().setDisplayHomeAsUpEnabled(true);
        getSupportActionBar().setDisplayShowHomeEnabled(true);

toolbar.setNavigationOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                //do something you want
            }

        });

2017年9月24日

ViewTreeObserver

ViewTreeObserver

ViewTreeObserver vto =textViewLeft.getViewTreeObserver();vto.addOnGlobalLayoutListener(new ViewTreeObserver.OnGlobalLayoutListener() {    @Override    public void onGlobalLayout() {        if (Build.VERSION.SDK_INT < 16) {            textViewLeft.getViewTreeObserver().removeGlobalOnLayoutListener(this);        }        else {            textViewLeft.getViewTreeObserver().removeOnGlobalLayoutListener(this);        }    }});