您的位置:首页 > 移动开发 > Android开发

Android客户端基于XMPP的IM(openfire+asmack)的聊天工具之登录(三)

2014-10-30 12:45 330 查看
/IM/src/com/example/imui/LoginActivity.java

package com.example.imui;

import org.jivesoftware.smack.XMPPException;
import org.jivesoftware.smack.packet.Presence;

import com.example.imui.R;
import com.example.service.XxmpConnection;
import com.lidroid.xutils.ViewUtils;
import com.lidroid.xutils.view.annotation.ViewInject;

import android.os.Bundle;
import android.os.Handler;
import android.app.Activity;
import android.content.Intent;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.CheckBox;
import android.widget.EditText;
import android.widget.LinearLayout;
import android.widget.RadioButton;
import android.widget.TextView;
import android.widget.Toast;

public class LoginActivity extends Activity implements OnClickListener {

@ViewInject(R.id.acount)
private EditText acountEditText;
@ViewInject(R.id.password)
private EditText passwordEditText;
@ViewInject(R.id.checkBox)
private CheckBox mCheckBox;
@ViewInject(R.id.regester)
private TextView regestTextView;
@ViewInject(R.id.login)
private Button loginButton;

private LinearLayout layout1, layout2;

Handler handler = new Handler() {
public void handleMessage(android.os.Message msg) {
if(msg.what==1)
{
System.out.println("++++++++++++++++++++++++");
layout1.setVisibility(View.VISIBLE);
layout2.setVisibility(View.GONE);
}
else if(msg.what==2)
{
layout1.setVisibility(View.GONE);
layout2.setVisibility(View.VISIBLE);
Toast.makeText(LoginActivity.this, "登录失败!",Toast.LENGTH_SHORT).show();
}else if(msg.what==3){
Toast.makeText(LoginActivity.this, "登录成功", 0).show();
}
};
};

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);

acountEditText=(EditText)findViewById(R.id.acount);
passwordEditText=(EditText)findViewById(R.id.password);
mCheckBox=(CheckBox)findViewById(R.id.checkBox);
regestTextView=(TextView)findViewById(R.id.regester);
regestTextView.setOnClickListener(this);
loginButton=(Button)findViewById(R.id.login);
loginButton.setOnClickListener(this);

// 正在登录
this.layout1 = (LinearLayout) findViewById(R.id.layout_logining);
// 登录界面
this.layout2 = (LinearLayout) findViewById(R.id.layout_login);
}

@Override
public void onClick(View v) {
switch (v.getId()) {
case R.id.login:
final String acount = acountEditText.getText().toString().trim();
final String password = passwordEditText.getText().toString().trim();

new Thread(new Runnable() {
@Override
public void run() {
handler.sendEmptyMessage(1);
try {
XxmpConnection.getConnection().login(acount, password);

// 状态
Presence presence = new Presence(Presence.Type.available);
XxmpConnection.getConnection().sendPacket(presence);

handler.sendEmptyMessage(3);

Intent intent = new Intent(LoginActivity.this,
FridentsActivity.class);
startActivity(intent);

finish();
} catch (XMPPException e) {
// TODO Auto-generated catch block
e.printStackTrace();
handler.sendEmptyMessage(2);
}
}
}).start();
break;
case R.id.regester:
Intent intent=new Intent(LoginActivity.this, RegesterActivity.class);
startActivity(intent);
break;
}
}

}


/IM/res/layout/activity_main.xml

<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical" >

<LinearLayout
android:id="@+id/layout_logining"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:background="#FFEFEFEF"
android:gravity="center"
android:orientation="vertical"
android:visibility="gone" >

<ProgressBar
android:id="@+id/formlogin_pb"
style="@android:style/Widget.ProgressBar.Inverse"
android:layout_width="wrap_content"
android:layout_height="wrap_content" />

<TextView
android:id="@+id/formlogin_tv_login"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="10.0dip"
android:text="正在登錄"
android:textColor="#FF000000" />
</LinearLayout>

<LinearLayout
android:id="@+id/layout_login"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical" >

<ImageView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center_horizontal"
android:layout_marginTop="100dp"
android:src="@drawable/a1" />

<LinearLayout
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center_horizontal"
android:layout_marginTop="30dp"
android:orientation="horizontal" >

<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/acount"
android:textSize="@dimen/textsize11" />

<EditText
android:id="@+id/acount"
android:layout_width="@dimen/wigth"
android:layout_height="wrap_content"
android:background="@drawable/bg_text"
android:hint="@string/hint1"
android:inputType="number"
android:padding="2dp"
android:textSize="@dimen/textsize9" />
</LinearLayout>

<LinearLayout
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center_horizontal"
android:layout_marginTop="20dp"
android:orientation="horizontal" >

<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/password"
android:textSize="@dimen/textsize11" />

<EditText
android:id="@+id/password"
android:layout_width="@dimen/wigth"
android:layout_height="wrap_content"
android:background="@drawable/bg_text"
android:hint="@string/hint2"
android:inputType="textPassword"
android:padding="2dp"
android:textSize="@dimen/textsize9" />
</LinearLayout>

<LinearLayout
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center_horizontal"
android:layout_marginTop="20dp"
android:orientation="horizontal" >

<CheckBox
android:id="@+id/checkBox"
android:layout_width="wrap_content"
android:layout_height="wrap_content" />

<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/rememberpassword"
android:textSize="@dimen/textsize8" />

<TextView
android:id="@+id/regester"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginLeft="40dp"
android:text="@string/regester"
android:textSize="@dimen/textsize8" />
</LinearLayout>

<Button
android:id="@+id/login"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center_horizontal"
android:layout_marginTop="20dp"
android:text="@string/login"
android:textSize="@dimen/textsize11" />
</LinearLayout>

</FrameLayout>


/IM/src/com/example/imui/FridentsActivity.java

import com.example.imui.R;

import android.app.Activity;
import android.os.Bundle;

public class FridentsActivity extends Activity{

@Override
protected void onCreate(Bundle savedInstanceState) {
// TODO Auto-generated method stub
super.onCreate(savedInstanceState);
setContentView(R.layout.fridents_list);
}
}


/IM/res/layout/fridents_list.xml

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical" >

<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="好友界面"
android:textSize="@dimen/textsize14"/>

</LinearLayout>


AndroidManifest.xml

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.example.imui"
android:versionCode="1"
android:versionName="1.0" >

<uses-sdk
android:minSdkVersion="8"
android:targetSdkVersion="18" />

<application
android:allowBackup="true"
android:icon="@drawable/ic_launcher"
android:label="@string/app_name"
android:theme="@style/AppTheme" >
<activity
android:name="com.example.imui.LoginActivity"
android:label="@string/app_name" >
<intent-filter>
<action android:name="android.intent.action.MAIN" />

<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>

<activity android:name="FridentsActivity"></activity>
<activity android:name="RegesterActivity"></activity>
</application>

<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.MOUNT_UNMOUNT_FILESYSTEMS" />
</manifest>


以上(一)(二)(三)可以实现简单登录注册,由于我是用的openfire自带数据库,所以我没找到设置昵称的字段

测试结果:



点击注册



返回到登陆界面输入账号密码点击登录





测试一下重号注册



服务端

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐