精华内容
下载资源
问答
  • 如何打开别人的Android项目 千次阅读 多人点赞
    2020-04-12 12:31:59

    对于一个别人的Android项目,想在本机跑,如果不想重新下载一堆额外的插件,可以在使用Android studio打开项目前先修改设置,只需要一般修改三个文件的内容,就可以很快的将项目跑起来。假设项目名称叫master,需要修改的文件如下:

    • master\build.gradle 文件
    • master\app\build.gradle 文件
    • master\gradle\wrapper\gradle-wrapper.properties 文件

    master\build.gradle 文件

    // Top-level build file where you can add configuration options common to all sub-projects/modules.
    
    buildscript {
        
        repositories {
            google()
            jcenter()
        }
        dependencies {
            classpath 'com.android.tools.build:gradle:3.3.2'
            classpath 'org.greenrobot:greendao-gradle-plugin:3.1.0'
        }
    }
    
    allprojects {
        repositories {
            google()
            jcenter()
            maven { url 'https://jitpack.io' }
        }
    }
    
    task clean(type: Delete) {
        delete rootProject.buildDir
    }
    
    
    • classpath 'com.android.tools.build:gradle:3.3.2'将3.3.2改成自己的Android Studio版本,如3.5.3
    • 如果是kotlin编写的项目,还可以将kotlin版本改成自己编译器的版本,如:ext.kotlin_version = '1.3.71'

    master\app\build.gradle 文件

    apply plugin: 'com.android.application'
    apply plugin: 'org.greenrobot.greendao'
    android {
        compileSdkVersion 28
        defaultConfig {
            applicationId "com.gugo.gugomain"
            minSdkVersion 21
            targetSdkVersion 22
            versionCode 1
            versionName "1.0"
            testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
        }
        buildTypes {
            release {
                minifyEnabled false
                proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
            }
        }
        greendao {
            schemaVersion 5//每次升级版本号增加
            daoPackage 'com.gugo.gugomain.db.green'
            targetGenDir 'src/main/java'
        }
        sourceSets {
            main {
                jniLibs.srcDirs = ['libs']
            }
        }
        buildToolsVersion '28.0.3'
    }
    
    dependencies {
        implementation fileTree(include: ['*.jar'], dir: 'libs')
    
        testImplementation 'junit:junit:4.12'
        implementation 'org.greenrobot:greendao:3.2.2'
        implementation 'com.android.support:design:27.1.1'
        implementation 'com.github.bumptech.glide:glide:3.7.0'
        implementation 'com.youth.banner:banner:1.4.10'
        implementation 'com.lzy.net:okgo:+'
        implementation 'com.github.bumptech.glide:glide:3.7.0'
        implementation 'com.google.code.gson:gson:2.7'
        implementation 'com.android.support:cardview-v7:28.0.0'
        implementation 'com.github.PhilJay:MPAndroidChart:v3.0.3'
        implementation project(path: ':apptext')
        implementation project(path: ':speechDemo')
        implementation project(path: ':zxing')
        implementation 'com.rmtheis:tess-two:9.0.0'
    }
    
    
    • 对于这个文件,我们应该关注的是:compileSdkVersion 28minSdkVersion 21targetSdkVersion 22,统统改成Android Studio预设的值

    master\gradle\wrapper\gradle-wrapper.properties 文件

    #Fri Mar 29 14:03:52 GMT+08:00 2019
    distributionBase=GRADLE_USER_HOME
    distributionPath=wrapper/dists
    zipStoreBase=GRADLE_USER_HOME
    zipStorePath=wrapper/dists
    distributionUrl=https\://services.gradle.org/distributions/gradle-4.10.1-all.zip
    
    • 这里要修改的是gradle的版本,一样,改成自己的,如改成:distributionUrl=https\://services.gradle.org/distributions/gradle-5.4.1-all.zip

    如果不知道自己Android Studio的预设值怎么办?,那新建一个项目,去对应的文件中查看即可

    更多相关内容
  • Android项目开发详解,完整扫描版

    千次下载 热门讨论 2014-04-16 07:54:46
    《移动平台开发书库:Android项目开发详解》从实战的角度出发,介绍了基于Android环境的Mobile/Server应用系统开发,涉及移动客户端和服务器端的开发环节,以满足智能手机在线应用的需求。全书以一个Android应用程序...
  • Android项目中嵌入Cocos游戏项目

    千次阅读 2022-03-23 10:24:14
    Cocos的生态相比Unity要逊色很多,网上搜索的各种文章,基本都是比较早期的,无法在较新版本环境中使用,这里以Cocos 3.3版本为例,讲一下在自己的Android项目中嵌入Cocos项目。 一、创建Cocos项目(略)。 二、...

    Cocos的生态相比Unity要逊色很多,网上搜索的各种文章,基本都是比较早期的,无法在较新版本环境中使用,这里以Cocos 3.3版本为例,讲一下在自己的Android项目中嵌入Cocos项目。

    一、创建Cocos项目(略)。

    二、编译Cocos Android工程。

    需要下载NDK。在偏好设置中,设置路径。

    Cocos菜单中选择“项目——构建发布”,弹出如下界面。

    我已经创建了一个名字为android的构建任务,大家可以新建一个。 

    “build”是 工程构建的目录,“android-001”是构建后,该项目存在的目录。

    构建的工程都会放到Cocos项目目录下,比如你的目录为“D:\Source\cocos”,那构建后的目录就在“D:\Source\cocos\build”下。

    在你构建的项目的目录下,比如“D:\Source\cocos\build\android-001”下,有两个目录。

     “assets”是资源目录,proj是工程目录,我们要用Android Studio来编译proj下面的项目。在proj下的gradle.properties文件中,定义了一些公共变量,包括目录和版本等信息。

    PROP_TARGET_SDK_VERSION=26
    
    # Android Build Tools version that will be used as the compile project
    PROP_BUILD_TOOLS_VERSION=30.0.2
    
    # Android Application Name
    PROP_APP_NAME=game_test
    
    # Instant App
    PROP_ENABLE_INSTANT_APP=false
    
    PROP_NDK_PATH=D:\\Source\\android-ndk-r23b
    
    # Cocos Engine Path
    COCOS_ENGINE_PATH=D:/Program Files/CocosDashboard/resources/.editors/Creator/3.3.0/resources/resources/3d/engine-native
    
    # Res path
    RES_PATH=D:/Source/cocos/build/android-001
    
    # Native source dir
    NATIVE_DIR=D:/Source/cocos/native/engine/android
    
    # Application ID
    APPLICATION_ID=com.cocos.android
    
    # List of CPU Archtexture to build that application with
    # Available architextures (armeabi-v7a | arm64-v8a | x86 | x86_64)
    # To build for multiple architexture, use the `:` between them
    # Example - PROP_APP_ABI=arm64-v8a
    PROP_APP_ABI=arm64-v8a

    PROP_APP就设置为arm64-v8a即可,一般手机都没问题,如果加上x86,编译过不去,原因未解。 

    COCOS_ENGINE_PATH是指向Cocos安装目录的, 其中的“D:\Program Files\CocosDashboard\resources\.editors\Creator\3.3.0\resources\resources\3d\engine-native\cocos\platform\android\libcocos2dx”目录将被proj中的工程引用。

    我们再看一下proj的setting.gradle文件。我给项目起的名称为cocos,大家随意即可。“:libservice”在proj自己的目录中。

    include ':libcocos',':libservice',':cocos'
    //这个就是指向了Cocos安装目录中的libcocos2dx
    //如:D:\Program Files\CocosDashboard\resources\.editors\Creator\3.3.0\resources\resources\3d\engine-native\cocos\platform\android\libcocos2dx
    project(':libcocos').projectDir     = new File(COCOS_ENGINE_PATH,'cocos/platform/android/libcocos2dx')
    //这里就是引用的D:/Source/cocos/native/engine/android这个module
    project(':cocos').projectDir    = new File(NATIVE_DIR, 'app')
    if(PROP_ENABLE_INSTANT_APP == "true" || PROP_ENABLE_INSTANT_APP == "yes") {
        include ':instantapp'
        project(':instantapp').projectDir   = new File(NATIVE_DIR, 'instantapp')
    }
    
    rootProject.name = "cocos"

    用Android Studio打开proj项目。Cocos 3.3使用的是Gradle 4.1.0,可使用默认的设置进行编译。如果使用高版本Gradle的话,可能会报错,一些js文件没有打包进去,这个网上有修改方法,可自行查阅。

    编译成功后,在Cocos项目目录下会多出一个native目录,“D:\Source\cocos\native”,Cocos从3.0开始,做了代码和配置的分离,将一部分代码和配置放入源码管理,位于项目目录下的 native\engine\当前构建的平台名称 文件夹中(例如native\engine\android)。

    在“D:\Source\cocos\native\engine”下有两个目录,“android”目录是android代码,“common”目录是CMake相关的文件,用于编译C++用。

    Cocos官方建议在这里进行二次开发,添加自己的业务和组件,这里的代码其实是作为Module被“build\android-001\proj”引入的,如果你已经有一个android工程,那么在这里开发绝对不是好的方法。

    三、嵌入

    先保证上面操作正常,“build\android-001\proj”编译通过。接下来新建一个Android工程。

    首选在gradle.properties中定义对应的路径等变量。可复制Cocos工程下的proj中的gradle.properties内容。

    接下来设置setting.gradle文件内容。

    dependencyResolutionManagement {
        repositoriesMode.set(RepositoriesMode.FAIL_ON_PROJECT_REPOS)
        repositories {
            google()
            mavenCentral()
            jcenter() // Warning: this repository is going to shut down soon
        }
    }
    rootProject.name = "My Application"
    include ':app'
    include ':libcocos'
    project(':libcocos').projectDir     = new File(COCOS_ENGINE_PATH,'cocos/platform/android/libcocos2dx')
    include ':libservice'
    

    “:libcocos”的设置同上,“:libservice”可以import到当前项目的目录下。从“D:\Source\cocos\build\android-001\proj\libservice”下引入,也可以像“:libcocos”一样设置projectDir。

    将Cocos项目编译后产生的“D:\Source\cocos\native\engine”目录下的“common”目录拷贝到Android项目下。

    将“D:\Source\cocos\native\engine\android\jni”拷贝到Android项目下。

    将“D:\Source\cocos\native\engine\android\CMakeLists.txt”拷贝到Android项目下。

     因为相对于“D:\Source\cocos\native\engine”中,common目录的相对路径放生了变化,所以需要修改一下“CMakeLists.txt”内容。

    将所有
    ${CMAKE_CURRENT_LIST_DIR}/../common
    改为
    ${CMAKE_CURRENT_LIST_DIR}/common

    将Cocos安装目录下的“D:\Program Files\CocosDashboard\resources\.editors\Creator\3.3.0\resources\resources\3d\engine-native\cocos\platform\android\java\libs”目录中的文件拷贝到Android项目中的libs目录下,然后在build.gradle文件中加入如下文字。

        implementation files('libs\\com.android.vending.expansion.zipfile.jar')
        implementation files('libs\\okhttp-3.12.7.jar')
        implementation files('libs\\okio-1.15.0.jar')

     修改build.gradle文件。主要是externalNativeBuild和sourceSets。

    plugins {
        id 'com.android.application'
    }
    RES_PATH = RES_PATH.replace("\\", "/")
    COCOS_ENGINE_PATH = COCOS_ENGINE_PATH.replace("\\", "/")
    android {
        compileSdk 32
    
        defaultConfig {
            applicationId "com.mh.myapplication"
            minSdk 21
            targetSdk 32
            versionCode 1
            versionName "1.0"
    
            externalNativeBuild {
                cmake {
                    version "3.10.2"
                    targets "cocos"
                    arguments "-DRES_DIR=${RES_PATH}", "-DCOCOS_X_PATH=${COCOS_ENGINE_PATH}", "-DANDROID_STL=c++_static", "-DANDROID_TOOLCHAIN=clang", "-DANDROID_ARM_NEON=TRUE", "-DANDROID_LD=gold"
                    cppFlags "-frtti -fexceptions -fsigned-char"
                }
                ndk { abiFilters PROP_APP_ABI.split(':') }
            }
        }
    
        buildTypes {
            release {
                minifyEnabled false
                proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro'
            }
        }
        compileOptions {
            sourceCompatibility JavaVersion.VERSION_1_8
            targetCompatibility JavaVersion.VERSION_1_8
        }
        sourceSets.main {
            java.srcDirs "../src", "src"
            res.srcDirs "../res", 'res'
            jniLibs.srcDirs "../libs", 'libs'
            assets.srcDir "${RES_PATH}/assets"
            jniLibs {
            }
        }
        externalNativeBuild {
            cmake {
                path "../CMakeLists.txt"
                buildStagingDirectory "${RES_PATH}/proj/build"
            }
        }
    }
    
    dependencies {
        implementation fileTree(dir: '../libs', include: ['*.jar','*.aar'])
        implementation fileTree(dir: 'libs', include: ['*.jar','*.aar'])
        implementation project(':libservice')
        implementation project(':libcocos')
        implementation 'androidx.appcompat:appcompat:1.4.1'
        implementation 'com.google.android.material:material:1.5.0'
        implementation 'androidx.constraintlayout:constraintlayout:2.1.3'
        implementation files('libs\\com.android.vending.expansion.zipfile.jar')
        implementation files('libs\\okhttp-3.12.7.jar')
        implementation files('libs\\okio-1.15.0.jar')
        testImplementation 'junit:junit:4.+'
        androidTestImplementation 'androidx.test.ext:junit:1.1.3'
        androidTestImplementation 'androidx.test.espresso:espresso-core:3.4.0'
    }

    这里路径指向了Cocos项目以及Cocos的安装路径,这些内容可以拷贝出来,放到项目中也是可以的。

    四、运行

    添加权限和meta-data。

        <uses-permission android:name="android.permission.INTERNET"/>
        <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/>
        <uses-permission android:name="android.permission.ACCESS_WIFI_STATE"/>
    
    
    <meta-data
          android:name="android.app.lib_name"
          android:value="cocos" />

    在MainActivity中添加一个按钮,新建一个TestActivity继承自CocosActivity。

    public class TestActivity extends CocosActivity {
    
        @Override
        protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            SDKWrapper.shared().init(this);
        }
    }
    public class MainActivity extends AppCompatActivity {
    
        @Override
        protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.activity_main);
            findViewById(R.id.button).setOnClickListener(new View.OnClickListener() {
                @Override
                public void onClick(View view) {
                    Intent intent = new Intent();
                    intent.setClass(MainActivity.this,TestActivity.class);
                    startActivity(intent);
                }
            });
        }
    }

    这样运行,点击按钮,就可以启动Cocos的画面了。

    展开全文
  • 在Android Studio导入Android项目

    千次阅读 2021-11-07 17:07:39
    在Android Studio导入Android项目 哔哩哔哩链接:https://www.bilibili.com/video/BV1nQ4y1K73X?t=172 1.我们首先打开Android studio,新建一个Android项目 2.创建好项目之后,我们打开项目创建的根目录,项目结构...

    哔哩哔哩链接:https://www.bilibili.com/video/BV1nQ4y1K73X?t=172

    1.我们首先打开Android studio,新建一个Android项目

    2.创建好项目之后,我们打开项目创建的根目录,项目结构如下:

    image-20211107165343344

    3.我们与要导入的Android项目进行对比,对比build.gradle文件,修改gradle版本与新建的Android项目一致

    image-20210321123633528

    4.对比app下的build.gradle文件

    image-20210327140755078

    5.对比gradle/wrapper/gradle-wrapper.properties文件

    image-20210321124025402

    6.对比local.properties文件

    image-20210321124120235

    7.导入项目即可

    image-20210321124239385

    喜欢请关注我

    喜欢我的话可以关注我的微信公众号 我爱学习呀嘻嘻 ,不定期分享各类资源哦。
    在这里插入图片描述

    展开全文
  • 几个比较好的Android项目源码

    千次下载 热门讨论 2013-09-02 20:22:28
    几个比较好的Android项目源码,非常适合Android进阶,因为是从网上收集起来的,所以设置成不需要资源分
  • Android项目实战--手机卫士完整源码part1

    千次下载 热门讨论 2014-01-14 14:27:33
    Android项目实战--手机卫士完整源码part1
  • 实用的android项目框架

    热门讨论 2014-07-17 11:26:00
    1.自定义android项目底部任务栏 2.实用Fragment切换 3.项目整体架构
  • android项目中读取ini配置文件

    热门讨论 2012-11-21 09:46:32
    将ini文件存在android项目中assets文件夹中,以便于软件开启时自动读取ini系统配置文件。
  • 项目版本:android4.0 AVD建议:android4.4及以上 文章目录1.标题栏`main_title_bar.xml`2.创建背景选择器3.注册界面的布局文件4.MD5加密算法5.注册界面逻辑代码6.清单文件`AndroidManifest.xml`中注册7.完善功能...
    本项目是用eclipse软件编写,经过我的亲自实践,其真实有效,希望能给您有所帮助😘😘
    项目版本:android5.1.1
    AVD建议:android4.4.2及以上

    BoXueGu源码资源下载链接:
    https://download.csdn.net/download/hyh/19477319


    BoXueGu图片资源下载(免费):
    https://yuyunyaohui.lanzoui.com/iWos0pyc4rc


    注册页面主要用于输入注册信息,在注册页面中用户需要输入用户名、密码、再次输入密码(确保密码输入无误),当点击“注册”按钮时进行注册。

    效果图:

    在这里插入图片描述

    1.标题栏main_title_bar.xml

    在res/layout文件夹中,创建一个main_title_bar.xml文件,采用RelativeLayout布局。
    代码如下:main_title_bar.xml

    <?xml version="1.0" encoding="utf-8"?>
    <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
        android:id="@+id/title_bar"
        android:layout_width="match_parent"
        android:layout_height="50dp" 
        android:background="@android:color/transparent">
        
        <TextView
            android:id="@+id/tv_back"
            android:background="@drawable/go_back_selector"
            android:layout_width="50dp"
            android:layout_height="50dp"
            android:layout_alignParentLeft="true"/>
    
        <TextView
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:id="@+id/tv_main_title"
            android:textColor="@android:color/white"
            android:textSize="20sp"
            android:text="@string/boxuegu"
            android:layout_centerInParent="true"/>
    
    </RelativeLayout>
    
    

    2.创建背景选择器

    (1)返回按钮背景选择器
    将图片iv_back_selected.png、iv_back.png导入drawable文件夹中。
    在这里插入图片描述
    在drawable文件夹中,右击并选择“New”–“other”–“android”–“Android XML Values File”,创建一个背景选择器go_back_selector.xml,根据按钮按下和弹起的状态来切换它的背景图片,由此实现动态效果。
    具体代码如下:go_back_selector.xml

    <?xml version="1.0" encoding="utf-8"?>
    <selector xmlns:android="http://schemas.android.com/apk/res/android" >
        
        <item android:state_pressed="true" android:drawable="@drawable/iv_back_selected">
        </item>
        <item android:drawable="@drawable/iv_back"></item>
    
    </selector>
    
    

    (2)注册按钮Button背景选择器
    将图片register_icon_selected.png、register_icon_normal.png导入drawable文件夹中。
    在这里插入图片描述
    在drawable文件夹中,右击并选择“New”–“other”–“android”–“Android XML Values File”,创建一个背景选择器register_selector.xml。具体代码如下:

    <?xml version="1.0" encoding="utf-8"?>
    <selector xmlns:android="http://schemas.android.com/apk/res/android" >
        
        <item android:state_pressed="true" android:drawable="@drawable/register_inco_selected">
        </item>
        <item android:drawable="@drawable/register_icon_normal"></item>
    
    </selector>
    
    

    3.注册界面的布局文件

    (1)导入图片
    将注册界面所需图片register_psw.png、default_icon.png、user_name_icon.png、psw_icon.png导入res/drawable文件夹中
    在这里插入图片描述
    (2)创建注册界面的布局文件activity_register.xml。在res/layout文件夹中,右击并选择“New”–“other”–“android”–“Android XML File”。
    具体代码如下:activity_register.xml

    <?xml version="1.0" encoding="utf-8"?>
    <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:id="@+id/activity_register"
        android:background="@drawable/register_bg"
        android:orientation="vertical" >
        
        <include layout="@layout/main_title_bar" />
        
        <ImageView
            android:layout_marginTop="25dp"
            android:layout_gravity="center_horizontal"
            android:src="@drawable/default_icon"
            android:contentDescription="@null"
            android:layout_width="70dp"
            android:layout_height="70dp" />
    
        <EditText
            android:singleLine="true"
            android:id="@+id/et_user_name"
            android:layout_width="fill_parent"
            android:layout_height="48dp"
            android:background="@drawable/register_psw"
            android:layout_marginTop="35dp"
            android:layout_marginLeft="35dp"
            android:layout_marginRight="35dp"
            android:drawableLeft="@drawable/user_name_icon"
            android:paddingLeft="8dp"
            android:drawablePadding="10dp"
            android:hint="@string/name"
            android:gravity="center_vertical"
            android:textColorHint="#a3a3a3"
            android:textColor="#000000"
            android:textSize="14sp"/>
    
        <EditText
            android:singleLine="true"
            android:id="@+id/et_pwd"
            android:layout_width="fill_parent"
            android:layout_height="48dp"
            android:background="@drawable/register_psw"
            android:layout_marginLeft="35dp"
            android:layout_marginRight="35dp"
            android:drawableLeft="@drawable/psw_icon"
            android:paddingLeft="8dp"
            android:inputType="textPassword"
            android:drawablePadding="10dp"
            android:hint="@string/pwd"
            android:gravity="center_vertical"
            android:textColorHint="#a3a3a3"
            android:textColor="#000000"
            android:textSize="14sp"/>
    
        <EditText
            android:singleLine="true"
            android:id="@+id/et_pwd_again"
            android:layout_width="fill_parent"
            android:layout_height="48dp"
            android:background="@drawable/register_psw"
            android:layout_marginLeft="35dp"
            android:layout_marginRight="35dp"
            android:drawableLeft="@drawable/psw_icon"
            android:paddingLeft="8dp"
            android:drawablePadding="10dp"
            android:inputType="textPassword"
            android:hint="@string/pwd_again"
            android:gravity="center_vertical"
            android:textColorHint="#a3a3a3"
            android:textColor="#000000"
            android:textSize="14sp"/>
    
        <Button
            android:text="@string/btn_register"
            android:id="@+id/btn_register"
            android:layout_gravity="center_horizontal"
            android:layout_marginTop="15dp"
            android:layout_marginLeft="35dp"
            android:layout_marginRight="35dp"
            android:textColor="@android:color/white"
            android:textSize="20sp"
            android:textStyle="bold"
            android:layout_width="fill_parent"
            android:layout_height="50dp"
            android:background="@drawable/register_selector"/>
    
    </LinearLayout>
    
    

    文本信息在values文件夹下的string.xml文件里面:

    <?xml version="1.0" encoding="utf-8"?>
    <resources>
    
        <string name="app_name">BoXueGu</string>
        <string name="hello_world">Hello world!</string>
        <string name="boxuegu">博学谷</string>
        <string name="name">请输入用户名</string>
        <string name="pwd">请输入密码</string>
        <string name="pwd_again">请再次输入密码</string>
        <string name="btn_register">注册</string>
        
    </resources>
    
    

    4.MD5加密算法

    创建MD5Utils类:在src文件夹中,右击并选择“New”–“class”,创建MD5Utils.java文件,包名填china.ynyx.heyunhui.utils
    在这里插入图片描述
    MD5加密算法的具体代码如下:MD5Utils.java

    package china.ynyx.heyunhui.utils;
    
    import java.security.MessageDigest;
    import java.security.NoSuchAlgorithmException;
    
    public class MD5Utils {
    	 /**
         * md5加密的算法
         * @param text
         * @return
         */
    	public static String MD5(String text){
    		try {
                MessageDigest digest = MessageDigest.getInstance("md5");
                byte[] result = digest.digest(text.getBytes());
                StringBuffer sb=new StringBuffer();
                for (byte b:result){
                    int number =b & 0xff;
                    String hex=Integer.toHexString(number);
                    if (hex.length()==1){//如果0xff为一个字节
                        sb.append("0"+hex);
                    }else {
                        sb.append(hex);
                    }
                }
                return sb.toString();
    
            } catch (NoSuchAlgorithmException e) {
                e.printStackTrace();
                return "";//如果发生异常
            }
    	}
    
    }
    
    

    5.注册界面逻辑代码

    新建类RegisterActivity:在Java包china.ynyx.heyunhui.activity中,右击并选择“New”→“class”,创建RegisterActivity.java文件
    在这里插入图片描述
    具体代码如下:RegisterActivity.java

    package china.ynyx.heyunhui.activity;
    
    import android.support.v7.app.AppCompatActivity;
    import android.content.Intent;
    import android.content.SharedPreferences;
    import android.graphics.Color;
    import android.os.Bundle;
    import android.text.TextUtils;
    import android.view.View;
    import android.widget.Button;
    import android.widget.EditText;
    import android.widget.RelativeLayout;
    import android.widget.TextView;
    import android.widget.Toast;
    import china.ynyx.heyunhui.R;
    import china.ynyx.heyunhui.utils.MD5Utils;
    import china.ynyx.heyunhui.activity.RegisterActivity;
    
    public class RegisterActivity extends AppCompatActivity {
    
    	private TextView tv_main_title;//标题
        private TextView tv_back;		//返回按钮
        private RelativeLayout rl_title_bar;//标题布局
        private Button btn_register;	//注册按钮
        private EditText et_user_name,et_pwd,et_pwd_again;//用户名、密码、再次输入的密码的控件
        private String username,pwd,pwd_again;//用户名、密码、再次输入的密码的控件的获取值
        
        @Override
        protected void onCreate(Bundle savedInstanceState) {
        	// TODO Auto-generated method stub
        	super.onCreate(savedInstanceState);
        	setContentView(R.layout.activity_register);
            init();
        }
    
    	private void init() {
    		// TODO Auto-generated method stub
    		//从main_title_bar.xml页面布局中获取对应的UI控件
            //抽取成员变量ctrl+alt+F
            tv_main_title = (TextView) findViewById(R.id.tv_main_title);
            tv_main_title.setText("注册");
            tv_back = ((TextView) findViewById(R.id.tv_back));
            rl_title_bar = (RelativeLayout) findViewById(R.id.title_bar);
            rl_title_bar.setBackgroundColor(Color.TRANSPARENT);
    
            //从activity_register.xml页面布局中获取对应的UI控件
            btn_register = (Button) findViewById(R.id.btn_register);
            et_user_name = (EditText) findViewById(R.id.et_user_name);
            et_pwd = (EditText) findViewById(R.id.et_pwd);
            et_pwd_again = (EditText) findViewById(R.id.et_pwd_again);
            tv_back.setOnClickListener(new View.OnClickListener() {
                @Override//关闭页面的点击事件
                public void onClick(View view) {//设置按钮可以关闭当前页面
                    RegisterActivity.this.finish();
                }
            });
            //注册按钮点击事件
            btn_register.setOnClickListener(new View.OnClickListener() {
                @Override
                public void onClick(View view) {
                    //点击后获取输入在响应控件中的字符串
                    getEditstring();
                    //判断字符串是否为空
                    if(TextUtils.isEmpty(username)){
                        Toast.makeText(RegisterActivity.this, "请输入用户名", Toast.LENGTH_SHORT).show();
                        return;
                    }else if (TextUtils.isEmpty(pwd)){
                        Toast.makeText(RegisterActivity.this, "请输入密码", Toast.LENGTH_SHORT).show();
                        return;
                    }else if (TextUtils.isEmpty(pwd_again)){
                        Toast.makeText(RegisterActivity.this, "请再次输入密码", Toast.LENGTH_SHORT).show();
                        return;
                    }else if (!pwd.equals(pwd_again)){
                        Toast.makeText(RegisterActivity.this, "两次输入的密码不一样", Toast.LENGTH_SHORT).show();
                        return;
                    } else if (isExistUserName(username)){
                        Toast.makeText(RegisterActivity.this, "此用户已经存在", Toast.LENGTH_SHORT).show();
                        return;
                    }else {
                        Toast.makeText(RegisterActivity.this, "注册成功", Toast.LENGTH_SHORT).show();
                        //把用户名和密码保存到SharedPreferences里面
                        saveRegisterInfo(username,pwd);
                        //注册成功后通过Intent把用户名传递到LoginActivity.java中
                        Intent data=new Intent();
                        data.putExtra("username",username);
                        setResult(RESULT_OK,data);//setResult为OK,关闭当前页面
                        RegisterActivity.this.finish();//在登录的时候,如果用户还没有注册则注册。注册成功后把注册成功后的用户名返回给前一个页面
                        }
                }
            });
        }
    
        private void saveRegisterInfo(String username, String pwd) {
            String md5Pwd= MD5Utils.MD5(pwd);//把密码用MD5加密
            //loginInfo是sp的文件名
            SharedPreferences sp=getSharedPreferences("loginInfo",MODE_PRIVATE);//通过getSharedPreferences传入loginInfo注册登录相关的信息
            SharedPreferences.Editor editor = sp.edit();//通过sp.edit()获取到sp的编辑器对象
            //username作为key,密码作为value
            editor.putString(username,md5Pwd);
            editor.commit();//提交修改
        }
    
        /**
         	* 从SharedPreferences中读取输入的用户名,判断SharedPreferences中是否有用户名
         */
        private boolean isExistUserName(String username) {
            boolean has_userName=false;//表示是否有用户名
            SharedPreferences sp=getSharedPreferences("loginInfo",MODE_PRIVATE);
            String spPwd = sp.getString(username,""); //通过sp.getString传值用户名获取到密码
            if (!TextUtils.isEmpty(spPwd)){ //判断这个密码是否为空
                has_userName=true;//该用户是否保存了这一个密码
            }
            return has_userName;
        }
    
        /**
                   * 获取控件中的字符串
         */
        private void getEditstring() {
            username=et_user_name.getText().toString().trim();
            pwd = et_pwd.getText().toString();
            pwd_again = et_pwd_again.getText().toString().trim();
    	}
    }
    
    

    6.清单文件AndroidManifest.xml中注册

    <activity android:name="china.ynyx.heyunhui.activity.RegisterActivity"></activity>
    

    7.完善功能

    欢迎界面跳转到注册界面:在欢迎界面SplashActivity.java文件中修改跳转代码

    Intent intent=new Intent(SplashActivity.this,MainActivity.class);
    

    改为

    Intent intent=new Intent(SplashActivity.this,RegisterActivity.class);
    

    参考资料:《android项目实战——博学谷》(黑马程序员著)


    基于eclipse的android项目实战—博学谷(一)欢迎界面
    基于eclipse的android项目实战—博学谷(二)注册界面
    基于eclipse的android项目实战—博学谷(三)登录界面
    基于eclipse的android项目实战—博学谷(四)底部导航栏
    基于eclipse的android项目实战—博学谷(五)“我”的模块
    基于eclipse的android项目实战—博学谷(六)设置界面
    基于eclipse的android项目实战—博学谷(七)修改密码
    基于eclipse的android项目实战—博学谷(八)设置密保和找回密码
    基于eclipse的android项目实战—博学谷(九)个人资料界面
    基于eclipse的android项目实战—博学谷(十)个人资料修改
    基于eclipse的android项目实战—博学谷(十 一)习题界面
    基于eclipse的android项目实战—博学谷(十 二)习题详情界面
    基于eclipse的android项目实战—博学谷(十 三)水平滑动广告栏界面
    基于eclipse的android项目实战—博学谷(十 四)课程界面
    基于eclipse的android项目实战—博学谷(十 五)课程详情界面
    基于eclipse的android项目实战—博学谷(十 六)视频播放界面
    基于eclipse的android项目实战—博学谷(十 七)播放记录界面
    基于eclipse的android项目实战—博学谷(十 八)播放不同视频(网络视频)
    基于eclipse的android项目实战—博学谷(十 九)播放不同视频(本地视频)

    展开全文
  • android项目详细设计说明书

    热门讨论 2011-07-13 23:53:54
    这里是在android项目开发中,所用到的详细设计说明书模板。
  • android项目案例4- 基于Android studio的android个人中心

    千次阅读 多人点赞 2019-02-01 22:35:03
    在前几篇文章 android项目案例2- 基于Android studio的android百度地图 , android项目案例1- 基于Android studio的仿微信底部导航栏实现 android项目案例3- 基于Android studio的android的fragment网页嵌套 ,...
  • android项目实例 商业项目源代码

    千次下载 热门讨论 2011-11-14 15:50:30
    使用本Android SNS 178折社区 应用开源框架 可以迅速开发android手机应用 应用范围 商城android应用 交友android手机应用 开发者:178折网购社区 网址:http://www.178zhe.com
  • Android项目如何在手机上运行

    千次阅读 2021-06-16 18:37:03
    Android studio项目在手机上运行 ...打开Android项目,如图 在工具栏中找到Build->Build APK(s),点击 3. 随后在界面右下角会弹出,提醒框,点击locate 4. 进入相应文件夹,将该文件发送到手机安装即可 ...
  • 在Android Studio本地运行GitHub上的开源Android项目

    万次阅读 多人点赞 2018-11-20 17:38:42
    文章目录背景下载项目的zip包解压到本地删除项目中原开发者的机器环境,替换为自己的机器环境在Android Studio中运行这个开源项目运行图示 背景 原来项目需要用gitlab进行版本管理。我需要先把gitlab上的项目在本地...
  • Eclipse搭建Android开发环境并运行Android项目 (详细)

    万次阅读 多人点赞 2019-11-16 17:37:00
    安装环境: window 10 64位 安装工具: JDK、Eclipse、SDK、ADT ...5. 创建第一个Android项目 1.JAVA JDK下载安装 下载地址:http://www.oracle.com/technetwork/java/javase/downloads/i...
  • Android项目实战——应用市场

    千人学习 2017-07-17 16:48:14
    综合前面的知识点,剔除繁杂的理论,注重实践,深入浅出综合使用Android中的知识实现一个应用市场类的App
  • Android项目:天气预报App

    千次阅读 热门讨论 2021-01-14 10:40:31
    项目是在Android Studio的环境下实现的,主要是仿照了小米10手机上的天气预报App。 二 效果图 三 页面介绍 1.主界面 2.该城市近五日天气界面 3.城市管理界面 4.热门城市和搜索界面 5...
  • 第一步,打开eclipse,配置好安卓开发环境(不然找不到新建android项目的地方哦)2.新建Android程序有多种方法:3.哦豁,弹出一大片错误,没关系,将下图窗体关闭 今天突然发现好多小伙伴用eclipse新建android项目...
  • 本文记录刚接触Android开发搭建环境后新建工程各种可能的报错,并亲身经历漫长的解决过程(╥╯^╰╥),寻找各种偏方,避免大家采坑,希望能帮助到大家。 报错信息出错一:The import android.support cannot be ...
  • 项目版本:android4.0 AVD建议:android4.4及以上 文章目录 博学谷项目的欢迎界面由RealativeLayout布局和TextView控件组成,其中RealativeLayout的背景图片用于展示产品Logo,TextView控件用于展示程序版本号。 ...
  • 基于eclipse的android项目实战—博学谷

    千次阅读 2020-04-13 17:33:31
    本项目是用eclipse软件编写,经过我的亲自实践,其真实有效,希望能给您有所帮助?...欢迎界面的效果图如图所示:2.[基于eclipse的android项目实战—博学谷(一)欢迎界面](https://blog.csdn.net/hyh178087...
  • Android项目升级AndroidX

    万次阅读 2019-08-29 10:22:35
    强烈建议:把项目升级到AndroidX一定一定要新建分支来操作,不然升级不了(使用的某些第三方还没有支持android等其他情况),可是又回不原先的项目,就…… 1.gradle下修改Version 若是模块化,强烈建议用config...
  • 一、项目分析 1、项目名称 WordPress建站APP 2、项目概述 WordPress建站是一个学习博客建站技术的APP,主要讲述WordPress建站过程。APP基于黑马程序员的博学谷自学助手项目进行开发和创新。是移动高级开发课程的学生...
  • IDEA开发及运行第一个Android项目

    万次阅读 2020-04-15 21:48:52
    新建项目 提示安装SDK 等待下载完成 继续建项目 选择手机或平板及目标设备API版本 选择空项目 启动activity 等待SDK平台版本下载完成 项目新建完成。开始配置 点Setup SDK 选择SDK 或者 File-Project Structure ...
  • 目录 环境 创建项目 运行第一个项目-HelloWorld 环境 ... Android Studio 所有SDK已经...1. 第一次运行的时候其实就会创建一个项目,这里在仔细记录一下,首先打开创建新新项目的页面: 上面可以选择的类型有...
  • 给大家分享几个Android开发项目源码,大部分功能相信可以在实战项目中直接使用,供大家下载学习,大部分项目是基于 AndroidStudio开发,IDE为Eclipse的童鞋可通过网上教程自行转换,这里就不多说了。 源码项目一:...
  • 操作步骤 ①迁移前提 compileSdkVersion改为28(因为AnroidX 1.0.0版本是与Support Library 28.0.0一致的二进制文件,support最新的是28,所以可以直接迁移...Android Studio版本升级到3.2及以上,建议直接改为最新
  • Android项目——新闻APP(源码)

    千次下载 热门讨论 2019-02-26 19:40:11
    Android项目——新闻APP(源码),一个很简单的可以练手的Android Demo Ps:下载之前可以先看一下这篇文章——https://blog.csdn.net/qq_34149526/article/details/80992341
  • 如何在Android项目中使用VLC

    万次阅读 热门讨论 2018-12-27 12:32:02
    继上一篇如何在Ubuntu中编译VLC-Android开源项目, 已经成功的编译了vlc-android,并且也编译出了对应版本的libvlc-xx.aar 所需环境 项目使用的rtsp视频流,采用的是海康的摄像头 android studio最新版本 java jdk ...
  • 在Android Studio创建第一个Android项目

    千次阅读 2018-11-14 21:56:55
    Android Studio 欢迎界面点击Start a new Android Studio projeect,点击完会出现创建项目界面。 然后在Application name 处填写工程名称(应用安装到手机上也会显示此名称),Company Domain 表示公司域名,...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 729,097
精华内容 291,638
关键字:

android项目

友情链接: MIMO.zip