安卓技术实战01 第一个安卓APP案例

目录

1. 创建项目与文件组织

 2 线性布局与控件

2.1 文本框

2.2 嵌套线性布局

2.3 为控件自定义背景图片

3 页面跳转

3.1 直接跳转方法

3.2 编写单独的点击函数

3.3 Toast提示


编译器选择:Android Studio

1. 创建项目与文件组织

创建一个新的 Empty Activity,设置项目名称,选择项目路径及编程语言;点击 Finish 即可。

 项目创建完成后,先将项目视图切换为Project模式

这里重点关注src组织下的内容:

  1. MainActivity下,写应用程序相关的java代码
  2. layout下存储的是布局文件,我们可以在布局文件中添加需要的控件
  3. values下存放的是颜色、字符串、风格样式等信息
  4. Manifest下指定我们要启动的activity
  5. drawable下存放的是程序需要的背景文件

 2 线性布局与控件

下面我们将重心转回到activity_main.xml,学习线性布局,重点关注以以下几个要点:

  • 线性布局中必须要包含的一个属性是 android:orientation="vertical"
  • 布局的宽度和高度有 match_parent 和 wrap_content 两种模式,前者表示匹配布局;后者则是根据内容自适应
  • 设置背景图片
    • 首先设计好自己需要的背景素材,将其拷贝到drawable目录下,并修改成你需要的名字
    • 在activity_main的线性布局中,android:background="@drawable/app_background"
  • 线性布局支持嵌套

 我们可以在线性布局中定义相关的控件:

2.1 文本框

<TextView
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:id="@+id/tv_username"
        android:hint="用户名"
        android:textColorHint="#FFFFFF"
        android:textColor="#FFFFFF"
        android:textSize="30sp"/>

 必须定义的属性字段:

  • id:后续使用该控件的唯一标识
  • hint:指定文本控件的提示文本
  • layout_width:控件的宽度
  • layout_height:控件的高度
  • textSize:文本的尺寸
  • textColor:文本的颜色

可选字段:

  • 密码密文显示:android:inputType="textPassword"
  • 文本与边框的距离:android:padding="10dp"
  • 提示文本的颜色设定:android:textColorHint="#FFFFFF"

2.2 嵌套线性布局

案例:在一个线性布局上,放置两个登录和注册按钮

    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:orientation="horizontal"
        >
        <Button
            android:layout_width="0dp"
            android:layout_height="wrap_content"
            android:layout_weight="1"
            android:text="登录"
            android:id="@+id/btn_login"
            />
        <Button
            android:layout_width="0dp"
            android:layout_height="wrap_content"
            android:layout_weight="1"
            android:text="注册"
            android:id="@+id/btn_register"></Button>
    </LinearLayout>

2.3 为控件自定义背景图片

自定义背景文件

 登录按钮的背景文件定义代码:

<?xml version="1.0" encoding="utf-8"?>
<shape
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:shape="rectangle">

    <corners
        android:topLeftRadius="5dp"
        android:bottomLeftRadius="5dp"/>
    <stroke
        android:width="1dp"
        android:color="#ffffff"
        android:dashGap="1dp"/>
</shape>

下面是完整的线性布局文件:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout 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:orientation="vertical"
    android:background="@drawable/app_background"
    tools:context=".MainActivity">

    <TextView
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:id="@+id/tv_username"
        android:hint="用户名"
        android:textColorHint="#FFFFFF"
        android:textColor="#FFFFFF"
        android:textSize="30sp"
        android:padding="10dp"/>
    <TextView
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:id="@+id/tv_password"
        android:hint="密码"
        android:textColorHint="#FFFFFF"
        android:textColor="#FFFFFF"
        android:textSize="30sp"
        android:padding="10dp"
        android:inputType="textPassword"
        />
    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:orientation="horizontal"
        >
        <Button
            android:layout_width="0dp"
            android:layout_height="wrap_content"
            android:layout_weight="1"
            android:text="登录"
            android:textColor="#FFFFFF"
            android:id="@+id/btn_login"
            android:background="@drawable/bg_btnlogin"
            />
        <Button
            android:layout_width="0dp"
            android:layout_height="wrap_content"
            android:layout_weight="1"
            android:text="注册"
            android:textColor="#FFFFFF"
            android:id="@+id/btn_register"
            android:background="@drawable/bg_btnregister"></Button>
    </LinearLayout>
</LinearLayout>

效果如下:

3 页面跳转

3.1 直接跳转方法

方法1:在src -- main -- java下的MainActivity.java的同一层次下,创建一个新的Empty Activity,

设置完名字后,直接点击Finish。

 可以看到,创建Activity的同时也创建了相应的布局文件。

同样地,我们在布局文件中,简单添加一个TextView,提示我们跳转成功了。

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout 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:orientation="vertical"
    android:padding="10dp"
    tools:context=".Main2Activity">
    <TextView
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:id="@+id/tv_tiaozhuan"
        android:text="跳转之后的网页"
        android:gravity="center"></TextView>
</LinearLayout>

 然后,在主Activity中的java文件中,添加跳转的代码:

  • 首先创建按钮类型的成员变量
  • 通过findViewById方法找到按钮,这个id就是前面我们在布局文件中写的id了
  • 添加按钮的点击事件,主要是重写onClick()方法,新建intent并启动intent
  • intent的参数中,第一个是主Activity.this, 第二个是跳转Activity.class.
package com.example.myapplicationexample;

import androidx.appcompat.app.AppCompatActivity;

import android.content.Intent;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;

public class MainActivity extends AppCompatActivity {
    private Button mBtnLogin;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        // 根据id找到控件
        mBtnLogin = findViewById(R.id.btn_login);
        // 实现跳转
        mBtnLogin.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                Intent intent = null;
                intent = new Intent(MainActivity.this, Main2Activity.class);
                startActivity(intent);
            }
        });
    }
}

3.2 编写单独的点击函数

  • 点击函数编写
    public void onClick(View view) {
        String username = mEtUsername.getText().toString();
        String password = mEtPassword.getText().toString();
        Intent intent = null;

        if(username.equals("myz") && password.equals("gis2021"))
        {
            ToastUtil.showMessage(MainActivity.this, "账号密码正确");
            intent = new Intent(MainActivity.this, Main2Activity.class);
            startActivity(intent);
        }else {

        }
    }
  • 调用函数编写,这里需要使用 alt+enter 进行类集成
public class MainActivity extends AppCompatActivity implements View.OnClickListener {
    private Button mBtnLogin;
    private EditText mEtUsername;
    private EditText mEtPassword;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        // 根据id找到控件
        mBtnLogin = findViewById(R.id.btn_login);
        mEtPassword = findViewById(R.id.et_password);
        mEtUsername = findViewById(R.id.et_username);
        // alt + enter查看错误
        mBtnLogin.setOnClickListener(this);
    }
    public void onClick(View view) {
        String username = mEtUsername.getText().toString();
        String password = mEtPassword.getText().toString();
        Intent intent = null;

        if(username.equals("myz") && password.equals("gis2021"))
        {
            intent = new Intent(MainActivity.this, Main2Activity.class);
            startActivity(intent);
        }else {
        }
    }

    @Override
    public void onPointerCaptureChanged(boolean hasCapture) {

    }
}

3.3 Toast提示

方法1:直接在底部显示:

Toast.makeText(getApplicationContext(), "账号密码正确", Toast.LENGTH_SHORT).show();

方法2:居中弹出:

Toast centerToast = Toast.makeText(getApplicationContext(), "账号或密码错误", Toast.LENGTH_SHORT);
centerToast.setGravity(Gravity.CENTER, 0,0);
centerToast.show();

方法3:定义类弹出

  • 创建包

  •  在包中新建java类

 

  • 撰写java代码,定义类文件:
package com.example.myapplicationexample.util;

import android.content.Context;
import android.widget.Toast;

public class ToastUtil {
    public static Toast mToast;
    public static void showMessage(Context context, String wsg)
    {
        if(mToast == null)
        {
            mToast = Toast.makeText(context, wsg, Toast.LENGTH_SHORT);
        }else{
            mToast.setText(wsg);
        }
        mToast.show();
    }
}
  •  类调用:
ToastUtil.showMessage(MainActivity.this, "账号密码正确");

相关代码链接:

MyApplicationExample.zip-其它文档类资源-CSDN下载

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

薛桂琴

喜欢的读者,可以打赏鼓励一下

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值