【Google Play Servicesを使って効率的に開発をする】com.google.android.gms.common.SignInButtonを使う

このエントリーを Google ブックマーク に追加
Pocket
[`yahoo` not found]

com.google.android.gms.commonに含まれているSignInButtonはGoogleにサインインするボタンの見た目だけを表すクラスです。
このクラスはあくまでも見た目だけを表すもので、実際のログイン処理は自分で実装する必要があります。

SignInButtonの見た目を変更する

SignInButtonは表示内容と色を変更することができます。
見た目の変更には下記の定数で指定します。
int SIZE_ICON_ONLY Googleアイコンだけが表示されます。
int SIZE_STANDARD Googleアイコンとテキスト「ログイン」が表示されます。
int SIZE_WIDE Googleアイコンとテキスト「にログイン」が表示されます。
int COLOR_AUTO Google Play Servicesが色を決定します。
int COLOR_DARK 暗い色合いのボタンになります
int COLOR_LIGHT 明るい色合いのボタンになります
上記の定数は下記のメソッドの引数として使用できます。
void setSize(int buttonSize)
int buttonSize ボタンのサイズを表す定数を渡します。
void setColorScheme(int colorScheme)
int colorScheme カラースキームを表す定数を渡します。
void setStyle(int buttonSize, int colorScheme)
int buttonSize ボタンのサイズを表す定数を渡します。
int colorScheme カラースキームを表す定数を渡します。

SignInButtonを制御する

void setOnClickListener(View.OnClickListener listener)
View.OnClickListener listener クリックされた時のリスナーインターフェースを渡します。
void setEnabled(boolean enabled)
boolean enabled trueでクリックがきるようになります、falseの場合だとクリックできず非活性な表示になります

サンプルプログラム

package yona.trygms;

import android.os.Bundle;
import android.support.v7.app.AppCompatActivity;
import android.view.View;
import android.widget.LinearLayout;
import android.widget.Toast;

import com.google.android.gms.common.SignInButton;

public class SignInButtonActivity extends AppCompatActivity {

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

        LinearLayout container = (LinearLayout)findViewById(R.id.container);
        SignInButton iconOnlyButton = new SignInButton(this);
        iconOnlyButton.setSize(SignInButton.SIZE_ICON_ONLY);
        container.addView(iconOnlyButton);

        SignInButton standardButton = new SignInButton(this);
        standardButton.setSize(SignInButton.SIZE_STANDARD);
        container.addView(standardButton);

        SignInButton wideButton = new SignInButton(this);
        wideButton.setSize(SignInButton.SIZE_WIDE);
        container.addView(wideButton);

        SignInButton autoButton = new SignInButton(this);
        autoButton.setStyle(SignInButton.SIZE_WIDE, SignInButton.COLOR_AUTO);
        container.addView(autoButton);

        SignInButton lightButton = new SignInButton(this);
        lightButton.setStyle(SignInButton.SIZE_WIDE, SignInButton.COLOR_LIGHT);
        lightButton.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                Toast.makeText(SignInButtonActivity.this, "onClick", Toast.LENGTH_SHORT).show();
            }
        });
        container.addView(lightButton);

        SignInButton darkButton = new SignInButton(this);
        darkButton.setStyle(SignInButton.SIZE_WIDE, SignInButton.COLOR_DARK);
        darkButton.setEnabled(false);
        container.addView(darkButton);
    }
}