标签:执行 定时 控件 splash yingyin final int messages callbacks
前序:今天开始我会每天更新这个项目的进展和想法,如果有什么不对的地方,也希望网友们提出来,大家一起学习!
注意:我是按照项目的整一个逻辑顺序一点点的去实现,所以篇幅有点长,但只要用心去看和实现,一定会有收获,好了,不瞎比比了,直接进正文。
一.登陆界面
1)效果图(个人很装逼的用了自己的相片去作为登陆页面的imageview)
2)需求分析
(1)界面:因为组件要素都在中间聚集,所以最好用相对布局来写这些组件,因为相对布局可以相对于父容器和控件。最后分析这里有什么组件要素,这里有imageview,textview和progressbar这三个控件;
(2)定时跳转到主界面;
(3)点击登陆界面跳转到主界面;
(4)主界面返回的时候直接跳出app,而不会返回登陆界面或者说多次停留在主页。
3)上代码:
1)布局文件
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout 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:background="#ffffff"
tools:context=".activity.SplashActivity">
<ImageView
android:id="@+id/iv_splash_icon"
android:layout_width="80dp"
android:layout_height="80dp"
android:layout_centerInParent="true"
android:src="@drawable/ic_launcher" />
<LinearLayout
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_below="@id/iv_splash_icon"
android:layout_centerHorizontal="true"
android:gravity="center"
android:orientation="horizontal">
<ProgressBar
android:layout_width="30dp"
android:layout_height="30dp" />
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginLeft="8dp"
android:text="正在启动..."
android:textSize="18sp" />
</LinearLayout>
</RelativeLayout>
2)SplashActivity
package com.example.pdyingyin.activity;
import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
import android.os.Handler;
import android.util.Log;
import android.view.MotionEvent;
import com.example.pdyingyin.R;
//登陆界面
public class SplashActivity extends Activity {
private static final String TAG = SplashActivity.class.getSimpleName();//"SplashActivity"
private Handler handler = new Handler();
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_splash);
//需求一:定时两秒跳转到主界面
handler.postDelayed(new Runnable() {
@Override
public void run() {
//两秒后才执行到这里
//执行在主线程中(在那个线程里调用这个方法,就在那个线程里执行)
startMainActivity();
Log.e(TAG, "当前线程名称==" + Thread.currentThread().getName());
}
}, 2000);
}
//以上需求一的逻辑代码
private boolean isStartMain = false;
/**
* 跳转到主页面,并且把当前页面关闭掉
*/
private void startMainActivity() {
//这个的作用是如果我们之前直接按了键进去首页了,之后在执行主线程的startMainactivity方法时,就不执行逻辑处理了,
//从而避免发生多个同种活动存在
//需求三
if(!isStartMain){
isStartMain = true;
Intent intent = new Intent(this,MainActivity.class);
startActivity(intent);
//关闭当前页面
finish();
}
}
//需求二:点击界面跳转到主界面
//普通的话,我们会等两秒之后在跳转到我们的主页面,而这个方法的出现就是
//当我们点击界面时,我们就进入到我们的主页面了
@Override
public boolean onTouchEvent(MotionEvent event) {
Log.e(TAG,"onTouchEvent==Action"+event.getAction());
startMainActivity();
return super.onTouchEvent(event);
}
@Override
protected void onDestroy() {
//把所有的消息和回调移除
handler.removeCallbacksAndMessages(null);
super.onDestroy();
}
}
4)总结:直接看代码里面的注释,按照需求为单位一个一个功能去消化。
二.主界面
1)效果图
2)需求分析:
(0)其布局为一个标题栏,一个
(1)其有四大页面,也就是要用到fragment碎片
(2)要为每个按钮设立监听
(3)要为每个按钮设置点击前后变化
(4)其要有一个特制的标题栏,该标题栏有一个搜索功能,点击搜索的话跳转到搜索的界面,还有两个按钮
标签:执行 定时 控件 splash yingyin final int messages callbacks
原文地址:http://www.cnblogs.com/lpd1/p/7747970.html