編輯:關於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" 問題也可以解決了!
一、Android的ClassLoader體系is = getAssets().open("app.apk");file = new File(get
寫這個不是因為這個很難,而是發現特麼每次新寫一個項目都要寫這些東西,不如就把他們拿出來,以後可以省下不少時間。1:啟動頁面 一個動畫 然後進入app2:第一次打開的引導頁
新的Java8 API中提供了不少新的特性,其中就有Lambda表達式。而本文我們將主要介紹一下在Android開發過程中如何使用Lambda表達式,這裡主要是為我們後續
Android跨進程通信的功能,下面就讓我們具體地學習一下。在上篇文章中我們知道了,Service其實是運行在主線程裡的,如果直接在Service中處理一些耗時的邏輯,就