重庆分公司,新征程启航
为企业提供网站建设、域名注册、服务器等服务
下面关于界面跳转的例子来自于android学习手册,如果想看实际运行的例子的话,请去下载,并且可以看源码和文档。android学习手册包含9个章节,108个例子,源码文档随便看,例子都是可交互,可运行, 源码采用android studio目录结构,高亮显示代码,文档都采用文档结构图显示,可以快速定位。360手机助手中下载,图标上有贝壳
目前创新互联已为上千的企业提供了网站建设、域名、网页空间、网站托管、服务器托管、企业网站设计、原阳网站维护等服务,公司将坚持客户导向、应用为本的策略,正道将秉承"和谐、参与、激情"的文化,与客户和合作伙伴齐心协力一起成长,共同发展。
android使用,从一个Activity(界面)跳转到另一个Activity时,需要使用到Intent来启动Activity。在Intent使用时,分为显式调用和隐式调用2类,显式调用就是直接调用另一个Activity的class类,隐式调用需要通过调用另一个Activity的action 来启动另一个Activity,详细如下:
Intent在android中的定义为:public Intent (Context packageContext , Class? cls);
1、显式调用---直接调用Activity的Class类
例,Activity1调用Activity2
Intent intent = new Intent(this , Activity2.class);
startActivity(intent);
2、隐式调用
Activity1隐式调用Activity2时需要在AndroidManifest.xml文件中配置Activity2的action和category,具体添加下面的代码到Activity2的定义中
intent-filter
action android:name="myaction2"/
category android:name="android.intent.category.DEFAULT"/
category android:name="mycategory" /
/intent-filter
接着同样使用intent来启动Activity,代码如下:
Intent intent = new Intent("myaction2");
startActivity(intent);
这样就可以启动Activity2
注:在使用intent隐式调用Activity时会遇到多个Activity的intent-filter中的action和category相同时,这时android会先弹出一个选择界面的窗口,显式要启动的Activity列表,根据用户的选择来启动Activity,如Activity2和Activity3的action和category相同
Activity android:name=".Activity2"
intent-filter
action android:name="myaction2"/
category android:name="android.intent.category.DEFAULT"/
category android:name="myCategory" /
/intent-filter
/Activity
Activity android:name=".Activity3"
intent-filter
action android:name="myaction2"/
category android:name="android.intent.category.DEFAULT"/
category android:name="myCategory" /
/intent-filter
/Activity
启动Activity代码如下:
Intent intent = new("action2");
intent.addCategory("myCategory");
startActivity(intent);
这时就会弹出Acvity的选择窗口,选择启动activity2还是activity3
1、A跳转到B,需要经历A的onPause,B的onCreate,onStart,onResume,所以在这几个方法中不能做耗时的操作。
2、一进入页面不可见的视图可以用ViewStub做延迟加载。
3、网络请求可以在加载完页面控件后再进行。
4、慎用多进程。
5、初始化AnimationDrawable、TypedArray数组和Typeface会很耗时,并且AnimationDrawable特别耗内存,一定要注意他们的初始化时机;
一、启动android默认浏览器
在Android程序中我们可以通过发送隐式Intent来启动系统默认的浏览器。如果手机本身安装了多个浏览器而又没有设置默认浏览器的话,系统将让用户选择使用哪个浏览器来打开连接。关于Intent的更多内容请参考《常用Intent》
示例1
Intent intent =newIntent();
intent.setAction("android.intent.action.VIEW");
Uri content_url =Uri.parse("");
intent.setData(content_url);
startActivity(intent);
这样子,android就可以调用起手机默认的浏览器访问。
二、启动指定浏览器
在Android程序中我们可以通过发送显式Intent来启动指定的浏览器。
启动Android原生浏览器
示例2
Intent intent =newIntent();
intent.setAction("android.intent.action.VIEW");
Uri content_url =Uri.parse("");
intent.setData(content_url);
intent.setClassName("com.android.browser","com.android.browser.BrowserActivity");
startActivity(intent);
只要修改以intent.setClassName("com.android.browser","com.android.browser.BrowserActivity");
中相应的应用程序packagename 和要启动的activity即可启动其他浏览器来
uc浏览器":"com.uc.browser", "com.uc.browser.ActivityUpdate“
opera浏览器:"com.opera.mini.android", "com.opera.mini.android.Browser"
qq浏览器:"com.tencent.mtt", "com.tencent.mtt.MainActivity"
进入墨刀界面,将需要进行交互动作的界面扔进墨刀中打开。
在左侧左键选择“链接区域”,然后拖动到界面中需要进行交互设计的按钮位置。
位置确定之后,左键点击区域旁边的小按钮,拖动到目标界面中。
进入预览模式,点击刚才设置的区域就能够进行跳转了。
举例:有两个activity FirstActivity、SecondActivity
跳转实现方法:
1、第一种(带传参):
2、第二种:
3、第三种 com.example.yuan.e06_gridview是你的包名:
4、第四种 com.example.yuan.e06_gridview是你的包名:
5、第五种 com.yuan是你的文件夹路径:
Android模块化页面跳转Scheme
Github
通过注解实现Uri页面跳转
支持参数自动解析
使用场景:
1、应用内服务端下发uri进行页面跳转
2、通知栏点击,携带uri进行页面跳转
3、其他应用通过uri调起进行页面跳转
注:activity的注解格式:group/path
group为各个模块的唯一字符串,不同模块不可重复
接入:
使用姿势:
根build.gradle
module依赖:
使用姿势:
场景1:应用内服务端下发uri进行页面跳转
1、在需要支持uri跳转的Activity增加注解@SchemePath("{随意填,唯一字符串}")
2、跳转事件
注:参数支持
uri支持参数,如" scheme://ModuleA/Activity?data=1time=20200714hasData=true "
Activity的参数增加@SchemeExtra注解,如
场景2:通知栏点击,携带uri进行页面跳转
1、应用首页Activity增加注解@SchemePath("{随意填}")
2、application调用初始化
3、启动页,通知栏点击入口
场景三:其他应用通过uri调起进行页面跳转
1、注册中转activity