使用androidstudio创建一个qq登录界面
时间: 2023-09-16 07:13:34 浏览: 251
首先,你需要在 Android Studio 中创建一个新的项目。然后,按照以下步骤创建 QQ 登录界面:
1. 在 `res/layout` 目录下创建一个新的布局文件,例如 `activity_qq_login.xml`。
2. 在布局文件中添加必要的视图元素,比如 `EditText`、`Button` 和 `ImageView`。
3. 在 `MainActivity.java` 中实现逻辑代码。在这里,你需要使用 QQ 的 SDK 来实现登录功能。你可以在 QQ 开放平台申请应用并获得相应的 APP ID 和 APP KEY。
4. 在 `AndroidManifest.xml` 中添加必要的权限和 QQ SDK 的配置信息。
以下是一个简单的示例代码,可以帮助你快速入门:
activity_qq_login.xml:
```xml
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent">
<ImageView
android:id="@+id/qq_logo"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="50dp"
android:layout_centerHorizontal="true"
android:src="@drawable/qq_logo" />
<EditText
android:id="@+id/qq_username"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginTop="20dp"
android:layout_marginLeft="20dp"
android:layout_marginRight="20dp"
android:hint="请输入QQ号码"
android:inputType="number" />
<EditText
android:id="@+id/qq_password"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_below="@+id/qq_username"
android:layout_marginTop="20dp"
android:layout_marginLeft="20dp"
android:layout_marginRight="20dp"
android:hint="请输入密码"
android:inputType="textPassword" />
<Button
android:id="@+id/qq_login_button"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_below="@+id/qq_password"
android:layout_marginTop="30dp"
android:layout_marginLeft="20dp"
android:layout_marginRight="20dp"
android:text="登录" />
</RelativeLayout>
```
MainActivity.java:
```java
import android.os.Bundle;
import android.support.v7.app.AppCompatActivity;
import android.widget.Button;
import android.widget.EditText;
import android.widget.ImageView;
import com.tencent.connect.common.Constants;
import com.tencent.connect.auth.QQAuth;
import com.tencent.connect.UserInfo;
import com.tencent.tauth.IUiListener;
import com.tencent.tauth.UiError;
import com.tencent.tauth.Tencent;
import org.json.JSONException;
import org.json.JSONObject;
public class MainActivity extends AppCompatActivity {
private EditText mUsername;
private EditText mPassword;
private Button mLoginButton;
private ImageView mQQLogo;
private QQAuth mQQAuth;
private Tencent mTencent;
private UserInfo mUserInfo;
private String mAppId = "your_app_id"; // 替换成你的 APP ID
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_qq_login);
mUsername = findViewById(R.id.qq_username);
mPassword = findViewById(R.id.qq_password);
mLoginButton = findViewById(R.id.qq_login_button);
mQQLogo = findViewById(R.id.qq_logo);
// 初始化 QQ SDK
mQQAuth = QQAuth.createInstance(mAppId, this.getApplicationContext());
mTencent = Tencent.createInstance(mAppId, this.getApplicationContext());
mLoginButton.setOnClickListener(v -> {
// 获取输入的用户名和密码
String username = mUsername.getText().toString();
String password = mPassword.getText().toString();
// 调用 QQ 登录接口
mTencent.login(MainActivity.this, "all", new BaseUiListener());
});
}
private class BaseUiListener implements IUiListener {
@Override
public void onComplete(Object response) {
JSONObject jsonResponse = (JSONObject) response;
try {
String openId = jsonResponse.getString(Constants.PARAM_OPEN_ID);
String accessToken = jsonResponse.getString(Constants.PARAM_ACCESS_TOKEN);
String expires = jsonResponse.getString(Constants.PARAM_EXPIRES_IN);
mTencent.setOpenId(openId);
mTencent.setAccessToken(accessToken, expires);
// 获取用户信息
mUserInfo = new UserInfo(MainActivity.this, mTencent.getQQToken());
mUserInfo.getUserInfo(new UserInfoUiListener());
} catch (JSONException e) {
e.printStackTrace();
}
}
@Override
public void onError(UiError uiError) {
}
@Override
public void onCancel() {
}
}
private class UserInfoUiListener implements IUiListener {
@Override
public void onComplete(Object response) {
JSONObject jsonResponse = (JSONObject) response;
try {
String nickname = jsonResponse.getString("nickname");
String figureurl_qq_2 = jsonResponse.getString("figureurl_qq_2");
// TODO: 显示用户信息
} catch (JSONException e) {
e.printStackTrace();
}
}
@Override
public void onError(UiError uiError) {
}
@Override
public void onCancel() {
}
}
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
if (requestCode == Constants.REQUEST_LOGIN) {
if (resultCode == Constants.ACTIVITY_OK) {
Tencent.handleResultData(data, new BaseUiListener());
}
}
}
}
```
AndroidManifest.xml:
```xml
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.example.qqlogin">
<uses-permission android:name="android.permission.INTERNET" />
<application
android:allowBackup="true"
android:icon="@mipmap/ic_launcher"
android:label="@string/app_name"
android:roundIcon="@mipmap/ic_launcher_round"
android:supportsRtl="true"
android:theme="@style/AppTheme">
<activity android:name=".MainActivity"
android:label="@string/app_name"
android:theme="@style/AppTheme.NoActionBar">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
<!-- 注册 QQ 登录相关的 Activity -->
<activity
android:name="com.tencent.connect.common.AssistActivity"
android:configChanges="orientation|keyboardHidden|screenSize"
android:theme="@android:style/Theme.Translucent.NoTitleBar" />
<activity
android:name="com.tencent.tauth.AuthActivity"
android:launchMode="singleTask"
android:noHistory="true" />
<activity
android:name="com.tencent.connect.common.PhotoActivity"
android:configChanges="orientation|keyboardHidden|screenSize"
android:screenOrientation="portrait"
android:theme="@android:style/Theme.Translucent" />
</application>
</manifest>
```
注意替换代码中的 `your_app_id` 为你的 APP ID。以上代码仅为示例,你需要根据自己的实际需求进行修改和优化。