java android 界面设计_第三篇-以LinearLayout进行Android界面设计

一、新建一个项目

选择empty activity,此时项目里面没有main.java的文件。

二、手动创建java文件

Project那儿选择android模式,在app/java/com....一般是第一个文件夹下,右击鼠标new->activity->empty activity。Activity Name、Layout Name随便取名,但是要取消外观支援档的勾即取消Generate Layout File前面的勾。接着在Launcher Activity前打勾,意思是以这个activity作为一个主要的activity,以此为进入点。点击Finish。

三、手动创建外观档文件

app/res,右击res,new->XML->Layout XML File。Layout File Name 随便取,不过不能有大写英文字母,一般有多个英文单词,中间以_分开。Root Tag选择类别为LinearLayout。点击Finish。

四、设计layout.xml

按住鼠标左键,拖动三个Button按钮到手机预览界面,点击Component Tree下的LinearLayout,在右侧Attributes下有一些设置。在LinearLayout标签下有个orientation选项,默认是horizaontal即水平排列,如果将其改为vertical,会发现Button按钮变成垂直排列了,且占满了竖直的空间,Button大小有点奇怪。在中间界面layout.xml下让其从Design切换到Text即文本模式,将第一个Button标签下的android:layout_weight="1"去掉,会发现最上面的按钮大小缩小了。将剩下两个Button下的这句话也去掉,会发现样子正常了。在将界面切换到Design模式,将orientation改回horizontal模式,三个按钮变成横排了,不过不再占据一整行,可以在拖动一个按钮进去。并在文本模式下将其weight删掉。回到Design界面,点选屏幕上最左侧的Button,在右侧text处为它取名为Button #1,并依次将后面三个按钮改名为Button #2,Button #3,Button #4,由于Button #4没有足够的位置,它的文字变成两行了。点选Button #1将其layout_width改为match_parent,那么Button #1就会占据一行,2,3,4个按钮都会不见。如果点击LinearLayout将orientation换成vertical,2,3,4个出现在下面垂直排列。依次点选Button2,3,4,将layout_width 都选择match_parent,则四个按钮会垂直排列,宽度就是一整行。

效果图如下:

76b9b2115bf39d00a8adff0913b84836.png

layout.xml中text代码如下:

android:layout_width="match_parent"

android:layout_height="match_parent"

android:orientation="vertical">

android:id="@+id/button4"

android:layout_width="match_parent"

android:layout_height="wrap_content"

android:text="Button #1" />

android:text="Button" />

android:id="@+id/button3"

android:layout_width="match_parent"

android:layout_height="wrap_content"

android:text="Button #2" />

android:text="Button" />

android:id="@+id/button2"

android:layout_width="match_parent"

android:layout_height="wrap_content"

android:text="Button #3" />

android:text="Button" />

android:id="@+id/button"

android:layout_width="match_parent"

android:layout_height="wrap_content"

android:text="Button #4" />

android:text="Button" />

最后打开之前创建的main.java,在super.onCreate(saveInstanceState);后面加上setContentView(R.layout.layout);整个简单的程序就完成了,就以编译运行。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
好的,下面是一个简单的登录界面的示例代码。这个示例包括了手机号和验证码登录的功能。 1. 布局文件 我们可以在res/layout文件夹下创建一个名为activity_login.xml的布局文件,代码如下: ``` <?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:orientation="vertical" android:layout_width="match_parent" android:layout_height="match_parent" android:paddingLeft="16dp" android:paddingRight="16dp" android:paddingTop="16dp" android:paddingBottom="16dp"> <EditText android:id="@+id/phone_number" android:layout_width="match_parent" android:layout_height="wrap_content" android:hint="请输入手机号码" android:inputType="phone" /> <LinearLayout android:layout_width="match_parent" android:layout_height="wrap_content" android:orientation="horizontal" android:layout_marginTop="16dp"> <EditText android:id="@+id/verification_code" android:layout_width="0dp" android:layout_weight="1" android:layout_height="wrap_content" android:hint="请输入验证码" /> <Button android:id="@+id/get_verification_code" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="获取验证码" /> </LinearLayout> <Button android:id="@+id/login_button" android:layout_width="match_parent" android:layout_height="wrap_content" android:text="登录" /> </LinearLayout> ``` 2. Activity类 我们可以在src/main/java文件夹下创建一个名为LoginActivity的Activity类,代码如下: ``` import android.os.Bundle; import android.support.v7.app.AppCompatActivity; import android.view.View; import android.widget.Button; import android.widget.EditText; import android.widget.Toast; public class LoginActivity extends AppCompatActivity { private EditText mPhoneNumberEditText; private EditText mVerificationCodeEditText; private Button mGetVerificationCodeButton; private Button mLoginButton; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_login); mPhoneNumberEditText = findViewById(R.id.phone_number); mVerificationCodeEditText = findViewById(R.id.verification_code); mGetVerificationCodeButton = findViewById(R.id.get_verification_code); mLoginButton = findViewById(R.id.login_button); mGetVerificationCodeButton.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { //TODO: 获取验证码 } }); mLoginButton.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { //TODO: 登录操作 String phoneNumber = mPhoneNumberEditText.getText().toString(); String verificationCode = mVerificationCodeEditText.getText().toString(); if (phoneNumber.isEmpty() || verificationCode.isEmpty()) { Toast.makeText(LoginActivity.this, "请输入手机号和验证码", Toast.LENGTH_SHORT).show(); } else { //TODO: 验证码登录 } } }); } } ``` 3. 获取验证码 我们可以使用第三方库SMS SDK来发送短信验证码。在build.gradle文件中添加以下依赖: ``` implementation 'cn.smssdk:sdk:3.0.0' ``` 在获取验证码的按钮的点击事件中添加以下代码: ``` import cn.smssdk.EventHandler; import cn.smssdk.SMSSDK; import java.util.HashMap; import java.util.Map; mGetVerificationCodeButton.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { String phoneNumber = mPhoneNumberEditText.getText().toString(); if (phoneNumber.isEmpty()) { Toast.makeText(LoginActivity.this, "请输入手机号", Toast.LENGTH_SHORT).show(); } else { // 发送短信验证码 SMSSDK.initSDK(LoginActivity.this, "appKey", "appSecret"); SMSSDK.registerEventHandler(new EventHandler() { @Override public void afterEvent(int event, int result, Object data) { if (result == SMSSDK.RESULT_COMPLETE) { if (event == SMSSDK.EVENT_GET_VERIFICATION_CODE) { // 获取验证码成功 } else if (event == SMSSDK.EVENT_SUBMIT_VERIFICATION_CODE) { // 验证码验证成功 } } else { // 获取验证码失败 } } }); SMSSDK.getVerificationCode("86", phoneNumber); } } }); ``` 4. 验证码登录 我们可以使用Firebase Authentication来进行验证码登录。在build.gradle文件中添加以下依赖: ``` implementation 'com.google.firebase:firebase-auth:19.3.1' ``` 在登录按钮的点击事件中添加以下代码: ``` import com.google.firebase.auth.FirebaseAuth; import com.google.firebase.auth.PhoneAuthCredential; import com.google.firebase.auth.PhoneAuthProvider; mLoginButton.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { String phoneNumber = mPhoneNumberEditText.getText().toString(); String verificationCode = mVerificationCodeEditText.getText().toString(); if (phoneNumber.isEmpty() || verificationCode.isEmpty()) { Toast.makeText(LoginActivity.this, "请输入手机号和验证码", Toast.LENGTH_SHORT).show(); } else { // 使用验证码登录 PhoneAuthCredential credential = PhoneAuthProvider.getCredential(verificationCode, ""); FirebaseAuth.getInstance().signInWithCredential(credential) .addOnSuccessListener(new OnSuccessListener<AuthResult>() { @Override public void onSuccess(AuthResult authResult) { // 登录成功 } }) .addOnFailureListener(new OnFailureListener() { @Override public void onFailure(@NonNull Exception e) { // 登录失败 } }); } } }); ``` 以上就是一个简单的验证码登录的示例,你可以根据自己的需求进行修改。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值