【大白鹿学习andriod开发 第三弹】基本组件学习+实现简单登陆界面

话痨博主的碎碎念:嗯…感觉上一篇要写完的话写的太长了….所以就拆开了_(:з」∠)_
所以这一篇呢是实现登录界面(虽然我们老师说讲登录注册功能是最low的……)
不管了!反正我啥也不会!
欢迎指正!欢迎指教!欢迎批评!

这里把我参考的网址都记录下来:
慕课网:http://www.imooc.com/video/1444/0
小KING教你做android项目(二)—实现登陆页面并跳转和简单的注册页面


这里再展示一下原型 <吃藕这件事情…咱们藏在心里不要说出来就好>

我们要实现的页面大致是这样的:<背景是轮转播放图片>
欢迎页:欢迎页
登录页:登录页


预备知识

参考学姐博客:初识安卓Android(1)
凑不要脸的贴上自己的上一篇:【大白鹿学习andriod开发 第二弹】基本组件学习+实现欢迎登录界面(1)


好噜,我们开始吧

首先我们需要建立我们的第二个界面–登陆界面
分别新建如下两个文件(loginActivity.java和activity_login.xml):
这里写图片描述
这里写图片描述
并在主的andriodManifest.xml文件下新增:

<activity 
            android:name=".loginActivity"></activity>

来注册我们的新界面

同样,我为了实现页面跳转,新建了一个主页面和一个注册页面。


根据前两节的知识,我们可以简单的对我们的界面进行布局,如下:

这里写图片描述

代码:

<?xml version="1.0" encoding="utf-8"?>
<AbsoluteLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:background="@drawable/login" >

    <TextView
        android:id="@+id/textView1"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_x="22dp"
        android:layout_y="93dp"
        android:text="您好,请选择"
        android:textAppearance="?android:attr/textAppearanceMedium"
        android:textColor="#ffffff"
        android:textSize="24sp" />


    <LinearLayout
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_x="22dp"
        android:layout_y="148dp"
        android:orientation="vertical" >

        <LinearLayout
            android:layout_width="match_parent"
            android:layout_height="wrap_content" >

            <TextView
                android:id="@+id/pasw"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:text="@string/username"
                android:textColor="#ffffff"
                android:textSize="20sp" />

            <EditText
                android:id="@+id/usernameText"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_weight="1"
                android:ems="10"
                android:hint="请输入账号"
                android:inputType="textPersonName"
                android:textColor="#ffffff"
                android:textColorHint="#CCCCCC" >

                <requestFocus />
            </EditText>

        </LinearLayout>

        <LinearLayout
            android:layout_width="match_parent"
            android:layout_height="wrap_content" >

            <TextView
                android:id="@+id/username"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:text="密码"
                android:textColor="#ffffff"
                android:textSize="20sp" />

            <EditText
                android:id="@+id/paswText"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_weight="1"
                android:ems="10"
                android:hint="请输入密码"
                android:inputType="textPassword"
                android:textColor="#ffffff"
                android:textColorHint="#CCCCCC" />

        </LinearLayout>

        <Button
            android:id="@+id/login"
            android:layout_width="284dp"
            android:layout_height="38dp"
            android:background="#41C7D6"
            android:text="登录"
            android:textColor="#ffffff" />

        <LinearLayout
            android:layout_width="271dp"
            android:layout_height="wrap_content" >

            <Button
                android:id="@+id/forgetPasw"
                style="?android:attr/buttonStyleSmall"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_weight="1"
                android:textColor="#41C7D6"
                android:background="@android:color/transparent"<!-- 除去按钮默认效果 -->
                android:text="忘记密码?" />



            <Button
                android:id="@+id/register"
                style="?android:attr/buttonStyleSmall"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_weight="1"
                android:textColor="#41C7D6"
                android:background="@android:color/transparent"
                android:text="新用户注册" />


        </LinearLayout>

    </LinearLayout>

    <LinearLayout
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_x="92dp"
        android:layout_y="376dp" >
    </LinearLayout>

</AbsoluteLayout>

这里需要补充的知识是关于button控件的。
大家可以去慕课网看看讲解button这一节的内容:
5.1 Android-按钮概述-慕课网


好啦,页面也有了,我们要开始做一些简单的效果了。

比如说,实现点击登录按钮,当用户名密码正确时,跳转到首页。反之,出现“用户名或密码不正确的提示”。

这个过程需要一个OnClickListener来监听我们的登录按钮。在获得点击事件之后,进行简单的逻辑判断(还没有用到数据库哦)来达成我们想要实现的效果。

相应的按钮监听的课程在这里:http://www.imooc.com/video/1545
下面我简要的写一下我的学习笔记:

事件监听有很多种,这里主要以onclickListener为主。要注意的是,所有的控件都有相应的事件监听。
我们可以通过.setOnClickListener(OnClickListener)来对其进行相应的活动编辑。

实现事件监听有三种方式:

  1. 匿名内部类
  2. 外部类
  3. 接口

其中,我们通常是用匿名内部类的方式来实现事件监听。而外部类可以在所有按键使用时,执行同一个动作的情况下来使用,以达到减少代码量的目的。

这里我们使用匿名内部类来实现功能:
大致有三步:

  1. 初始化当前所需的控件
  2. 设置控件监听
  3. 实现点击后要操作的动作

首先是初始化一个登录按钮,还有两个输入框:

Button loginBtn=(Button)findViewById(R.id.login);
final EditText name=(EditText)findViewById(R.id.usernameText);
final EditText psw=(EditText)findViewById(R.id.paswText);

然后对我们的loginBtn进行监听:

loginBtn.setOnClickListener(new OnClickListener(){

            @Override
            public void onClick(View arg0) {
                // 这里实现监听得到后要执行的动作

        });

最后,添加点击后要操作的事情:

String username=name.getText().toString().trim();//将获取的用户输入的editText转换为字符串,以便简单的逻辑判断
String password=psw.getText().toString().trim();
                    if(!username.equals("admin")||!password.equals("1111"))
{//设定页面跳转条件 这里需要用户名为admin以及密码为1111时跳转
      Toast.makeText(loginActivity.this, "用户名或密码错误:"+username+"."+password, Toast.LENGTH_SHORT).show();//否则出现错误提示
}
else{
      Intent intent=new Intent();
      intent.setClass(loginActivity.this, MainActivity.class);
      startActivity(intent);
    }

然后想到要实现多个按钮的监听,就采用了外部类的方法,根据点击传入的view来判断是哪个按钮被点击了,代码如下:

protected void onCreate(Bundle savedInstanceState) {

        super.onCreate(savedInstanceState);
        //将布局xml文件引入当前activity之中
        setContentView(R.layout.activity_login);
        Button loginBtn=(Button)findViewById(R.id.login);
        Button testBtn=(Button)findViewById(R.id.register);


        loginBtn.setOnClickListener(new myListener());
        testBtn.setOnClickListener(new myListener());

    }

    public class myListener implements OnClickListener{

        @Override
        public void onClick(View v) {
            // TODO Auto-generated method stub
            if(v.getId()==R.id.login){
                EditText name=(EditText)findViewById(R.id.usernameText);
                EditText psw=(EditText)findViewById(R.id.paswText);
                 String username=name.getText().toString().trim();
               String password=psw.getText().toString().trim();
               if(username.equals("")||password.equals("")){
                Toast.makeText(loginActivity.this, "您还没有输入完整哦~", Toast.LENGTH_SHORT).show();
               }
               else if(!username.equals("admin")||!password.equals("1111")){
                   Toast.makeText(loginActivity.this, "用户名或密码错误:"+username+"."+password, Toast.LENGTH_SHORT).show();
               }
               else{
                Intent intent=new Intent();
                intent.setClass(loginActivity.this, MainActivity.class);
                startActivity(intent);
                }
            }
            if(v.getId()==R.id.register){
                Intent intent=new Intent();
                intent.setClass(loginActivity.this, RegisterActivity.class);
                startActivity(intent);
            }
        }

    }

好啦,到这里简单的登录功能就实现啦。

以下是对提供的参考资料的总结,按照要求结构化多个要点分条输出: 4G/5G无线网络优化与网规案例分析: NSA站点下终端掉4G问题:部分用户反馈NSA终端频繁掉4G,主要因终端主动发起SCGfail导致。分析示,在信号较好的环境下,终端可能因节能、过热保护等原因主动释放连接。解决方案建议终端侧进行分析处理,尝试关闭节电开关等。 RSSI算法识别天馈遮挡:通过计算RSSI平均值及差值识别天馈遮挡,差值大于3dB则认定有遮挡。不同设备分组规则不同,如64T和32T。此方法可有效帮助现场人员识别因环境变化引起的网络问题。 5G 160M组网小区CA不生效:某5G站点开启100M+60M CA功能后,测试发现UE无法正常使用CA功能。问题原因在于CA频点集标识配置错误,修正后测试正常。 5G网络优化与策略: CCE映射方式优化:针对诺基亚站点覆盖农村区域,通过优化CCE资源映射方式(交织、非交织),提升RRC连接建立成功率和无线接通率。非交织方式相比交织方式有著提升。 5G AAU两扇区组网:与三扇区组网相比,AAU两扇区组网在RSRP、SINR、下载速率和上传速率上表现不同,需根据具体场景选择适合的组网方式。 5G语音解决方案:包括沿用4G语音解决方案、EPS Fallback方案和VoNR方案。不同方案适用于不同的5G组网策略,如NSA和SA,并影响语音连续性和网络覆盖。 4G网络优化与资源利用: 4G室分设备利旧:面对4G网络投资压减与资源需求矛盾,提出利旧多维度调优策略,包括资源整合、统筹调配既有资源,以满足新增需求和提质增效。 宏站RRU设备1托N射灯:针对5G深度覆盖需求,研究使用宏站AAU结合1托N射灯方案,快速便捷地开通5G站点,提升深度覆盖能力。 基站与流程管理: 爱立信LTE基站邻区添加流程:未提供具体内容,但通常涉及邻区规划、参数配置、测试验证等步骤,以确保基站间顺畅切换和覆盖连续性。 网络规划与策略: 新高铁跨海大桥覆盖方案试点:虽未提供详细内容,但可推测涉及高铁跨海大桥区域的4G/5G网络覆盖规划,需考虑信号穿透、移动性管理、网络容量等因素。 总结: 提供的参考资料涵盖了4G/5G无线网络优化、网规案例分析、网络优化策略、资源利用、基站管理等多个方面。 通过具体案例分析,展示了无线网络优化中的常见问题及解决方案,如NSA终端掉4G、RSSI识别天馈遮挡、CA不生效等。 强调了5G网络优化与策略的重要性,包括CCE映射方式优化、5G语音解决方案、AAU扇区组网选择等。 提出了4G网络优化与资源利用的策略,如室分设备利旧、宏站RRU设备1托N射灯等。 基站与流程管理方面,提到了爱立信LTE基站邻区添加流程,但未给出具体细节。 新高铁跨海大桥覆盖方案试点展示了特殊场景下的网络规划需求。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值