01SplashActivity界面的完成

即时通讯项目基于环信的SDK,新建项目,导入环信的JAR包,配置清单文件下的元数据。(给出代码形式呈现)

先是SplashActivity界面,他的布局如下:

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
     android:id="@+id/splash_root"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
	android:background="@drawable/bg"  
	android:gravity="center"  
	android:orientation="vertical"
     >

   <ImageView 
       android:id="@+id/logo"
       android:layout_width="wrap_content"
       android:layout_height="wrap_content"
       android:src="@drawable/ic_launcher"
       android:paddingLeft="20dip"
       android:paddingRight="20dip"
       android:scaleType="centerInside"
       />
   <TextView 
       android:layout_width="wrap_content"
       android:layout_height="wrap_content"
       android:layout_marginTop="20dip"
       android:text="超信"
       android:shadowColor="@android:color/darker_gray"
       android:shadowDx="0"
       android:shadowDy="2"
       android:shadowRadius="1"
       android:textColor="@android:color/background_dark"
       android:textSize="22dip"
       android:typeface="serif"
       />
    <TextView
        android:id="@+id/tv_version"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_marginTop="20dip"
        android:gravity="bottom"
        android:shadowColor="@android:color/darker_gray"
        android:shadowDx="0"
        android:shadowDy="2"
        android:shadowRadius="1"
        android:text="版本号"
        android:textColor="@android:color/background_dark"
        android:textSize="15dip"
        android:typeface="serif" >
    </TextView>

</LinearLayout>
再创建一个全局的Application类,本节在里面添加获取用户名和密码的方法。

如下:

package com.dy.ustc.im.application;

import com.easemob.chat.EMChat;

import android.app.Application;
import android.content.Context;
import android.content.SharedPreferences;
import android.preference.PreferenceManager;

public class IMApplication extends Application {
	
	public static Context applicationContext;
	
	private static IMApplication instance;
	
	//登录的用户名
	public final String PREF_USERNAME = "username";
	private String userName = null;
	//登录的密码
	private static final String PREF_PWD = "pwd";
	private String password = null;
	
	
	
	@Override
	public void onCreate() {
		super.onCreate();
		//开始忘记初始化,直接导致SplashActivity的线程空指针挂掉退出
		applicationContext = this;
		instance = this;
		// 初始化环信SDK,一定要先调用init()
		EMChat.getInstance().init(applicationContext);
		EMChat.getInstance().setDebugMode(true);
	}
	
	
	public static IMApplication getInstance(){
		
		
		return instance;
	}
	
	/**
	 * 获取当前的登录的用户名
	 * 
	 * @return
	 */
	public String getUserName(){
		if (userName == null) {
			SharedPreferences preferences = PreferenceManager.getDefaultSharedPreferences(applicationContext);
			userName = preferences.getString(PREF_USERNAME, null);
		}
		return userName;
	}
	/**
	 * 获取密码
	 * @return
	 */
	public String getPassword(){
		if (password == null) {
			SharedPreferences preferences = PreferenceManager.getDefaultSharedPreferences(applicationContext);
			password = preferences.getString(PREF_PWD, null);
		}
		return password;
	}
	

}
创建BaseActivity,实现他的onResume方法,具体作用后面再说。代码如下:

package com.dy.ustc.im.ui;

import com.easemob.chat.EMChatManager;

import android.support.v4.app.FragmentActivity;

public class BaseActivity extends FragmentActivity {
	
	
	@Override
	protected void onResume() {
		super.onResume();
		//onresume时,取消notification显示
		//官方的关于activityResumed的说明:
		//应用从后台回到前台,需要用activityResumed 通知sdk sdk 会reset 系统的消息通知 (notification area)
		EMChatManager.getInstance().activityResumed();
	}

}

最后是本节的SplashActivity,他完成获取应用程序的版本号还有跳转到主界面或者登陆界面的功能。

代码如下:

package com.dy.ustc.im.ui;


import com.dy.ustc.im.R;
import com.dy.ustc.im.R.id;
import com.dy.ustc.im.R.layout;
import com.dy.ustc.im.application.IMApplication;
import com.easemob.chat.EMChatManager;
import com.easemob.chat.EMGroupManager;

import android.app.Activity;
import android.content.Intent;
import android.content.pm.PackageInfo;
import android.content.pm.PackageManager;
import android.content.pm.PackageManager.NameNotFoundException;
import android.os.Bundle;
import android.view.Window;
import android.view.animation.AlphaAnimation;
import android.widget.LinearLayout;
import android.widget.TextView;

/**
 * 
 * 欢迎的SplashActivity界面
 * 
 * 
 * 
 * @author 
 *
 */

public class SplashActivity extends Activity {
	
	private LinearLayout rootLayout;
	private TextView versionText;
	
	private static final int sleepTime = 2500;
	
	

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        requestWindowFeature(Window.FEATURE_NO_TITLE);
        setContentView(R.layout.activity_splash);
        rootLayout = (LinearLayout) findViewById(R.id.splash_root);
		versionText = (TextView) findViewById(R.id.tv_version);
		
		
		versionText.setText(getVersion());
		
		AlphaAnimation alphaAnimation = new AlphaAnimation(0.0f, 1.0f);
		alphaAnimation.setDuration(2000);
		rootLayout.startAnimation(alphaAnimation);
    }
    @Override
    protected void onStart(){    	
    	super.onStart();
    	new Thread(new Runnable() {
			
			@Override
			public void run() {
				if (IMApplication.getInstance().getUserName() != null && IMApplication.getInstance().getPassword()!= null) {
					//免登录情况,加载所有的本地群和所有的会话
					long start = System.currentTimeMillis();
					EMGroupManager.getInstance().loadAllGroups();
					EMChatManager.getInstance().loadAllConversations();
					long costTime = System.currentTimeMillis() - start;
					if (sleepTime - costTime > 0) {
						try {
							Thread.sleep(sleepTime-costTime);
						} catch (Exception e) {
							e.printStackTrace();
						}
					}
					startActivity(new Intent(SplashActivity.this, MainActivity.class));
					finish();
				}else {
					try {
						Thread.sleep(sleepTime);
					} catch (Exception e) {
						e.printStackTrace();
					}
					startActivity(new Intent(SplashActivity.this, LoginActivity.class));
					finish();
				}
				
			}
		}).start();
    }
    /**
     * 获取当前应用程序的版本号
     * 
     * @return
     */
    private String getVersion(){
    	PackageManager pm = getPackageManager();
    	try {
			PackageInfo info = pm.getPackageInfo(getPackageName(), 0);
			String version = info.versionName;
			return version;
		} catch (NameNotFoundException e) {
			e.printStackTrace();
			return "版本号错误";
		}
    }
    
    
    
}

最后使我们配置的清单文件:

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="com.dy.ustc.im"
    android:versionCode="2"
    android:versionName="2.0" >

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

    <application
        android:name="com.dy.ustc.im.application.IMApplication"
        android:allowBackup="true"
        android:icon="@drawable/ic_launcher"
        android:label="@string/app_name"
        android:theme="@style/AppTheme" >
        <activity
            android:name="com.dy.ustc.im.ui.SplashActivity"
            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="com.dy.ustc.im.ui.BaseActivity"></activity>
        <activity android:name="com.dy.ustc.im.ui.MainActivity"></activity>
        <activity android:name="com.dy.ustc.im.ui.LoginActivity"></activity>
        
        
         <!-- 设置环信应用的appkey -->
        <meta-data
            android:name="EASEMOB_APPKEY"
            android:value="eoeduo#test" />
        
        
    </application>

</manifest>


本节完。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值