1. 程式人生 > >第三方登入的簡單實現

第三方登入的簡單實現

.//app

public class App extends Application {
    @Override
    public void onCreate() {
        super.onCreate();
        UMConfigure.init(this,"5b794cdaa40fa352d70002dc"
                ,"umeng",UMConfigure.DEVICE_TYPE_PHONE,"");//58edcfeb310c93091c000be2 5965ee00734be40b580001a0
        PlatformConfig.setQQZone("100424468", "c7394704798a158208a74ab60104f0ba");
        UMConfigure.setLogEnabled(true);

    }

//主頁面main

protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        //初始化
        initView();
        //進行操作
        operation();
    }

    private void operation() {
        rotate.setOnClickListener(this);
        alpha.setOnClickListener(this);
        scale.setOnClickListener(this);
        translate.setOnClickListener(this);
        value_p.setOnClickListener(this);
        donghuaji.setOnClickListener(this);
        shape_yuan.setOnClickListener(this);
    }
    private void initView() {

        shape_yuan = findViewById(R.id.shape_yuan);
        rotate = findViewById(R.id.rotate);
        alpha = findViewById(R.id.alpha);
        scale = findViewById(R.id.scale);
        translate = findViewById(R.id.translate);
        value_p = findViewById(R.id.Value_p);
        donghuaji = findViewById(R.id.donghuaji);
    }

    @Override
    public void onClick(View v) {
        switch (v.getId()){
            case R.id.rotate:
                ObjectAnimator objectAnimator = ObjectAnimator.ofFloat(shape_yuan, "rotation", 0f, 360f);//新增旋轉動畫,旋轉中心預設為控制元件中點
                objectAnimator.setDuration(3000);//設定動畫時間
                objectAnimator.start();
                break;
            case R.id.alpha:
                ObjectAnimator anim = ObjectAnimator.ofFloat(shape_yuan, "alpha", 1f, 0.1f, 1f, 0.5f, 1f);
                anim.setDuration(5000);// 動畫持續時間
                anim.start();
                break;
            case R.id.scale:
                AnimatorSet animatorSetsuofang = new AnimatorSet();//組合動畫
                ObjectAnimator scaleX = ObjectAnimator.ofFloat(shape_yuan, "scaleX", 0, 1f);
                ObjectAnimator scaleY = ObjectAnimator.ofFloat(shape_yuan, "scaleY", 0, 1f);

                animatorSetsuofang.setDuration(2000);
                animatorSetsuofang.setInterpolator(new DecelerateInterpolator());
                animatorSetsuofang.play(scaleX).with(scaleY);//兩個動畫同時開始
                animatorSetsuofang.start();
                break;
            case R.id.translate:
                ObjectAnimator translationX = new ObjectAnimator().ofFloat(shape_yuan,"translationX",0,600f);
                ObjectAnimator translationY = new ObjectAnimator().ofFloat(shape_yuan,"translationY",0,0);

                AnimatorSet animatorSet = new AnimatorSet();  //組合動畫
                animatorSet.playTogether(translationX,translationY); //設定動畫
                animatorSet.setDuration(3000);  //設定動畫時間
                animatorSet.start(); //啟動
                break;
            case R.id.Value_p:
                ObjectAnimator X = new ObjectAnimator().ofFloat(shape_yuan,"translationX",0,600);
                ObjectAnimator Y = new ObjectAnimator().ofFloat(shape_yuan,"translationY",0,600);
                ObjectAnimator ani = ObjectAnimator.ofFloat(shape_yuan, "alpha", 1f, 0.1f, 1f, 0.5f, 1f);
                AnimatorSet Set = new AnimatorSet();  //組合動畫
                Set.playTogether(X,Y); //設定動畫
                AnimatorSet S = new AnimatorSet();  //組合動畫
                S.play(Set).with(ani);
                S.setDuration(3000);
                S.start();
                break;
            case R.id.shape_yuan:
                Intent intent = new Intent(MainActivity.this,SanActivity.class);
                startActivity(intent);
                finish();
                break;
        }
    }
}

//子頁面san

public class SanActivity extends AppCompatActivity {

    private Button log_qq;
    private UMShareAPI mShareAPI;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_san);
        initView();
        mShareAPI=UMShareAPI.get(this);
    }

    private void initView() {
        log_qq = findViewById(R.id.log_qq);
    }

    public void login(View view) {
        UMAuthListener authListener = new UMAuthListener() {
            /**
             * @desc 授權開始的回撥
             * @param platform 平臺名稱
             */
            @Override
            public void onStart(SHARE_MEDIA platform) {
            }
            /**
             * @desc 授權成功的回撥
             * @param platform 平臺名稱
             * @param action 行為序號,開發者用不上
             * @param data 使用者資料返回
             */
            @Override
            public void onComplete(SHARE_MEDIA platform, int action, Map<String, String> data) {
                Toast.makeText(SanActivity.this, "成功了", Toast.LENGTH_LONG).show();
                Intent intent = new Intent(SanActivity.this,ProjectActivity.class);
                startActivity(intent);
                finish();
            }
            /**
             * @desc 授權失敗的回撥
             * @param platform 平臺名稱
             * @param action 行為序號,開發者用不上
             * @param t 錯誤原因
             */
            @Override
            public void onError(SHARE_MEDIA platform, int action, Throwable t) {
                Toast.makeText(SanActivity.this, "失敗:" + t.getMessage(), Toast.LENGTH_LONG).show();
            }
            /**
             * @desc 授權取消的回撥
             * @param platform 平臺名稱
             * @param action 行為序號,開發者用不上
             */
            @Override
            public void onCancel(SHARE_MEDIA platform, int action) {
                Toast.makeText(SanActivity.this, "取消了", Toast.LENGTH_LONG).show();
            }
        };
        mShareAPI.getPlatformInfo(this,SHARE_MEDIA.QQ,authListener);
    }

    @Override
    protected void onActivityResult(int requestCode, int resultCode, Intent data) {
        super.onActivityResult(requestCode, resultCode, data);
        UMShareAPI.get(this).onActivityResult(requestCode,resultCode,data);
    }
}

//AndroidManifest.xml中的配置

<intent-filter>
    <action android:name="android.intent.action.VIEW" />

    <category android:name="android.intent.category.DEFAULT" />
    <category android:name="android.intent.category.BROWSABLE" />

    <data android:scheme="tencent100424468" />
</intent-filter>

//依賴

implementation 'com.umeng.sdk:utdid:1.1.5.3'
implementation 'com.umeng.sdk:common:latest.integration'