参考:《第一行代码》

1.首先new一个LoginActivity继承Activity

1 public class LoginActivity extends Activity

2.重写OnCreate方法

1     @Override
2     protected void onCreate(Bundle savedInstanceState) {
3         super.onCreate(savedInstanceState);
4     }

3.使登录界面全屏并隐藏标题栏,这行代码一定要在setContentView()之前执行

1 requestWindowFeature(Window.FEATURE_NO_TITLE);

4.用setContentView加载布局

1     @Override
2     protected void onCreate(Bundle savedInstanceState) {
3         super.onCreate(savedInstanceState);
4         this.getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN, WindowManager.LayoutParams.FLAG_FULLSCREEN);
5         this.requestWindowFeature(Window.FEATURE_NO_TITLE);
6         setContentView(R.layout.activity_login);7     }

5.在活动中使用Toast返回一些短小的消息给用户,比如登录失败。Toast方法非常简单,通过静态方法makeText()创建出一个Toast对象,然后调用show()将Toast显示出来就可以了。makeText()方法需要三个参数,第一个参数是Context,也就是Toast要求的上下文,这里写上getApplicationContext(),由于活动本身就是一个Context对象,因此也可以在这里直接传入LoginActivit.this。第二个参数是Toast显示的文本内容,第三个参数是Toast显示的时长,有两个内置常量可以选择Toast.LENGTH_SHORT和Toast.LENGTH_LONG。

1 Toast.makeText(getApplicationContext(), "用户名或者密码错误", Toast.LENGTH_SHORT).show();

6.可以通过findViewById()方法获取到在布局文件中定义的元素,这里我们传入R.id.***,代码如下:

1  private Button login_btn;
2  login_btn = (Button) findViewById(R.id.login_btn);

7.我们可以通过调用setOnClickListener方法为按钮注册一个监听器,点击按钮就会执行监听器中的方法。

1  login_btn.setOnClickListener(new View.OnClickListener() {
2             @Override
3             public void onClick(View v) {
4             }
5         });

8.使用Intent在各活动之间穿梭,Intent方法大致分为两种显式Intent和隐式Intent。我们先看看显式Intent,Intent的构造函数Intent(Context packageContext, Class<?> cls),第一个参数Context要求提供一个启动活动的上下文,第二个参数Class则是指定想要启动的目标活动。

1  Intent intent = new Intent(LoginActivity.this, NaviActivity.class);
2  startActivity(intent);

隐式Intent则不明确指出我们想要启动哪一个活动,而是指定了一系列更为抽象的action和category等信息,然后交由系统去分析这个Intent并帮我们找出合适的活动去启动。我们在AndroidManifest.xml文件的<activity>标签下配置<intent-filter>的内容,可以指定当前活动能够响应的action和category。

1         <activity
2             android:name=".NaviActivity"
3             android:label="@string/app_name" >
4             <intent-filter>
5                 <action android:name="com.example.activitynavi.ACTION_START" />
6                 <category android:name="android.intent.category.DEFAULT" />
7             </intent-filter>
8         </activity>

在这里我们还可以看到主活动的<activity>标签

1         <activity
2             android:name=".LoginActivity"
3             android:label="@string/app_name" >
4             <intent-filter>
5                 <action android:name="android.intent.action.MAIN" />
6
7                 <category android:name="android.intent.category.LAUNCHER" />
8             </intent-filter>
9         </activity>

隐式的方式下我们启动一个activity需要Intent的另一个构造函数

1 Intent intent = new Intent(“com.example.wanderingzj.stumanage.ACTION_START”);
2 startActivity(intent);

只有在<action>和<category>标签同时匹配Intent中指定的action和category时,这个活动才能启动,由于这里设置的是android.intent.category.DEFAULT是一种默认category所以在调用startActivity()时,会自动将这个category添加到Intent中。

每个Intent中只能指定一个action,但可以指定多个category,所以还可以这样写:

1         <activity
2             android:name=".NaviActivity"
3             android:label="@string/app_name" >
4             <intent-filter>
5                 <action android:name="com.example.wanderingzj.stumanage.ACTION_START" />
6                 <category android:name="android.intent.category.DEFAULT" />
7                 <category android:name="com.example.wanderingzj.stumanage.MY_CATEGORY"/>
8             </intent-filter>
9         </activity

1 Intent intent = new Intent("com.example.wanderingzj.stumanage.ACTION_START");
2 intent.addCategory("com.example.wanderingzj.stumanage.MY_CATEGORY")
3 startActivity(intent);

在打开NaviActivity的同时,我们需要把LoginActivity里选择的权限传过去,这里我们就需要用Intent传递参数,我们可以使用Intent的putExtra方法,putExtra()方法第一个参数是键,第二个参数是真正要传递的数

1                     Intent intent = new Intent("com.example.wanderingzj.stumanage.ACTION_START");
2                     int authorization;
3                     if ( stu_rb.isChecked()) {
4                         authorization = 0;
5                     }else{
6                         authorization = 1;
7                     }
8                     intent.putExtra("Authorization", authorization);
9                     startActivity(intent);

在NaviActivity中,我们需要把值取出来,首先可以通过getIntent()方法获取用于启动NaviActivity的Intent,然后调用getStringExtra()方法,传入相应的键值,就可以得到传递的数值了。

1 Intent oldpager = getIntent();
2 int num = oldpager.getIntExtra("Authorization", 0);

到这里初步的LoginActivity就完成了,后续还会增加很多东西,比如数据库连接等。Android要学的东西还有很多啊~~

目前的LoginActivity代码:

 1 package com.example.wanderingzj.stumanage;
 2
 3 import android.app.Activity;
 4 import android.content.Intent;
 5 import android.graphics.Color;
 6 import android.os.Bundle;
 7 import android.view.View;
 8 import android.view.Window;
 9 import android.view.WindowManager;
10 import android.widget.Button;
11 import android.widget.EditText;
12 import android.widget.RadioButton;
13 import android.widget.Toast;
14
15 /**
16  * Created by samsung on 2015/10/28.
17  */
18 public class LoginActivity extends Activity{
19     //定义控件名
20     private EditText pwd_edt;
21     private EditText username_edt;
22     private RadioButton stu_rb;
23     private RadioButton teacher_rb;
24     private Button login_btn;
25
26     //定义一个新的Intent活动,以跳转到新界面
27     private Intent newpager;
28
29     @Override
30     protected void onCreate(Bundle savedInstanceState) {
31         super.onCreate(savedInstanceState);
32         requestWindowFeature(Window.FEATURE_NO_TITLE);
33         setContentView(R.layout.activity_login);
34
35         pwd_edt = (EditText) findViewById(R.id.pwd_edt);
36         username_edt = (EditText) findViewById(R.id.username_edt);
37         stu_rb = (RadioButton) findViewById(R.id.stu_rB);
38         teacher_rb = (RadioButton) findViewById(R.id.teacher_rB);
39         login_btn = (Button) findViewById(R.id.login_btn);
40
41         //设置控件的背景色
42         pwd_edt.setBackgroundColor(Color.WHITE);
43         username_edt.setBackgroundColor(Color.WHITE);
44
45         //按钮监听器
46         login_btn.setOnClickListener(new View.OnClickListener() {
47             @Override
48             public void onClick(View v) {
49                 if (pwd_edt.getText().toString().equals("0") && username_edt.getText().toString().equals("0")){
50                     //登录成功后跳转到新界面
51                     newpager = new Intent("com.example.wanderingzj.stumanage.ACTION_START");
52                     int authorization;
53                     if ( stu_rb.isChecked()) {
54                         authorization = 0;
55                     }else{
56                         authorization = 1;
57                     }
58                     newpager.putExtra("Authorization", authorization);
59                     startActivity(newpager);
60                 }else {
61                     Toast.makeText(getApplicationContext(), "用户名或者密码错误", Toast.LENGTH_SHORT).show();
62                 }
63             }
64         });
65     }
66 }

  

转载于:https://www.cnblogs.com/wanderingzj/p/4928460.html

LoginActivity实现相关推荐

  1. android注册的模板下载地址,Android --LoginActivity模板登录

    Android Studio使用自带LoginActivity模板,制作登录界面 登录界面功能: 1.记住表单账户密码,并自动登录 //获得sp实例对象 sp = this.getSharedPref ...

  2. 不良事件管理系统之安卓登录LoginActivity

    山东大学项目实训 点击登录代码块: public void LoginPost(View view){if(usernameEditText.getText()==null || "&quo ...

  3. databinding 入门 知识 给TextView 赋值

    在上一张中记录怎样创建布局的 这里就不说了下面写2个textview 具体代码如下 <?xml version="1.0" encoding="utf-8" ...

  4. java intent 传递集合对象_Intent之对象传递(Parcelable传递对象和对象集合)

    接着上一篇文章,以下我们讨论一下怎样利用Parcelable实现Intent之间对象的传递 一.实现对象传递 首先创建User.java实现Parcelable接口: package org.yayu ...

  5. Android支付接入(五):机锋网

    前边已经陆续跟大家走了一遍运营商和支付宝付费接入,今天跟大家一起看看机锋网的支付接入.事实上付费接入本身并没有太多须要注意的地方,做的多了以后你会发现套路都是大同小异的.而须要注意的地方在于怎么跟游戏 ...

  6. android profiler 简书,使用AndroidStudio提供的Android Profiler工具和mat进行内存泄漏分析...

    废话不多说直接说流程 给项目中集成LeakCanary工具进行内存泄漏检测.发现有内存泄漏后该工具会进行提示 有内存泄露后我们需要使用as的profiler工具进行分析并获取到.hprof文件,步骤如 ...

  7. Android开发之SharedPreferences的封装

    对于大部分初学者来说,如果想利用SharedPreferences进行数据存储的话大部分人(包括本人)应该会这样: 存储: SharedPreferences sharedPreferences = ...

  8. android开发我的新浪微博客户端-登录页面功能篇(4.2)

    上一篇中完成了如上图的UI部分的实现,现在继续来讲功能的实现,用户登录操作主要就是账号列表显示和选择账号登录两个功能其他的都是些简单的辅助功能,首先是点击id为iconSelectBtn的ImageB ...

  9. 灭霸—个人冲刺(4)

    灵魂三问:昨天做了什么?1.手机验证码 2h  2.整体框架搭建尝试 2h 目标任务量:100%  完成任务量:100% 今天要做什么?1.数据库建立及连接 16h 遇到困难没有?2.整体框架搭建时因 ...

  10. 从Android界面开发谈起(转)

    原文地址:http://blog.csdn.net/nieweilin/article/details/5967815 这篇文章没有打算有一个很好的逻辑去介绍android的某个方面,全盘大致上就是我 ...

最新文章

  1. Silverlight 参考:三维效果(透视转换) -- MSN
  2. kafka常用命令及问题解决
  3. Angular应用内路由(In App Route)的最佳实践
  4. windows下搭建hadoop+eclipse开发环境
  5. 孙叫兽进阶之路之软件开发生命周期
  6. Linux异步管道多线程速率测试-原始数据
  7. request.getRequestURL()和request.getRequestURI()区别
  8. html5晶格化,前端开发——滚滚屏(没纵向滚动条)
  9. 王朔:中国文化沉淀了大量腐烂变质垃圾
  10. 【CFD学习】yplus,y+,边界层理论,壁面第一层网格
  11. ADS2017破解后重启显示license失效,需要把EESoft Flexnet Licence Server启动类型设置为自动
  12. python语言在ansys的应用_Python语言在ANSYS的应用52讲-掌握SCDM脚本建模及ANSYS二次开发能力...
  13. Linux内核notifier机制通知链
  14. Apple Developer会员注册以及续订“支付授权失败...”问题
  15. win cmd 打开D盘
  16. 单片机嵌入式操作系统内核
  17. 在没SQL Server数据库情况下怎么打开.MDF文件?
  18. ssm+jsp计算机毕业设计大媛小南美味佳肴网站8p0nh(程序+LW+源码+远程部署)
  19. js中的boolean原始类型和Boolean引用类型
  20. 《学习如何学习》week4 2.3先难后易考试的小技巧总结

热门文章

  1. SHELL下去掉变量中的回车换行
  2. 插排与线分离设计的想法
  3. 世界杯:为什么进攻大多沿着边路前进?
  4. Composite(组合)
  5. python json函数_Json概述以及python对json的相关操作
  6. redis 正则匹配value_Java-19-Redis
  7. alter在mysql_MySQL的alter的使用
  8. php 忽略加载动态某个目录,php – 如何使用RecursiveIteratorIterator忽略目录?
  9. linux系统调整中文字符,Linux字符模式下中文显示
  10. linux 如何查看进程端口号,在linux中查看进程占用的端口号