亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

Android基于Sqlite實現(xiàn)注冊和登錄功能

 更新時間:2022年04月23日 14:41:20   作者:沙小光  
這篇文章主要為大家詳細(xì)介紹了Android基于Sqlite實現(xiàn)注冊和登錄功能,文中示例代碼介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴們可以參考一下

Android中基于Sqlite實現(xiàn)注冊和登錄功能,供大家參考,具體內(nèi)容如下

前言

寫這篇博客主要是為了鞏固一下學(xué)的Sqlite知識以及梳理一下這個項目的邏輯

實現(xiàn)邏輯

項目的圖片結(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){//打開數(shù)據(jù)庫
? ? ? ? super(context,"db_test",null,1);//1:上下文,2:數(shù)據(jù)庫名,3:允許我們查詢數(shù)據(jù)時返回一個Cursor,4:當(dāng)前數(shù)據(jù)庫的版本號
? ? ? ? db = getReadableDatabase();
? ? }
? ? @Override
? ? public void onCreate(SQLiteDatabase db){//建表(user)語句
? ? ? ? db.execSQL("CREATE TABLE IF NOT EXISTS user(" +//PRIMARY key 將id設(shè)為主鍵 ,AUTOINCREMENT 設(shè)置id列自為增長
? ? ? ? ? ? ? ? "_id INTEGER PRIMARY KEY AUTOINCREMENT," +
? ? ? ? ? ? ? ? "name TEXT," + ? ? ? ? ? ? ? ? ? ? ? //text 文本類型
? ? ? ? ? ? ? ? "password TEXT)");
? ? }
? ? @Override
? ? public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion){//重寫升級
? ? ? ? db.execSQL("DROP TABLE IF EXISTS user");
? ? ? ? onCreate(db);
? ? }
? ? public void add(String name,String password){//重寫添加
? ? ? ? db.execSQL("INSERT INTO user (name,password) VALUES(?,?)",new Object[]{name,password});
? ? }
? ? public void delete(String name,String password){//重寫刪除
? ? ? ? db.execSQL("DELETE FROM user WHERE name = AND password ="+name+password);
? ? }
? ? public void updata(String password){//重寫更新
? ? ? ? db.execSQL("UPDATE user SET password = ?",new Object[]{password});
? ? }
? ? public ArrayList<User> getAllData(){//將表內(nèi)信息返回成一個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)行過濾,6進(jìn)一步過濾。7得到的信息進(jìn)行排序(desc逆序)
? ? ? ? while(cursor.moveToNext()){//一行一行遍歷
? ? ? ? ? ? String name = cursor.getString(cursor.getColumnIndex("name"));//移動到name列,讀取出來
? ? ? ? ? ? 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="注冊"
? ? ? ? ? ? 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="手機號/郵箱/用戶名"/>
? ? ? ? </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è)置點擊事件監(jiān)聽器
? ? }

? ? public void onClick(View view) {
? ? ? ? switch (view.getId()) {
? ? ? ? ? ? // 跳轉(zhuǎn)到注冊界面
? ? ? ? ? ? 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()輸入框是空值或者你就敲了幾下空格鍵該方法都會返回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個user信息
? ? ? ? ? ? ? ? ? ? ? ? if (name.equals(user.getName()) && password.equals(user.getPassword())) {//將信息與輸入的信息進(jìn)行對比
? ? ? ? ? ? ? ? ? ? ? ? ? ? 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, "用戶名或密碼不正確,請重新輸入", Toast.LENGTH_SHORT).show();
? ? ? ? ? ? ? ? ? ? }
? ? ? ? ? ? ? ? } else {
? ? ? ? ? ? ? ? ? ? Toast.makeText(this, "請輸入你的用戶名或密碼", 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="注冊"
? ? ? ? ? ? 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"
? ? ? ? >
? ? ? ? <!-- 第一個文本編輯框 ?輸入用戶名 -->
? ? ? ? <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="請輸入用戶名"
? ? ? ? ? ? ? ? android:gravity="center_vertical"
? ? ? ? ? ? ? ? android:layout_marginLeft="10dp"
? ? ? ? ? ? ? ? />
? ? ? ? </LinearLayout>
? ? ? ? <!-- 第二個文本編輯框 ?輸入密碼 -->
? ? ? ? <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="請輸入密碼" />
? ? ? ? </LinearLayout>
? ? ? ? <LinearLayout
? ? ? ? ? ? android:layout_width="match_parent"
? ? ? ? ? ? android:layout_height="wrap_content"
? ? ? ? ? ? android:layout_marginRight="15dp"
? ? ? ? ? ? android:layout_marginTop="10dp"
? ? ? ? ? ? android:orientation="horizontal" />
? ? ? ? <!-- 注冊按鈕 -->
? ? ? ? <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="注冊"
? ? ? ? ? ? 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: //返回登錄頁面
? ? ? ? ? ? ? ? Intent intent1 = new Intent(this, LoginActivity.class);
? ? ? ? ? ? ? ? startActivity(intent1);
? ? ? ? ? ? ? ? finish();
? ? ? ? ? ? ? ? break;

? ? ? ? ? ? case R.id.bt_registeractivity_register: ? ?//注冊按鈕
? ? ? ? ? ? ? ? //獲取用戶輸入的用戶名、密碼、驗證碼
? ? ? ? ? ? ? ? String username = mEtRegisteractivityUsername.getText().toString().trim();
? ? ? ? ? ? ? ? String password = mEtRegisteractivityPassword.getText().toString().trim();
? ? ? ? ? ? ? ? //注冊驗證
? ? ? ? ? ? ? ? if (!TextUtils.isEmpty(username) && !TextUtils.isEmpty(password)) {
? ? ? ? ? ? ? ? ? ? mDBOpenHelper.add(username, password);//將用戶名和密碼加入到數(shù)據(jù)庫的表內(nèi)中
? ? ? ? ? ? ? ? ? ? Intent intent2 = new Intent(this, LoginActivity.class);
? ? ? ? ? ? ? ? ? ? startActivity(intent2);
? ? ? ? ? ? ? ? ? ? finish();
? ? ? ? ? ? ? ? ? ? Toast.makeText(this, "驗證通過,注冊成功", Toast.LENGTH_SHORT).show();
? ? ? ? ? ? ? ? } else {
? ? ? ? ? ? ? ? ? ? Toast.makeText(this, "未完善信息,注冊失敗", Toast.LENGTH_SHORT).show();
? ? ? ? ? ? ? ? }
? ? ? ? ? ? ? ? break;
? ? ? ? }
? ? }
}

實現(xiàn)效果

以上就是本文的全部內(nèi)容,希望對大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。

相關(guān)文章

  • Android實現(xiàn)仿慕課網(wǎng)下拉加載動畫

    Android實現(xiàn)仿慕課網(wǎng)下拉加載動畫

    這篇文章是我在做動畫的項目中整理出來的,在eoe看了篇帖子,然后仿慕課網(wǎng)做了一個下拉加載動畫。此功能實現(xiàn)方法是AnimationDrawable類進(jìn)行 Animation-list中item的循環(huán)遍歷圖片,類似于flash里的幀幀動畫,需要的朋友可以參考下
    2015-07-07
  • android判斷相機圖片朝向的簡單方法

    android判斷相機圖片朝向的簡單方法

    下面小編就為大家?guī)硪黄猘ndroid判斷相機圖片朝向的簡單方法。小編覺得挺不錯的,現(xiàn)在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2017-03-03
  • Android 動畫之RotateAnimation應(yīng)用詳解

    Android 動畫之RotateAnimation應(yīng)用詳解

    本節(jié)講解旋轉(zhuǎn)動畫效果RotateAnimation方法的應(yīng)用,有需要的朋友可以參考下
    2012-12-12
  • Android小組件添加到主屏幕(手機桌面)的方法實例

    Android小組件添加到主屏幕(手機桌面)的方法實例

    很多在多年前使用過Android手機的朋友,可能對于Android 4.0時代盛行的桌面小組件功能有著很深的印象,下面這篇文章主要給大家介紹了關(guān)于Android小組件添加到主屏幕(手機桌面)的相關(guān)資料,需要的朋友可以參考下
    2023-06-06
  • Android長按imageview把圖片保存到本地的實例代碼

    Android長按imageview把圖片保存到本地的實例代碼

    本文通過代碼給大家介紹了Android長按imageview把圖片保存到本地的實現(xiàn)方法,代碼簡單易懂,非常不錯,具有參考借鑒價值,需要的朋友參考下吧
    2017-12-12
  • Android自定義View實現(xiàn)點贊控件

    Android自定義View實現(xiàn)點贊控件

    這篇文章主要介紹了Android自定義View實現(xiàn)點贊控件,文中示例代碼介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2019-11-11
  • 詳解Android 硬布局item的高級寫法

    詳解Android 硬布局item的高級寫法

    這篇文章主要介紹了詳解Android 硬布局item的高級寫法,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2020-12-12
  • Android?app啟動節(jié)點與上報啟動實例詳解

    Android?app啟動節(jié)點與上報啟動實例詳解

    系統(tǒng)的啟動過程非常復(fù)雜,下面這篇文章主要給大家介紹了關(guān)于Android?app啟動節(jié)點與上報啟動的相關(guān)資料,文中通過實例代碼介紹的非常詳細(xì),需要的朋友可以參考下
    2022-04-04
  • Android7.0上某些PopuWindow出現(xiàn)顯示位置不正確問題的解決方法

    Android7.0上某些PopuWindow出現(xiàn)顯示位置不正確問題的解決方法

    這篇文章主要介紹了Android7.0上某些PopuWindow出現(xiàn)顯示位置不正確問題的解決方法,涉及針對Android7.0中PopuWindow屬性與方法的相關(guān)設(shè)置技巧,需要的朋友可以參考下
    2017-10-10
  • Android端代碼量非常小的分頁加載庫

    Android端代碼量非常小的分頁加載庫

    這篇文章主要給大家介紹了關(guān)于Android端代碼量非常小的分頁加載庫的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2021-03-03

最新評論