标签:执行 定时 控件 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