LoginActivity实现

参考:《第一行代码》

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 }

 

 

 

  

 

posted @ 2015-11-01 19:40  早杰  阅读(1426)  评论(0编辑  收藏  举报