Android基于Sqlite實(shí)現(xiàn)注冊(cè)和登錄功能
Android中基于Sqlite實(shí)現(xiàn)注冊(cè)和登錄功能,供大家參考,具體內(nèi)容如下
前言
寫(xiě)這篇博客主要是為了鞏固一下學(xué)的Sqlite知識(shí)以及梳理一下這個(gè)項(xiàng)目的邏輯
實(shí)現(xiàn)邏輯

項(xiàng)目的圖片結(jié)構(gòu)圖如下

代碼
user class
public class User {
? ? private String name; ? ?//用戶名
? ? private String password; ? ??//密碼
? ? public User(String name, String password) {
? ? ? ? this.name = name;
? ? ? ? this.password = password;
? ? }
? ? public String getName() {
? ? ? ? return name;
? ? }
? ? public void setName(String name) {
? ? ? ? this.name = name;
? ? }
? ? public String getPassword() {
? ? ? ? return password;
? ? }
? ? public void setPassword(String password) {
? ? ? ? this.password = password;
? ? }
}DBOpenHelper class
import android.content.Context;
import android.database.Cursor;
import android.database.sqlite.SQLiteDatabase;
import android.database.sqlite.SQLiteOpenHelper;
import java.util.ArrayList;
public class DBOpenHelper extends SQLiteOpenHelper {
? ? private SQLiteDatabase db;
? ? public DBOpenHelper(Context context){//打開(kāi)數(shù)據(jù)庫(kù)
? ? ? ? super(context,"db_test",null,1);//1:上下文,2:數(shù)據(jù)庫(kù)名,3:允許我們查詢數(shù)據(jù)時(shí)返回一個(gè)Cursor,4:當(dāng)前數(shù)據(jù)庫(kù)的版本號(hào)
? ? ? ? db = getReadableDatabase();
? ? }
? ? @Override
? ? public void onCreate(SQLiteDatabase db){//建表(user)語(yǔ)句
? ? ? ? db.execSQL("CREATE TABLE IF NOT EXISTS user(" +//PRIMARY key 將id設(shè)為主鍵 ,AUTOINCREMENT 設(shè)置id列自為增長(zhǎng)
? ? ? ? ? ? ? ? "_id INTEGER PRIMARY KEY AUTOINCREMENT," +
? ? ? ? ? ? ? ? "name TEXT," + ? ? ? ? ? ? ? ? ? ? ? //text 文本類型
? ? ? ? ? ? ? ? "password TEXT)");
? ? }
? ? @Override
? ? public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion){//重寫(xiě)升級(jí)
? ? ? ? db.execSQL("DROP TABLE IF EXISTS user");
? ? ? ? onCreate(db);
? ? }
? ? public void add(String name,String password){//重寫(xiě)添加
? ? ? ? db.execSQL("INSERT INTO user (name,password) VALUES(?,?)",new Object[]{name,password});
? ? }
? ? public void delete(String name,String password){//重寫(xiě)刪除
? ? ? ? db.execSQL("DELETE FROM user WHERE name = AND password ="+name+password);
? ? }
? ? public void updata(String password){//重寫(xiě)更新
? ? ? ? db.execSQL("UPDATE user SET password = ?",new Object[]{password});
? ? }
? ? public ArrayList<User> getAllData(){//將表內(nèi)信息返回成一個(gè)list
? ? ? ? ArrayList<User> list = new ArrayList<User>();
? ? ? ? Cursor cursor = db.query("user",null,null,null,null,null,"name DESC");//1表名,2列,3行,4行,5指定列進(jìn)行過(guò)濾,6進(jìn)一步過(guò)濾。7得到的信息進(jìn)行排序(desc逆序)
? ? ? ? while(cursor.moveToNext()){//一行一行遍歷
? ? ? ? ? ? String name = cursor.getString(cursor.getColumnIndex("name"));//移動(dòng)到name列,讀取出來(lái)
? ? ? ? ? ? String password = cursor.getString(cursor.getColumnIndex("password"));
? ? ? ? ? ? list.add(new User(name,password));//添加到user 的list中
? ? ? ? }
? ? ? ? return list;//把list返回
? ? }
}activity_login.xml
<?xml version="1.0" encoding="utf-8"?> <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" ? ? xmlns:app="http://schemas.android.com/apk/res-auto" ? ? xmlns:tools="http://schemas.android.com/tools" ? ? android:layout_width="match_parent" ? ? android:layout_height="match_parent" ? ? android:background="#eeeeee" ? ? tools:context=".LoginActivity"> ? ? <RelativeLayout ? ? ? ? android:id="@+id/rl_loginactivity_top" ? ? ? ? android:layout_width="match_parent" ? ? ? ? android:layout_height="70dp" ? > ? ? ? ? <ImageView ? ? ? ? ? ? android:id="@+id/iv_loginactivity_back" ? ? ? ? ? ? android:layout_width="30dp" ? ? ? ? ? ? android:layout_height="30dp" ? ? ? ? ? ? android:layout_alignParentTop="true" ? ? ? ? ? ? android:layout_marginLeft="10dp" ? ? ? ? ? ? android:layout_marginTop="20dp" ? ? ? ? ? ? android:clickable="true" /> ? ? ? ? <TextView ? ? ? ? ? ? android:id="@+id/tv_loginactivity_login" ? ? ? ? ? ? android:layout_width="wrap_content" ? ? ? ? ? ? android:layout_height="wrap_content" ? ? ? ? ? ? android:text="登錄" ? ? ? ? ? ? android:textColor="#3A5FCD" ? ? ? ? ? ? android:textSize="20dp" ? ? ? ? ? ? android:layout_toRightOf="@+id/iv_loginactivity_back" ? ? ? ? ? ? android:layout_centerVertical="true" ? ? ? ? ? ? android:layout_alignParentLeft="true" ? ? ? ? ? ? android:layout_marginLeft="30dp" ? ? ? ? ? ? /> ? ? ? ? <TextView ? ? ? ? ? ? android:id="@+id/tv_loginactivity_register" ? ? ? ? ? ? android:layout_width="wrap_content" ? ? ? ? ? ? android:layout_height="wrap_content" ? ? ? ? ? ? android:text="注冊(cè)" ? ? ? ? ? ? android:textColor="#3A5FCD" ? ? ? ? ? ? android:textSize="20dp" ? ? ? ? ? ? android:layout_centerVertical="true" ? ? ? ? ? ? android:layout_alignParentRight="true" ? ? ? ? ? ? android:layout_marginRight="30dp" ? ? ? ? ? ? android:clickable="true" ? ? ? ? ? ? android:onClick="onClick" ? ? ? ? ? ? /> ? ? </RelativeLayout> ? ? <LinearLayout ? ? ? ? android:id="@+id/ll_loginactivity_two" ? ? ? ? android:layout_width="match_parent" ? ? ? ? android:layout_height="wrap_content" ? ? ? ? android:orientation="vertical" ? ? ? ? android:layout_below="@+id/rl_loginactivity_top" ? ? ? ? android:layout_marginTop="10dp" ? ? ? ? android:layout_marginLeft="5dp" ? ? ? ? android:layout_marginRight="5dp" ? ? ? ? > ? ? ? ? <LinearLayout ? ? ? ? ? ? android:layout_width="match_parent" ? ? ? ? ? ? android:layout_height="wrap_content" ? ? ? ? ? ? android:orientation="horizontal"> ? ? ? ? ? ? <TextView ? ? ? ? ? ? ? ? android:id="@+id/tv_loginactivity_username" ? ? ? ? ? ? ? ? android:layout_width="wrap_content" ? ? ? ? ? ? ? ? android:layout_height="wrap_content" ? ? ? ? ? ? ? ? android:text="用戶名:"/> ? ? ? ? ? ? <EditText ? ? ? ? ? ? ? ? android:id="@+id/et_loginactivity_username" ? ? ? ? ? ? ? ? android:layout_width="match_parent" ? ? ? ? ? ? ? ? android:layout_height="wrap_content" ? ? ? ? ? ? ? ? android:hint="手機(jī)號(hào)/郵箱/用戶名"/> ? ? ? ? </LinearLayout> ? ? ? ? <LinearLayout ? ? ? ? ? ? android:layout_width="match_parent" ? ? ? ? ? ? android:layout_height="wrap_content" ? ? ? ? ? ? android:orientation="horizontal"> ? ? ? ? ? ? <TextView ? ? ? ? ? ? ? ? android:id="@+id/tv_loginactivity_password" ? ? ? ? ? ? ? ? android:layout_width="wrap_content" ? ? ? ? ? ? ? ? android:layout_height="wrap_content" ? ? ? ? ? ? ? ? android:text="密 ? ?碼:"/> ? ? ? ? ? ? <EditText ? ? ? ? ? ? ? ? android:id="@+id/et_loginactivity_password" ? ? ? ? ? ? ? ? android:layout_width="match_parent" ? ? ? ? ? ? ? ? android:layout_height="wrap_content" ? ? ? ? ? ? ? ? android:hint="登錄密碼" ? ? ? ? ? ? ? ? android:inputType="textPassword"/> ? ? ? ? </LinearLayout> ? ? </LinearLayout> ? ? <Button ? ? ? ? android:id="@+id/bt_loginactivity_login" ? ? ? ? android:layout_width="match_parent" ? ? ? ? android:layout_height="wrap_content" ? ? ? ? android:layout_below="@+id/ll_loginactivity_two" ? ? ? ? android:layout_marginTop="10dp" ? ? ? ? android:layout_marginLeft="5dp" ? ? ? ? android:layout_marginRight="5dp" ? ? ? ? android:text="登錄" ? ? ? ? android:textColor="#3A5FCD" ? ? ? ? android:gravity="center" ? ? ? ? android:onClick="onClick" ? ? ? ? /> </RelativeLayout>
LoginActivity
import androidx.appcompat.app.AppCompatActivity;
import android.os.Bundle;
import android.content.Intent;
import android.text.TextUtils;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import android.widget.TextView;
import android.widget.Toast;
import java.util.ArrayList;
public class LoginActivity extends AppCompatActivity implements View.OnClickListener {
? ? private DBOpenHelper mDBOpenHelper;
? ? private EditText mEtLoginactivityUsername;
? ? private EditText mEtLoginactivityPassword;
? ? @Override
? ? protected void onCreate(Bundle savedInstanceState) {
? ? ? ? super.onCreate(savedInstanceState);
? ? ? ? setContentView(R.layout.activity_login);
? ? ? ? initView();
? ? ? ? mDBOpenHelper = new DBOpenHelper(this);
? ? }
? ? private void initView() {
? ? ? ? // 初始化控件
? ? ? ? mEtLoginactivityUsername = findViewById(R.id.et_loginactivity_username);
? ? ? ? mEtLoginactivityPassword = findViewById(R.id.et_loginactivity_password);
? ? ? ? // 設(shè)置點(diǎn)擊事件監(jiān)聽(tīng)器
? ? }
? ? public void onClick(View view) {
? ? ? ? switch (view.getId()) {
? ? ? ? ? ? // 跳轉(zhuǎn)到注冊(cè)界面
? ? ? ? ? ? case R.id.tv_loginactivity_register:
? ? ? ? ? ? ? ? startActivity(new Intent(this, RegisterActivity.class));
? ? ? ? ? ? ? ? finish();
? ? ? ? ? ? ? ? break;
? ? ? ? ? ? case R.id.bt_loginactivity_login:
? ? ? ? ? ? ? ? String name = mEtLoginactivityUsername.getText().toString().trim();//.trim()刪除兩邊的空格
? ? ? ? ? ? ? ? String password = mEtLoginactivityPassword.getText().toString().trim();
? ? ? ? ? ? ? ? if (!TextUtils.isEmpty(name) && !TextUtils.isEmpty(password)) {//TextUtils.isEmpty()輸入框是空值或者你就敲了幾下空格鍵該方法都會(huì)返回true
? ? ? ? ? ? ? ? ? ? ArrayList<User> data = mDBOpenHelper.getAllData();//data為獲取的user表內(nèi)的user信息
? ? ? ? ? ? ? ? ? ? boolean match = false;
? ? ? ? ? ? ? ? ? ? for (int i = 0; i < data.size(); i++) {//遍歷比較
? ? ? ? ? ? ? ? ? ? ? ? User user = data.get(i);//獲取data里的第i個(gè)user信息
? ? ? ? ? ? ? ? ? ? ? ? if (name.equals(user.getName()) && password.equals(user.getPassword())) {//將信息與輸入的信息進(jìn)行對(duì)比
? ? ? ? ? ? ? ? ? ? ? ? ? ? match = true;
? ? ? ? ? ? ? ? ? ? ? ? ? ? break;
? ? ? ? ? ? ? ? ? ? ? ? } else {
? ? ? ? ? ? ? ? ? ? ? ? ? ? match = false;
? ? ? ? ? ? ? ? ? ? ? ? }
? ? ? ? ? ? ? ? ? ? }
? ? ? ? ? ? ? ? ? ? if (match) {
? ? ? ? ? ? ? ? ? ? ? ? Toast.makeText(this, "登錄成功", Toast.LENGTH_SHORT).show();
? ? ? ? ? ? ? ? ? ? ? ? Intent intent = new Intent(this, MainActivity.class);
? ? ? ? ? ? ? ? ? ? ? ? startActivity(intent);
? ? ? ? ? ? ? ? ? ? ? ? finish();//銷毀此Activity
? ? ? ? ? ? ? ? ? ? } else {
? ? ? ? ? ? ? ? ? ? ? ? Toast.makeText(this, "用戶名或密碼不正確,請(qǐng)重新輸入", Toast.LENGTH_SHORT).show();
? ? ? ? ? ? ? ? ? ? }
? ? ? ? ? ? ? ? } else {
? ? ? ? ? ? ? ? ? ? Toast.makeText(this, "請(qǐng)輸入你的用戶名或密碼", Toast.LENGTH_SHORT).show();
? ? ? ? ? ? ? ? }
? ? ? ? ? ? ? ? break;
? ? ? ? }
? ? }
}activity_register.xml
<?xml version="1.0" encoding="utf-8"?> <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" ? ? xmlns:app="http://schemas.android.com/apk/res-auto" ? ? xmlns:tools="http://schemas.android.com/tools" ? ? android:layout_width="match_parent" ? ? android:layout_height="match_parent" ? ? android:background="#eeeeee" ? ? tools:context=".RegisterActivity"> ? ? <RelativeLayout ? ? ? ? android:id="@+id/rl_registeractivity_top" ? ? ? ? android:layout_width="match_parent" ? ? ? ? android:layout_height="70dp" ? ? ? ? > ? ? ? ? <ImageView ? ? ? ? ? ? android:id="@+id/iv_registeractivity_back" ? ? ? ? ? ? android:layout_width="30dp" ? ? ? ? ? ? android:layout_height="30dp" ? ? ? ? ? ? android:layout_centerVertical="true" ? ? ? ? ? ? android:layout_marginLeft="10dp" ? ? ? ? ? ? android:clickable="true" ? ? ? ? ? ? /> ? ? ? ? <TextView ? ? ? ? ? ? android:id="@+id/tv_registeractivity_register" ? ? ? ? ? ? android:layout_width="wrap_content" ? ? ? ? ? ? android:layout_height="wrap_content" ? ? ? ? ? ? android:text="注冊(cè)" ? ? ? ? ? ? android:textColor="#3A5FCD" ? ? ? ? ? ? android:textSize="20dp" ? ? ? ? ? ? android:layout_centerVertical="true" ? ? ? ? ? ? android:layout_marginLeft="20dp" ? ? ? ? ? ? /> ? ? </RelativeLayout> ? ? <LinearLayout ? ? ? ? android:id="@+id/ll_registeractivity_body" ? ? ? ? android:layout_width="match_parent" ? ? ? ? android:layout_height="wrap_content" ? ? ? ? android:orientation="vertical" ? ? ? ? android:layout_below="@+id/rl_registeractivity_top" ? ? ? ? android:layout_marginTop="10dp" ? ? ? ? android:layout_marginLeft="5dp" ? ? ? ? android:layout_marginRight="5dp" ? ? ? ? > ? ? ? ? <!-- 第一個(gè)文本編輯框 ?輸入用戶名 --> ? ? ? ? <LinearLayout ? ? ? ? ? ? android:layout_width="match_parent" ? ? ? ? ? ? android:layout_height="wrap_content" ? ? ? ? ? ? android:orientation="horizontal"> ? ? ? ? ? ? <TextView ? ? ? ? ? ? ? ? android:id="@+id/tv_registeractivity_username" ? ? ? ? ? ? ? ? android:layout_width="wrap_content" ? ? ? ? ? ? ? ? android:layout_height="wrap_content" ? ? ? ? ? ? ? ? android:text="用戶名:"/> ? ? ? ? ? ? <EditText ? ? ? ? ? ? ? ? android:id="@+id/et_registeractivity_username" ? ? ? ? ? ? ? ? android:layout_width="match_parent" ? ? ? ? ? ? ? ? android:layout_height="50dp" ? ? ? ? ? ? ? ? android:hint="請(qǐng)輸入用戶名" ? ? ? ? ? ? ? ? android:gravity="center_vertical" ? ? ? ? ? ? ? ? android:layout_marginLeft="10dp" ? ? ? ? ? ? ? ? /> ? ? ? ? </LinearLayout> ? ? ? ? <!-- 第二個(gè)文本編輯框 ?輸入密碼 --> ? ? ? ? <LinearLayout ? ? ? ? ? ? android:layout_width="match_parent" ? ? ? ? ? ? android:layout_height="wrap_content" ? ? ? ? ? ? android:orientation="horizontal"> ? ? ? ? ? ? <TextView ? ? ? ? ? ? ? ? android:id="@+id/tv_registeractivity_password1" ? ? ? ? ? ? ? ? android:layout_width="wrap_content" ? ? ? ? ? ? ? ? android:layout_height="wrap_content" ? ? ? ? ? ? ? ? android:text="密 ? ?碼:"/> ? ? ? ? ? ? <EditText ? ? ? ? ? ? ? ? android:id="@+id/et_registeractivity_password" ? ? ? ? ? ? ? ? android:layout_width="match_parent" ? ? ? ? ? ? ? ? android:layout_height="50dp" ? ? ? ? ? ? ? ? android:gravity="center_vertical" ? ? ? ? ? ? ? ? android:layout_marginLeft="10dp" ? ? ? ? ? ? ? ? android:inputType="textPassword" ? ? ? ? ? ? ? ? android:hint="請(qǐng)輸入密碼" /> ? ? ? ? </LinearLayout> ? ? ? ? <LinearLayout ? ? ? ? ? ? android:layout_width="match_parent" ? ? ? ? ? ? android:layout_height="wrap_content" ? ? ? ? ? ? android:layout_marginRight="15dp" ? ? ? ? ? ? android:layout_marginTop="10dp" ? ? ? ? ? ? android:orientation="horizontal" /> ? ? ? ? <!-- 注冊(cè)按鈕 --> ? ? ? ? <Button ? ? ? ? ? ? android:id="@+id/bt_registeractivity_register" ? ? ? ? ? ? android:layout_width="match_parent" ? ? ? ? ? ? android:layout_height="50dp" ? ? ? ? ? ? android:layout_marginLeft="5dp" ? ? ? ? ? ? android:textColor="#3A5FCD" ? ? ? ? ? ? android:text="注冊(cè)" ? ? ? ? ? ? android:layout_marginTop="40dp" ? ? ? ? ? ? android:onClick="onClick" ? ? ? ? ? ? /> ? ? </LinearLayout> </RelativeLayout>
RegisterActivity
import androidx.appcompat.app.AppCompatActivity;
import android.content.Intent;
import android.os.Bundle;
import android.text.TextUtils;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import android.widget.ImageView;
import android.widget.LinearLayout;
import android.widget.RelativeLayout;
import android.widget.Toast;
import androidx.appcompat.app.AppCompatActivity;
public class RegisterActivity extends AppCompatActivity implements View.OnClickListener {
? ? private DBOpenHelper mDBOpenHelper;
? ? private Button mBtRegisteractivityRegister;
? ? private ImageView mIvRegisteractivityBack;
? ? private EditText mEtRegisteractivityUsername;
? ? private EditText mEtRegisteractivityPassword;
? ? @Override
? ? protected void onCreate(Bundle savedInstanceState) {
? ? ? ? super.onCreate(savedInstanceState);
? ? ? ? setContentView(R.layout.activity_register);
? ? ? ? initView();
? ? ? ? mDBOpenHelper = new DBOpenHelper(this);
? ? }
? ? private void initView(){
? ? ? ? mEtRegisteractivityUsername = findViewById(R.id.et_registeractivity_username);
? ? ? ? mEtRegisteractivityPassword = findViewById(R.id.et_registeractivity_password);
}
? ? public void onClick(View view) {
? ? ? ? switch (view.getId()) {
? ? ? ? ? ? case R.id.iv_registeractivity_back: //返回登錄頁(yè)面
? ? ? ? ? ? ? ? Intent intent1 = new Intent(this, LoginActivity.class);
? ? ? ? ? ? ? ? startActivity(intent1);
? ? ? ? ? ? ? ? finish();
? ? ? ? ? ? ? ? break;
? ? ? ? ? ? case R.id.bt_registeractivity_register: ? ?//注冊(cè)按鈕
? ? ? ? ? ? ? ? //獲取用戶輸入的用戶名、密碼、驗(yàn)證碼
? ? ? ? ? ? ? ? String username = mEtRegisteractivityUsername.getText().toString().trim();
? ? ? ? ? ? ? ? String password = mEtRegisteractivityPassword.getText().toString().trim();
? ? ? ? ? ? ? ? //注冊(cè)驗(yàn)證
? ? ? ? ? ? ? ? if (!TextUtils.isEmpty(username) && !TextUtils.isEmpty(password)) {
? ? ? ? ? ? ? ? ? ? mDBOpenHelper.add(username, password);//將用戶名和密碼加入到數(shù)據(jù)庫(kù)的表內(nèi)中
? ? ? ? ? ? ? ? ? ? Intent intent2 = new Intent(this, LoginActivity.class);
? ? ? ? ? ? ? ? ? ? startActivity(intent2);
? ? ? ? ? ? ? ? ? ? finish();
? ? ? ? ? ? ? ? ? ? Toast.makeText(this, "驗(yàn)證通過(guò),注冊(cè)成功", Toast.LENGTH_SHORT).show();
? ? ? ? ? ? ? ? } else {
? ? ? ? ? ? ? ? ? ? Toast.makeText(this, "未完善信息,注冊(cè)失敗", Toast.LENGTH_SHORT).show();
? ? ? ? ? ? ? ? }
? ? ? ? ? ? ? ? break;
? ? ? ? }
? ? }
}實(shí)現(xiàn)效果

以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
相關(guān)文章
Android開(kāi)發(fā)獲取系統(tǒng)中已安裝程序信息的方法
這篇文章主要介紹了Android開(kāi)發(fā)獲取系統(tǒng)中已安裝程序信息的方法,可實(shí)現(xiàn)Android針對(duì)系統(tǒng)中已安裝程序名稱、路徑、大小、圖標(biāo)、是否為系統(tǒng)app等信息的獲取功能,需要的朋友可以參考下2017-12-12
Android編程開(kāi)發(fā)之Spinner組件用法
這篇文章主要介紹了Android編程開(kāi)發(fā)之Spinner組件用法,結(jié)合實(shí)例形式分析介紹了Android中Spinner組件的功能、定義及具體使用技巧,需要的朋友可以參考下2015-12-12
Android實(shí)現(xiàn)多級(jí)樹(shù)形菜單并支持多選功能
這篇文章主要為大家詳細(xì)介紹了Android實(shí)現(xiàn)多級(jí)樹(shù)形菜單并支持多選功能,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2019-07-07
ImageView 實(shí)現(xiàn)Android colorPikcer 選擇器的示例代碼
本篇文章主要介紹了ImageView 實(shí)現(xiàn)Android colorPikcer 選擇器的示例代碼,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下。2017-10-10
Android音視頻開(kāi)發(fā)之MediaExtactor使用教程
MediaExtactor在Android音視頻開(kāi)發(fā)中負(fù)責(zé)提取音視頻信息和數(shù)據(jù)流的功能,可以通過(guò)該類實(shí)現(xiàn)從多媒體文件中剝離得到音頻和視頻的能力。本文將詳細(xì)為大家介紹一下它的使用,感興趣的可以了解一下2022-04-04
Android 微信搖一搖功能實(shí)現(xiàn)詳細(xì)介紹
這篇文章主要介紹了Android 微信搖一搖功能實(shí)現(xiàn)詳細(xì)介紹的相關(guān)資料,并附實(shí)例代碼及實(shí)現(xiàn)微信搖一搖的思路,需要的朋友可以參考下2016-11-11
Android Recyclerview實(shí)現(xiàn)多選,單選,全選,反選,批量刪除的功能
本篇文章主要介紹了Android Recyclerview 實(shí)現(xiàn)多選,單選,全選,反選,批量刪除的功能,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2017-06-06
android全屏去掉title欄的多種實(shí)現(xiàn)方法
android全屏去掉title欄包括以下幾個(gè)部分:實(shí)現(xiàn)應(yīng)用中的所有activity都全屏/實(shí)現(xiàn)單個(gè)activity全屏/實(shí)現(xiàn)單個(gè)activity去掉title欄/自定義標(biāo)題內(nèi)容/自定義標(biāo)題布局等等感興趣的可參考下啊2013-02-02

