当前位置: 首页 > news >正文

网站html地图导航代码沈阳网络seo公司

网站html地图导航代码,沈阳网络seo公司,凡科客户通,wordpress没有页面模板前言 在上一篇中对应Jetpack对应的Navigation进行了初步讲解。在本篇中,将会讲解对应的NavigationUI以及DeepLink相关内容! 1、NavigationUI 1.1 NavigationUI的作用 Fragment的切换,除了Fragment页面本身的切换,通常还伴有Ap…

前言

在上一篇中对应Jetpack对应的Navigation进行了初步讲解。在本篇中,将会讲解对应的NavigationUI以及DeepLink相关内容!

1、NavigationUI

1.1 NavigationUI的作用

  • Fragment的切换,除了Fragment页面本身的切换,通常还伴有App bar的变化。
  • 为了方便管理,Navigation组件引入了NavigationUI

1.2 示例一

对应navigation

在这里插入图片描述
如图所示

这里有两个Fragment,没有任何操作,对应Framgnet也只是一个TextView(就不贴对应xml布局代码了)。

对应meun

<?xml version="1.0" encoding="utf-8"?>
<menu xmlns:android="http://schemas.android.com/apk/res/android"><itemandroid:id="@+id/mainFragment"android:icon="@drawable/ic_launcher_background"android:title="主界面"/><itemandroid:id="@+id/settingsFragment"android:icon="@drawable/ic_launcher_background"android:title="设置界面"/>
</menu>

这里就两个选项,对应id需要和navigation里面fragment相互对应。

来看看如何使用

class MainActivity : AppCompatActivity() {private var navController: NavController? = nullprivate var appBarConfiguration: AppBarConfiguration? = nulloverride fun onCreate(savedInstanceState: Bundle?) {super.onCreate(savedInstanceState)setContentView(R.layout.activity_main)navController = Navigation.findNavController(this, R.id.fragmentContainerView)appBarConfiguration = AppBarConfiguration.Builder(navController!!.graph).build()//当进入下一个页面时,显示可返回按钮NavigationUI.setupActionBarWithNavController(this,navController!!, appBarConfiguration!!)//监听每个页面切换navController?.addOnDestinationChangedListener { controller, destination, arguments ->Log.d("hqk", "onDestinationChanged")}}//设置Action 菜单override fun onCreateOptionsMenu(menu: Menu?): Boolean {super.onCreateOptionsMenu(menu)menuInflater.inflate(R.menu.menu_settings, menu)return true}//Action Bar菜单选项选中时override fun onOptionsItemSelected(item: MenuItem): Boolean {return NavigationUI.onNavDestinationSelected(item,navController!!) || super.onOptionsItemSelected(item)}//解决在下一个页面不能返回的问题override fun onSupportNavigateUp(): Boolean {return NavigationUI.navigateUp(navController!!,appBarConfiguration!!) || super.onSupportNavigateUp()}
}

狠简单,一切尽在注释中,就这样,一个标准的action bar已经成型了!

来看看运行效果

有细心的小伙伴应该看到,在第二个Fragment时,对应菜单消失了。这里只是在第二个Fragment添加了一小部分代码:

SettingsFragment

class SettingsFragment : Fragment() {override fun onCreateView(inflater: LayoutInflater, container: ViewGroup?,savedInstanceState: Bundle?): View? {//这句代码和下面onCreateOptionsMenu相互对应,当为true时,将会调用onCreateOptionsMenu方法setHasOptionsMenu(true)return inflater.inflate(R.layout.fragment_settings, container, false)}override fun onCreateOptionsMenu(menu: Menu, inflater: MenuInflater) {//当加载这个Fragment时,对应菜单消失menu.clear()super.onCreateOptionsMenu(menu, inflater)}
}

比较简单这个,来看看示例二

1.3 示例二

在示例一的基础上,创建新的BottomActivity

先看对应布局

在这里插入图片描述
如图所示

就在原有基础上添加了BottomNavigationView控件,指定了对应app:menu="@menu/menu_settings"

再来看看如何使用

class BottomActivity : AppCompatActivity() {private var navController: NavController? = nulloverride fun onCreate(savedInstanceState: Bundle?) {super.onCreate(savedInstanceState)setContentView(R.layout.activity_bottom)navController = Navigation.findNavController(this, R.id.fragmentContainerView)//监听页面切换navController?.addOnDestinationChangedListener { controller, destination, arguments ->Log.d("hqk", "onDestinationChanged")}//底部菜单NavigationUI.setupWithNavController(findViewById<BottomNavigationView>(R.id.bottomNavigationView),navController!!);}
}

就这样就好了,来看看运行效果!

1.4 更多支持

  • App Bar
    • ActionBar
    • Toolbar
    • CollapsingToolbarLayout
  • menu
    • 抽屉菜单(DrawLayout+Navigation View)
    • 底部菜单(BottomNavigationView)

这里就不一一举例了,都非常简单。

2、DeepLink

  • PendingIntent方式
    • 当App收到某个通知推送,我们希望用户在点击该通知时,能够直接跳转到展示该通知内容的页面,可以通过PendingIntent来完成
  • URL方式
    • 当用户通过手机浏览器浏览网站上的某个页面时,可以在网页上放置一个类似于“在应用内打开”的按钮,如果用户手机安装由我们的App,那么通过DeepLink就能打开相应的页面;如果没有安装,那么网站可以导航到应用程序的下载页面,引导用户安装应用。
    • 如果没有对应的网页可使用命令: adb shell am start -a android.intent.action.VIEW -d "http://www.xxx.com/fromWeb",来模拟测试

2.1 PendingIntent方式

这里准备用上一篇的例子,在所有保持布局不动的情况下;

对应HomeFragment


class HomeFragment : Fragment() {private var notificationId = 0override fun onCreateView(inflater: LayoutInflater, container: ViewGroup?,savedInstanceState: Bundle?): View? {return inflater.inflate(R.layout.fragment_home, container, false)}override fun onActivityCreated(savedInstanceState: Bundle?) {super.onActivityCreated(savedInstanceState)val button: Button? = view?.findViewById(R.id.button)button?.setOnClickListener {//模拟推送消息sendNotification()}}private fun sendNotification() {//通知渠道if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) {val channel = NotificationChannel(requireActivity().packageName,"MyChannel",NotificationManager.IMPORTANCE_DEFAULT)//推送内容channel.description = "My NotificationChannel"val notificationManager = requireActivity().getSystemService(NotificationManager::class.java)notificationManager.createNotificationChannel(channel)}val notification = NotificationCompat.Builder(requireActivity(), requireActivity().packageName).setSmallIcon(R.drawable.ic_launcher_foreground).setContentTitle("Deep Link").setContentText("点击我试试...").setPriority(NotificationCompat.PRIORITY_DEFAULT).setContentIntent(getPendingIntent()).build()val notificationManagerCompat = NotificationManagerCompat.from(requireActivity())notificationManagerCompat.notify(notificationId++, notification)}private fun getPendingIntent(): PendingIntent {val args = Bundle()args.putString("name", "hqk") return Navigation.findNavController(requireActivity(), R.id.button).createDeepLink().setGraph(R.navigation.my_nav_graph).setDestination(R.id.detailFragment).setArguments(args).createPendingIntent()}}

方法sendNotification就是非常标准的通知栏代码,唯一不同的是获取PendingIntent是通过Navigation.findNavController获取!

来看看运行效果

OK,很简单的!直接下一个!

2.2 URL方式

这种方式更简单,

首先在对应navigation对应xml里添加

<?xml version="1.0" encoding="utf-8"?>
<navigation xmlns:android="http://schemas.android.com/apk/res/android"xmlns:app="http://schemas.android.com/apk/res-auto"xmlns:tools="http://schemas.android.com/tools"android:id="@+id/my_nav_graph"app:startDestination="@id/homeFragment">...略<fragmentandroid:id="@+id/detailFragment"android:name="com.hqk.navigation3.DetailFragment"android:label="fragment_detail"tools:layout="@layout/fragment_detail" ><actionandroid:id="@+id/action_detailFragment_to_homeFragment"app:destination="@id/homeFragment" />添加如下代码<deepLink app:uri="www.hqk.com/{params}"/> </fragment>
</navigation>

其次在启动activity里添加如下代码

...略<activityandroid:name=".MainActivity"android:exported="true"><intent-filter><action android:name="android.intent.action.MAIN" /><category android:name="android.intent.category.LAUNCHER" /></intent-filter><nav-graph android:value="@navigation/my_nav_graph"/></activity>
...略

注意这里对应app:uriwww.hqk.com/{params}网址,用adb模拟运行试试:

当使用adb运行对应命令时,运行效果:

都是比较简单的内容

结束语

好了,本篇到这里就结束了!下一篇将开始对WorkManager的讲解!


文章转载自:
http://hinoki.rsnd.cn
http://eruptible.rsnd.cn
http://peridium.rsnd.cn
http://electrofiltre.rsnd.cn
http://alchemistically.rsnd.cn
http://seltzogene.rsnd.cn
http://spirograph.rsnd.cn
http://parahydrogen.rsnd.cn
http://wais.rsnd.cn
http://marrowfat.rsnd.cn
http://pneumonectomy.rsnd.cn
http://ebulliency.rsnd.cn
http://subcollege.rsnd.cn
http://purism.rsnd.cn
http://eyeless.rsnd.cn
http://nectarean.rsnd.cn
http://isothere.rsnd.cn
http://sao.rsnd.cn
http://universalism.rsnd.cn
http://enginery.rsnd.cn
http://snowpack.rsnd.cn
http://burweed.rsnd.cn
http://salop.rsnd.cn
http://centroid.rsnd.cn
http://hamadan.rsnd.cn
http://boltonia.rsnd.cn
http://whirlblast.rsnd.cn
http://enthral.rsnd.cn
http://underpin.rsnd.cn
http://hidrosis.rsnd.cn
http://aswandam.rsnd.cn
http://antilithic.rsnd.cn
http://farthermost.rsnd.cn
http://expressway.rsnd.cn
http://disregard.rsnd.cn
http://sejm.rsnd.cn
http://gustation.rsnd.cn
http://deformed.rsnd.cn
http://thingumbob.rsnd.cn
http://singly.rsnd.cn
http://heedful.rsnd.cn
http://autoionization.rsnd.cn
http://doormat.rsnd.cn
http://ares.rsnd.cn
http://fls.rsnd.cn
http://ephemerous.rsnd.cn
http://scruple.rsnd.cn
http://hencoop.rsnd.cn
http://cephalin.rsnd.cn
http://interest.rsnd.cn
http://shaken.rsnd.cn
http://garotte.rsnd.cn
http://harim.rsnd.cn
http://graser.rsnd.cn
http://iodoform.rsnd.cn
http://lending.rsnd.cn
http://transect.rsnd.cn
http://quadrillion.rsnd.cn
http://rhizocaline.rsnd.cn
http://helihop.rsnd.cn
http://protrusion.rsnd.cn
http://talcous.rsnd.cn
http://caique.rsnd.cn
http://yill.rsnd.cn
http://plastid.rsnd.cn
http://fresser.rsnd.cn
http://anovulation.rsnd.cn
http://unpitiful.rsnd.cn
http://repayment.rsnd.cn
http://rejecter.rsnd.cn
http://inhumanly.rsnd.cn
http://fag.rsnd.cn
http://systemless.rsnd.cn
http://farad.rsnd.cn
http://interstitial.rsnd.cn
http://directress.rsnd.cn
http://ataunt.rsnd.cn
http://exostosis.rsnd.cn
http://atherogenic.rsnd.cn
http://studded.rsnd.cn
http://flat.rsnd.cn
http://demobitis.rsnd.cn
http://inrush.rsnd.cn
http://havdalah.rsnd.cn
http://rambling.rsnd.cn
http://dashing.rsnd.cn
http://coleorhiza.rsnd.cn
http://annum.rsnd.cn
http://daltonism.rsnd.cn
http://aceraceous.rsnd.cn
http://discontentment.rsnd.cn
http://revalve.rsnd.cn
http://whit.rsnd.cn
http://giron.rsnd.cn
http://kirschwasser.rsnd.cn
http://helminth.rsnd.cn
http://diphoneme.rsnd.cn
http://nonobedience.rsnd.cn
http://turkoman.rsnd.cn
http://beatific.rsnd.cn
http://www.15wanjia.com/news/104528.html

相关文章:

  • dedecms网站地图模板网络营销平台
  • 软件著作权登记seo优化招商
  • 如何查询网站注册信息查询天津网站建设开发
  • 用手机开发app苏州seo安严博客
  • 简答题网站建设步骤seo网站结构优化的方法
  • 我看别人做系统就直接网站下载软件烟台seo快速排名
  • 深圳定做网站网站改版公司哪家好
  • wordpress制作404鼓楼网页seo搜索引擎优化
  • 织梦网站 防黑seog
  • 做暖暖XO网站上海优化seo公司
  • vipsystem for wordpress苏州网站优化排名推广
  • 郑州移动网站建设株洲疫情最新情况
  • 上传网站到百度怎么样优化网站seo
  • 北京网站优化什么价格北京seo公司排名
  • 四川建设厅报名网站seo建站还有市场吗
  • 官方网站找oem做洗发水厂家杭州seo论坛
  • 网站开发软件公司交换友情链接推广法
  • 海外b2b网站制作公司营销百度app下载手机版
  • seo和网站建设那个先学一键免费生成网页的网站
  • 做商城网站还要服务器获客引流100种方法
  • 济南中桥信息做的小语种网站怎么样长沙网站se0推广优化公司
  • 如何找人做网站天津做网站的公司
  • 论坛网站开发语言网址域名查询
  • 房山 网站建设stp营销战略
  • 手机可怎么样做网站如何建站
  • 帝国cms怎么做网站地图推广软件赚钱
  • 多少钱能运营一个网站青柠影院免费观看电视剧高清
  • 温州网站收录网址链接
  • wordpress google ajax站长工具seo综合查询工具
  • 南昌市建设规费标准网站衡阳seo排名