1、首先在一個(gè)布局文件(.XML)中繪畫(huà)了一個(gè)跳轉(zhuǎn)按鈕(id為btn1):
公司主營(yíng)業(yè)務(wù):成都做網(wǎng)站、成都網(wǎng)站設(shè)計(jì)、移動(dòng)網(wǎng)站開(kāi)發(fā)等業(yè)務(wù)。幫助企業(yè)客戶真正實(shí)現(xiàn)互聯(lián)網(wǎng)宣傳,提高企業(yè)的競(jìng)爭(zhēng)能力。成都創(chuàng)新互聯(lián)公司是一支青春激揚(yáng)、勤奮敬業(yè)、活力青春激揚(yáng)、勤奮敬業(yè)、活力澎湃、和諧高效的團(tuán)隊(duì)。公司秉承以“開(kāi)放、自由、嚴(yán)謹(jǐn)、自律”為核心的企業(yè)文化,感謝他們對(duì)我們的高要求,感謝他們從不同領(lǐng)域給我們帶來(lái)的挑戰(zhàn),讓我們激情的團(tuán)隊(duì)有機(jī)會(huì)用頭腦與智慧不斷的給客戶帶來(lái)驚喜。成都創(chuàng)新互聯(lián)公司推出遷西免費(fèi)做網(wǎng)站回饋大家。
Button
android:id="@+id/btn1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="點(diǎn)擊跳轉(zhuǎn)" /
2、然后在關(guān)聯(lián)的類(lèi)中聲明一個(gè)私有button名稱(chēng),如:
private Button btn1;
TIPS:在類(lèi)上會(huì)添加:import android.widget.Button;
3、接著在類(lèi)中onCreate的方法內(nèi)執(zhí)行以下操作:
(1)、給btn1賦值,即設(shè)置布局文件中的Button按鈕id進(jìn)行關(guān)聯(lián),如:
btn1 = (Button) findViewById(R.id.btn1);
(2)、給btn1綁定點(diǎn)擊事件:
btn1.setOnClickListener(new View.OnClickListener(){
@Override
public void onClick(View v){
}
});
TIPS:在類(lèi)上會(huì)添加:import android.view.View;
(3)、 給bnt1添加點(diǎn)擊響應(yīng)事件:
btn1.setOnClickListener(new View.OnClickListener(){
@Override
public void onClick(View v){
//Intent是一種運(yùn)行時(shí)綁定(run-time binding)機(jī)制,它能在程序運(yùn)行過(guò)程中連接兩個(gè)不同的組件。
//page1為先前已添加的類(lèi),并已在AndroidManifest.xml內(nèi)添加活動(dòng)事件(activity android:name="page1"/activity),在存放資源代碼的文件夾下下,
Intent i = new Intent(MainActivity.this , page1.class);
////啟動(dòng)
startActivity(i);
}
});
TIPS:在類(lèi)上會(huì)添加:import android.content.Intent;
4、最后,就可以就可以跳轉(zhuǎn)到下一個(gè)頁(yè)面了。
Android模塊化頁(yè)面跳轉(zhuǎn)Scheme
Github
通過(guò)注解實(shí)現(xiàn)Uri頁(yè)面跳轉(zhuǎn)
支持參數(shù)自動(dòng)解析
使用場(chǎng)景:
1、應(yīng)用內(nèi)服務(wù)端下發(fā)uri進(jìn)行頁(yè)面跳轉(zhuǎn)
2、通知欄點(diǎn)擊,攜帶uri進(jìn)行頁(yè)面跳轉(zhuǎn)
3、其他應(yīng)用通過(guò)uri調(diào)起進(jìn)行頁(yè)面跳轉(zhuǎn)
注:activity的注解格式:group/path
group為各個(gè)模塊的唯一字符串,不同模塊不可重復(fù)
接入:
使用姿勢(shì):
根build.gradle
module依賴:
使用姿勢(shì):
場(chǎng)景1:應(yīng)用內(nèi)服務(wù)端下發(fā)uri進(jìn)行頁(yè)面跳轉(zhuǎn)
1、在需要支持uri跳轉(zhuǎn)的Activity增加注解@SchemePath("{隨意填,唯一字符串}")
2、跳轉(zhuǎn)事件
注:參數(shù)支持
uri支持參數(shù),如" scheme://ModuleA/Activity?data=1time=20200714hasData=true "
Activity的參數(shù)增加@SchemeExtra注解,如
場(chǎng)景2:通知欄點(diǎn)擊,攜帶uri進(jìn)行頁(yè)面跳轉(zhuǎn)
1、應(yīng)用首頁(yè)Activity增加注解@SchemePath("{隨意填}")
2、application調(diào)用初始化
3、啟動(dòng)頁(yè),通知欄點(diǎn)擊入口
場(chǎng)景三:其他應(yīng)用通過(guò)uri調(diào)起進(jìn)行頁(yè)面跳轉(zhuǎn)
1、注冊(cè)中轉(zhuǎn)activity
android中的scheme是一種頁(yè)面內(nèi)跳轉(zhuǎn)協(xié)議,是一種非常好的實(shí)現(xiàn)機(jī)制,通過(guò)定義自己的scheme協(xié)議,可以非常方便跳轉(zhuǎn)app中的各個(gè)頁(yè)面;通過(guò)scheme協(xié)議,服務(wù)器可以定制化告訴App跳轉(zhuǎn)那個(gè)頁(yè)面,可以通過(guò)通知欄消息定制化跳轉(zhuǎn)頁(yè)面,可以通過(guò)H5頁(yè)面跳轉(zhuǎn)頁(yè)面等。
客戶端應(yīng)用可以在服務(wù)端注冊(cè)一個(gè)URL Scheme,該Scheme用于從瀏覽器或其他應(yīng)用啟動(dòng)本應(yīng)用。通過(guò)指定的URL字段,可以讓?xiě)?yīng)用在被調(diào)起后直接打開(kāi)某些特定界面,比如商品詳情頁(yè),活動(dòng)詳情頁(yè)等。也可以執(zhí)行某些特定的動(dòng)作,如完成支付等。也可以在應(yīng)用內(nèi)通過(guò)html頁(yè)來(lái)直接調(diào)用顯示app內(nèi)的某個(gè)界面。綜上URL Schema使用場(chǎng)景大致分以下幾種:
一個(gè)完整的Scheme的協(xié)議格式由 scheme、userInfo、host、port、path、query和fragment 組成。結(jié)構(gòu)如下:
scheme://是固定的格式。userInfo@ 可以省略,host 是必須的。port 、query 和 fragment 也是可以省略的。
其中scheme既可以是Android已經(jīng)定義好的協(xié)議,也可使用我們自定義的。Android 常見(jiàn)的scheme 協(xié)議有:content 、file、http 等。如果我們自定義協(xié)議就可以隨意使用一些字符串來(lái)限定協(xié)議。當(dāng)然最好是有一定含義的字符串。如下面的協(xié)議:
首先配置需要跳轉(zhuǎn)的Activity,Mainifest文件配置如下:
SchemeActivity
在網(wǎng)頁(yè)中調(diào)用:
運(yùn)行結(jié)果如下:
其他運(yùn)用方式都基于樣例,源碼地址: URL_SchemeDemo
安卓實(shí)現(xiàn)頁(yè)面跳轉(zhuǎn)及傳遞參數(shù)教程:
用類(lèi)名跳轉(zhuǎn)
Intent負(fù)責(zé)對(duì)應(yīng)用中一次操作的動(dòng)作、動(dòng)作涉及數(shù)據(jù)、附加數(shù)據(jù)進(jìn)行描述,Android則根據(jù)此Intent的描述, 負(fù)責(zé)找到對(duì)應(yīng)的組件,將 Intent傳遞給調(diào)用的組件,并完成組件的調(diào)用。Intent在這里起著實(shí)現(xiàn)調(diào)用者與被調(diào)用者之間的解耦作用。
Intent傳遞過(guò)程中,要找到目標(biāo)消費(fèi)者(另一個(gè)Activity,IntentReceiver或Service),也就是Intent的響應(yīng)者。
Java代碼?package?com.Android;?
import?android.app.Activity;?
import?android.content.Intent;?
import?android.os.Bundle;?
import?android.view.View;?
import?android.view.View.OnClickListener;?
public?class?FormStuff?extends?Activity?{?
@Override?
public?void?onCreate(Bundle?savedInstanceState)?{?
super.onCreate(savedInstanceState);?
setContentView(R.layout.formstuff);?
final?ImageButton?button?=?(ImageButton)?findViewById(R.id.android_button);?
button.setOnClickListener(new?OnClickListener()?{?
public?void?onClick(View?v)?{?
//?用類(lèi)名跳轉(zhuǎn),需要在AndroidManifest.xml中申明activity?
Intent?intent?=?new?Intent(FormStuff.this,?HelloTabWidget.class);?
startActivity(intent);?
}?
});?
}?
復(fù)制代碼Xml代碼??xml?version="1.0"?encoding="utf-8"??
manifest?xmlns:android=""?
package="com.Android"?android:versionCode="1"?android:versionName="1.0"?
application?android:icon="@drawable/icon"?android:theme="@android:style/Theme.NoTitleBar"?
activity?android:name=".FormStuff"?android:label="@string/app_name"?
intent-filter?
action?android:name="android.intent.action.MAIN"?/?
category?android:name="android.intent.category.LAUNCHER"?/?
/intent-filter?
/activity?
!--申明activity--?
activity?android:name="HelloTabWidget"/activity?
/application?
uses-sdk?android:minSdkVersion="4"?/?
/manifest
使用Action跳轉(zhuǎn)實(shí)現(xiàn)
使用Action跳轉(zhuǎn),如果有一個(gè)程序的 AndroidManifest.xml中的某一個(gè)Activity的IntentFilter段中定義了包含了相同的Action那么這個(gè)Intent 就與這個(gè)目標(biāo)Action匹配。如果這個(gè)IntentFilter段中沒(méi)有定義 Type,Category,那么這個(gè) Activity就匹配了。但是如果手機(jī)中有兩個(gè)以上的程序匹配,那么就會(huì)彈出一個(gè)對(duì)話可框來(lái)提示說(shuō)明。
Action的值在Android中有很多預(yù)定義,如果想直接轉(zhuǎn)到你自己定義的Intent接收者,可以在接收者的 IntentFilter中加入一個(gè)自定義的Action值(同時(shí)要設(shè)定 Category值為"android.intent.category.DEFAULT"),在Intent中設(shè)定該值為Intent的 Action,就直接能跳轉(zhuǎn)到自己的Intent接收者中。因?yàn)檫@個(gè)Action在系統(tǒng)中是唯一的。
data/type,可以用Uri來(lái)做為data,比如Uri uri = Uri.parse();
Intent i = new Intent(Intent.ACTION_VIEW,uri);手機(jī)的Intent分發(fā)過(guò)程中,會(huì)根據(jù) 的scheme判斷出數(shù)據(jù)類(lèi)型type
手機(jī)的Brower則能匹配它,在Brower的Manifest.xml中的IntenFilter中首先有ACTION_VIEW Action,也能處理http:的type。
至于分類(lèi)Category,一般不要去在Intent中設(shè)置它,如果寫(xiě)Intent的接收者,就在Manifest.xml的 Activity的 IntentFilter中包含android.category.DEFAULT,這樣所有不設(shè)置 Category(Intent.addCategory(String c);)的Intent都會(huì)與這個(gè)Category匹配。
extras(附加信息),是其它所有附加信息的集合。使用extras可以為組件提供擴(kuò)展信息,比如,如果要執(zhí)行“發(fā)送電子郵件”這個(gè)動(dòng)作,可以將電子郵件的標(biāo)題、正文等保存在extras里,傳給電子郵件發(fā)送組件。
Java代碼?package?com.android.edit_text;?
import?android.app.Activity;?
import?android.content.Intent;?
import?android.os.Bundle;?
import?android.view.KeyEvent;?
import?android.view.View;?
import?android.widget.EditText;?
public?class?MyEditText?extends?Activity?{?
private?TextView?m_TextView;?
private?EditText?m_EditText;?
@Override?
public?void?onCreate(Bundle?savedInstanceState)?{?
super.onCreate(savedInstanceState);?
setContentView(R.layout.main);?
m_EditText?=?(EditText)?this.findViewById(R.id.EditText01);?
m_EditText.setOnKeyListener(editTextKeyListener);?
}?
private?EditText.OnKeyListener?editTextKeyListener?=?new?EditText.OnKeyListener()?{?
@Override?
public?boolean?onKey(View?arg0,?int?arg1,?KeyEvent?arg2)?{?
//?action跳轉(zhuǎn),需要在AndroidManifest.xml中配置action?
Intent?i?=?new?Intent("android.intent.action.mydialog");?
MyEditText.this.startActivity(i);?
return?false;?
}?
};?
}?
復(fù)制代碼Xml代碼??xml?version="1.0"?encoding="utf-8"??
manifest?xmlns:android=""?
package="com.android.edit_text"?android:versionCode="1"?
android:versionName="1.0"?
application?android:icon="@drawable/icon"?android:label="@string/app_name"?
activity?android:name=".MyEditText"?android:label="@string/app_name"?
intent-filter?
action?android:name="android.intent.action.MAIN"?/?
category?android:name="android.intent.category.LAUNCHER"?/?
/intent-filter?
/activity?
!--配置跳轉(zhuǎn)activity--?
activity?android:name="com.android.dialog.MyDialog"?
intent-filter?
!--配置action路徑--?
action?android:name="android.intent.action.mydialog"?/?
category?android:name="android.intent.category.DEFAULT"?/?
/intent-filter?
/activity?
/application?
uses-sdk?android:minSdkVersion="7"?/
/manifest
01
進(jìn)入墨刀界面,將需要進(jìn)行交互動(dòng)作的界面扔進(jìn)墨刀中打開(kāi)。
02
在左側(cè)左鍵選擇“鏈接區(qū)域”,然后拖動(dòng)到界面中需要進(jìn)行交互設(shè)計(jì)的按鈕位置。
03
位置確定之后,左鍵點(diǎn)擊區(qū)域旁邊的小按鈕,拖動(dòng)到目標(biāo)界面中。
04
進(jìn)入預(yù)覽模式,點(diǎn)擊剛才設(shè)置的區(qū)域就能夠進(jìn)行跳轉(zhuǎn)了。
android頁(yè)面跳轉(zhuǎn)的話,現(xiàn)在更多是流行使用fragment來(lái)進(jìn)行切換,還有就是intent來(lái)進(jìn)行跳轉(zhuǎn)。