編輯:關於Android編程
現在隨便下載一個app,打開都有一個Splash界面,為什麼一進去就有一個splash界面呢?其實用戶打開你的產品,希望用最少的信息給用戶最多的信息量,讓用戶知道這是一款什麼產品,這是說產品方面的,還有一個是功能方面的,比如數據庫的拷貝,版本更新,還有一個重要的就是展示該公司的logo等等,現在的移動互聯網相當於pC端對產品的體驗更講究,我們現在發現一個很好的產品它未必能馬上能給這公司盈利,但是用戶量大時,表示用戶對你的產品認可,那麼公司融資就比較簡單了,廢話不多說
如果splash什麼都不做,一般都是過幾秒進入主界面,代碼如下:
public class SplashActivity extends Activity {
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() {
loadUI();
}
}, 5000);
}
protected void loadUI() {
Intent intent = new Intent(this,MainActivity.class);
startActivity(intent);
finish();
}
}那麼在我們的這個怎麼判斷呢?我們看loadUI()方法其實在Runnable接口中執行,也就是這個方法封裝在Runnable接口中,使用的是匿名內部類,現在我們不使用匿名對象,直接創建對象,然後再判斷這個對象,解決方案代碼如下:
public class SplashActivity extends Activity {
private Handler handler = new Handler();
private Runnable runnbale ;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_splash);
runnbale = new Runnable() {
@Override
public void run() {
loadUI();
}
};
handler.postDelayed(runnbale, 5000);
}
protected void loadUI() {
Intent intent = new Intent(this,MainActivity.class);
startActivity(intent);
finish();
}
@Override
public boolean onTouchEvent(MotionEvent event) {
if(event.getAction()==MotionEvent.ACTION_UP) {
Intent intent = new Intent(this,MainActivity.class);
startActivity(intent);
finish();
//如果之前創建了Runnable對象,那麼就把這任務移除
if(runnbale!=null){
handler.removeCallbacks(runnbale);
}
}
return super.onTouchEvent(event);
}
}
還有一種方案就要設計到Activity的啟動模式了,我們是連續啟動2個一樣的activity,而activity有一種啟動模式為singleTop,就是當啟動的activity在棧頂時就不會再啟動這個activity,我們設置下試試,
ok,設計這個android:launchMode = "singleTop" 問題也可以解決了!
MultiDex與熱修復實現原理
一、Android的ClassLoader體系is = getAssets().open("app.apk");file = new File(get
Android 啟動頁面引導頁面登陸注冊主頁通用框架
寫這個不是因為這個很難,而是發現特麼每次新寫一個項目都要寫這些東西,不如就把他們拿出來,以後可以省下不少時間。1:啟動頁面 一個動畫 然後進入app2:第一次打開的引導頁
Android tips(十三)--)Android開發過程中使用Lambda表達式
新的Java8 API中提供了不少新的特性,其中就有Lambda表達式。而本文我們將主要介紹一下在Android開發過程中如何使用Lambda表達式,這裡主要是為我們後續
Android中跨進程通信
Android跨進程通信的功能,下面就讓我們具體地學習一下。在上篇文章中我們知道了,Service其實是運行在主線程裡的,如果直接在Service中處理一些耗時的邏輯,就