安卓學習筆記 隱式跳轉
目錄
顯式跳轉
多用在APP內部跳轉使用
mBtn1.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
Intent inten=new Intent(MainActivity.this,Main2Activity.class);
startActivity(intent);
}
});
隱式跳轉 (主要使用)
多用在跨APP間
實現的效果:-MainActivity跳轉到Main2Activity
類似于常見的跳轉效果,但是這里使用到隱式跳轉知識
1.MainActivity
1.主MainActivity中的一個Button按鈕,注意,傳入的參數不是MainActivity.this和Main2Activity,而是我們自定義的一個參數(也就是這個參數可以隨便定義,但是這個自定義是基于Main2Activity的基礎上,也就是說,這個參數必須對應我們所要跳轉的ActivityManifest.xml的屬性)
Button btn= (Button) findViewById(R.id.btn);
btn.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
//這里的參數自定義的為:com.example
Intent intent=new Intent("com.example");
startActivity(intent);
}
});
2.Main2Activity
Main2Activity的Activity代碼塊-兩個按鈕一個圖片
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent">
<Button
android:id="@+id/button11"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_weight="1"
android:text="自己的跳轉" />
<ImageView
android:id="@+id/image1"
android:layout_width="200dp"
android:layout_height="200dp" />
<Button
android:id="@+id/button22"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_weight="1"
android:text="跳轉到相機頁面" />
</LinearLayout>
3.在Manifest.xml中注冊使用
Manifest.xml
只需要注意一下Main2Activity中的代碼即可,不需要更改MainActivity代碼
這里的和MainActivity一樣都有intent-filter標簽
<activity android:name=".Main2Activity">
<intent-filter>
//和我們MainActivity中Intent的參數相對應
<action android:name="com.example"/>
//默認的類別,屬性(可以不添加)
<category android:name="android.intent.category.DEFAULT"/>
</intent-filter>
</activity>
隱式跳轉使用案例
安卓原生相機拍照后返回到原界面
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.myactivity_layout);
mBtn2 = (Button) findViewById(R.id.button22);
mBtn2.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
// 使用隱式跳轉,跨App跳轉
Intent intent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);
startActivityForResult(intent, CAPTURE);
}
});
imageView = (ImageView) findViewById(R.id.image1);
}
構造方法
// 此頁面發起請求的頁面完成返回時此頁面的回調
// 參數一:請求碼
// 參數二:結果碼
// 參數三:如果上個頁面有數據,可以在第三個參數中取出
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
Log.d("MainActivity", "requestCode-->" + requestCode + ",resultCode-->" + resultCode);
if (requestCode == CAPTURE) {
// 從拍照頁面返回而來
if (resultCode == RESULT_OK) {
// 用戶成功拍照,可以用過返回的Intent取出響應的數據
Bitmap bitmap = (Bitmap) data.getExtras().get("data");
Log.d("MainActivity", "Bitmap:" + bitmap);
//設置圖片顯示控件的圖片內容
imageView.setImageBitmap(bitmap);
} else {
Toast.makeText(this, "拍照失敗或沒有沒有拍照!", Toast.LENGTH_LONG).show();
}
}
}
結果顯示
兩種方式總結:
以上述MainActivity,Main2Activity為例,如果要實現MainActivity跳轉到Main2Activity
簡單用隱式跳轉和顯示跳轉進行一個對比:
對比差異:顯示跳轉指定了我們的始發地MainActivity,目的地Main2Activity,相對更加直白
隱式跳轉并沒有明確指出我們跳轉到哪里,具體跳轉到哪個Activity,需要我們對比Manifest.xml中的action,category參數才能確定
相對更加隱蔽
智能推薦
隱式Intent實現Activity跳轉
在AndroidManifest.xml文件中,各個Activity的配置如下: ActivityMain的布局文件activity_main.xml如下: ActivityMain加載的menu文件menu_activity_main.xml如下: ActivityMain.java的Button響應代碼如下: ActivityMain.java的item響應代碼如下:  ...
android學習筆記----隱式意圖和顯式意圖
目錄 隱式意圖和顯式意圖: 使用意圖在activity之間傳遞數據(人品計算器): 隱式意圖和顯式意圖: 顯式意圖:顯式意圖明確指明了啟動活動的上下文和想要啟動的目標活動,顯式意圖明確指定了Intent應該傳遞給哪個組件。 隱式意圖:沒有明確指定組件名的Intent為隱式意圖。 Android系統會根據隱式意圖中設置的動作(action)、類別(category)、數據(URI和數據...
安卓沉浸式(透明)狀態欄學習小結
想做出好看的界面,看到扣扣界面狀態欄和toolbar(Actionbar)顏色一樣,就查了一下: 沉浸狀態欄 就是頂部狀態欄變得透明,背景變為activity的背景; 要求版本是5.0以上,不過現在應該沒有不符合的了(minsdk 21) 第一步 以下二選一 第二步 寫到這里運行就會發現一些問題,如圖 可以看到,狀態欄的顏色變了,但是actionbar卻被擠壓了,這是因為狀態欄透明后,整個布局向上...
freemarker + ItextRender 根據模板生成PDF文件
1. 制作模板 2. 獲取模板,并將所獲取的數據加載生成html文件 2. 生成PDF文件 其中由兩個地方需要注意,都是關于獲取文件路徑的問題,由于項目部署的時候是打包成jar包形式,所以在開發過程中時直接安照傳統的獲取方法沒有一點文件,但是當打包后部署,總是出錯。于是參考網上文章,先將文件讀出來到項目的臨時目錄下,然后再按正常方式加載該臨時文件; 還有一個問題至今沒有解決,就是關于生成PDF文件...
猜你喜歡
電腦空間不夠了?教你一個小秒招快速清理 Docker 占用的磁盤空間!
Docker 很占用空間,每當我們運行容器、拉取鏡像、部署應用、構建自己的鏡像時,我們的磁盤空間會被大量占用。 如果你也被這個問題所困擾,咱們就一起看一下 Docker 是如何使用磁盤空間的,以及如何回收。 docker 占用的空間可以通過下面的命令查看: TYPE 列出了docker 使用磁盤的 4 種類型: Images:所有鏡像占用的空間,包括拉取下來的鏡像,和本地構建的。 Con...
requests實現全自動PPT模板
http://www.1ppt.com/moban/ 可以免費的下載PPT模板,當然如果要人工一個個下,還是挺麻煩的,我們可以利用requests輕松下載 訪問這個主頁,我們可以看到下面的樣式 點每一個PPT模板的圖片,我們可以進入到詳細的信息頁面,翻到下面,我們可以看到對應的下載地址 點擊這個下載的按鈕,我們便可以下載對應的PPT壓縮包 那我們就開始做吧 首先,查看網頁的源代碼,我們可以看到每一...
Linux C系統編程-線程互斥鎖(四)
互斥鎖 互斥鎖也是屬于線程之間處理同步互斥方式,有上鎖/解鎖兩種狀態。 互斥鎖函數接口 1)初始化互斥鎖 pthread_mutex_init() man 3 pthread_mutex_init (找不到的情況下首先 sudo apt-get install glibc-doc sudo apt-get install manpages-posix-dev) 動態初始化 int pthread_...
統計學習方法 - 樸素貝葉斯
引入問題:一機器在良好狀態生產合格產品幾率是 90%,在故障狀態生產合格產品幾率是 30%,機器良好的概率是 75%。若一日第一件產品是合格品,那么此日機器良好的概率是多少。 貝葉斯模型 生成模型與判別模型 判別模型,即要判斷這個東西到底是哪一類,也就是要求y,那就用給定的x去預測。 生成模型,是要生成一個模型,那就是誰根據什么生成了模型,誰就是類別y,根據的內容就是x 以上述例子,判斷一個生產出...