课程目录
Android应用开发基础课程--15天做一个合格的Android程序员--课程目录
前面我们已经初步学习了简单的界面开发,那么我们来做一个demo当做今天的作业。
初始化+登录
初始化+登录页面基本绝大部分的应用都有这两个页面,我们今天来简单实现这两个页面的交互。
首先是写界面。
界面
初始化界面activity_start.xml,一个欢迎语句 再加一个加载框,就是简单的初始化页面:
<?xml version="1.0" encoding="utf-8"?>
<android.support.constraint.ConstraintLayout
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:layout_width="match_parent"
android:layout_height="match_parent">
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="欢迎进入我的第一个应用"
android:textColor="@color/colorAccent"
android:textSize="22sp"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintLeft_toLeftOf="parent"
app:layout_constraintRight_toRightOf="parent"
app:layout_constraintTop_toTopOf="parent" />
<ProgressBar
android:layout_width="wrap_content"
android:layout_height="wrap_content"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintLeft_toLeftOf="parent"
app:layout_constraintRight_toRightOf="parent"/>
</android.support.constraint.ConstraintLayout>
登录页面activity_login.xml app图标+两个输入框+一个登录按钮就是简单的登录页面。
<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:id="@+id/activity_login"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="@color/colorPrimary">
<ImageView
android:id="@+id/iv_icon"
android:layout_width="90dp"
android:layout_height="90dp"
android:layout_centerHorizontal="true"
android:layout_marginTop="60dp"
android:scaleType="centerCrop"
android:src="@mipmap/ic_launcher" />
<TextView
android:id="@+id/tv_title"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_centerHorizontal="true"
android:layout_marginTop="160dp"
android:text="用户登录"
android:textColor="@android:color/white"
android:textSize="23sp"
android:typeface="monospace" />
<RelativeLayout
android:id="@+id/rl_userName"
android:layout_width="wrap_content"
android:layout_height="60dp"
android:layout_below="@id/tv_title"
android:layout_marginTop="40dp"
android:background="@android:color/white">
<ImageView
android:id="@+id/iv_userIconName"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_centerVertical="true"
android:paddingBottom="15dp"
android:paddingLeft="30dp"
android:paddingTop="15dp"
android:background="@color/colorAccent" />
<View
android:id="@+id/viewName"
android:layout_width="1dip"
android:layout_height="20dp"
android:layout_centerVertical="true"
android:layout_marginLeft="10dp"
android:layout_toRightOf="@id/iv_userIconName"
android:background="@color/colorAccent" />
<EditText
android:id="@+id/et_userName"
android:layout_width="match_parent"
android:layout_height="30dp"
android:layout_centerVertical="true"
android:layout_marginLeft="10dp"
android:layout_toRightOf="@id/viewName"
android:background="@null"
android:ems="19"
android:hint=" 用户名"
android:textCursorDrawable="@android:color/white"
android:textSize="15sp" />
</RelativeLayout>
<RelativeLayout
android:id="@+id/rl_userPassword"
android:layout_width="wrap_content"
android:layout_height="60dp"
android:layout_below="@id/rl_userName"
android:layout_marginTop="1dp"
android:background="@android:color/white">
<ImageView
android:id="@+id/iv_userIconPwd"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_centerVertical="true"
android:paddingBottom="15dp"
android:paddingLeft="30dp"
android:paddingTop="15dp"
android:background="@color/colorAccent" />
<View
android:id="@+id/viewPwd"
android:layout_width="1dip"
android:layout_height="20dp"
android:layout_centerVertical="true"
android:layout_marginLeft="10dp"
android:layout_toRightOf="@id/iv_userIconPwd"
android:background="@color/colorAccent" />
<EditText
android:id="@+id/et_password"
android:layout_width="match_parent"
android:layout_height="30dp"
android:layout_centerVertical="true"
android:layout_marginLeft="10dp"
android:layout_toRightOf="@id/viewPwd"
android:background="@null"
android:drawablePadding="5dp"
android:ems="19"
android:hint=" 密码"
android:inputType="textPassword"
android:textCursorDrawable="@android:color/white"
android:textSize="15sp" />
</RelativeLayout>
<Button
android:id="@+id/btn_login"
android:layout_width="340dp"
android:layout_height="wrap_content"
android:layout_below="@id/rl_userPassword"
android:layout_centerHorizontal="true"
android:layout_marginTop="20dp"
android:background="@color/colorAccent"
android:gravity="center"
android:padding="10dp"
android:text="登录"
android:textColor="#fff"
android:textSize="18sp" />
</RelativeLayout>
业务逻辑
新建两个activity,StartActivity和LoginActivity。
初始化页面要实现的逻辑就是延时两秒打开登录页面关闭自己。
延时这里使用的是Handler,这个点后面再讲,大概先知道怎么用就行。
package com.example.administrator.hello.activity;
import android.content.Intent;
import android.os.Handler;
import com.example.administrator.hello.R;
public class StartActivity extends BaseActivity {
@Override
protected void initView() {
setContentView(R.layout.activity_start);
}
@Override
protected void findView() {
}
@Override
protected void addAction() {
doNextThread();
}
private void doNextThread() {
new Handler().postDelayed(new Runnable() {
@Override
public void run() {
goToLogin();
}
}, 2000);
}
private void goToLogin() {
Intent in = new Intent(StartActivity.this, LoginActivity.class);
startActivity(in);
finish();
}
}
登录页面的逻辑就是给登录按钮添加点击事件,点击后跳转到主页。
package com.example.administrator.hello.activity;
import android.content.Intent;
import android.view.View;
import com.example.administrator.hello.MainActivity;
import com.example.administrator.hello.R;
public class LoginActivity extends BaseActivity {
@Override
protected void initView() {
setContentView(R.layout.activity_login);
}
@Override
protected void findView() {
}
@Override
protected void addAction() {
findViewById(R.id.btn_login).setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
goToMain();
}
});
}
private void goToMain() {
Intent in = new Intent(LoginActivity.this, MainActivity.class);
startActivity(in);
finish();
}
}
manifest文件配置
首先要修改app的入口,并将新增的activity注册好:
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.example.administrator.hello">
<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=".activity.StartActivity">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
<activity android:name=".activity.LayoutAndWidgetDemoActivity" />
<activity android:name=".MainActivity" />
<activity android:name=".activity.LoginActivity" />
</application>
</manifest>
demo到此完成,运行一下。
自己再根据所学玩点花样,今天的任务就到此结束。