网站建设优化公司呼和浩特,陕西省住房和城乡建设网站,温州论坛散讲温州,网站快速排名的方法今日想法今天是想把做一个跳转页面的时候调到H5页面去#xff0c;但是这个页面我用app来承载#xff0c;不要调到浏览器去。所以用到了下方三个东西。Viewbindingbuild.gradle配置首先在app模块的build.gradle里添加一下代码默认情况下#xff0c;每一个布局xml文件都会生成…今日想法今天是想把做一个跳转页面的时候调到H5页面去但是这个页面我用app来承载不要调到浏览器去。所以用到了下方三个东西。Viewbindingbuild.gradle配置首先在app模块的build.gradle里添加一下代码默认情况下每一个布局xml文件都会生成一个对应的Binding类当然如果不需要为该xml生成Binding类可以在xml的根布局中配置tools:viewBindingIgnore“true”。传统设置布局setContentView(R.layout.activity_web_view_to_h5);viewbinding设置布局(Activity)binding ActivityMainBinding.inflate(getLayoutInflater());
setContentView(binding.getRoot());用法也很简单在Activity的生命周期oncreate()中直接通过binding点名字的方式就可以获取到控件实例消除了findViewById的模版代码。这里可以看到setContentView的入参写法都变了因为可通过XXXBinding类的getRoot函数获取到布局的根View再通过setContentView添加到Activity。viewbinding设置布局(Fragment)Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,Bundle savedInstanceState) {binding FragmentLoginBinding.inflate(inflater,container,false);return binding.getRoot();
}viewbinding设置布局(RecyclerView.Adapter)调用控件binding.控件ID即可。WebView首先我新创了一个空的Activity添加代码。?xml version1.0 encodingutf-8?
androidx.constraintlayout.widget.ConstraintLayout xmlns:androidhttp://schemas.android.com/apk/res/androidxmlns:apphttp://schemas.android.com/apk/res-autoxmlns:toolshttp://schemas.android.com/toolsandroid:layout_widthmatch_parentandroid:layout_heightmatch_parenttools:context.ui.activity.WebViewToH5WebViewandroid:layout_widthmatch_parentandroid:layout_heightmatch_parentandroid:idid/web//androidx.constraintlayout.widget.ConstraintLayoutpackage com.example.intelligentwatch.ui.activity;import android.os.Bundle;
import android.webkit.WebChromeClient;
import android.webkit.WebViewClient;
import androidx.appcompat.app.AppCompatActivity;
import com.example.intelligentwatch.databinding.ActivityWebViewToH5Binding;public class WebViewToH5 extends AppCompatActivity {private ActivityWebViewToH5Binding binding;Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);binding ActivityWebViewToH5Binding.inflate(getLayoutInflater());setContentView(binding.getRoot());//设置WebView支持JavaScript脚本binding.web.getSettings().setJavaScriptEnabled(true);//当需要跳转网页时目标网页仍在当前WebView中显示binding.web.setWebViewClient(new WebViewClient());//当需要跳转网页的时候直接调到系统浏览器去显示
// binding.web.setWebChromeClient(new WebChromeClient());//传入相应浏览器网址,即可展示相应网页内容,这里用的是百度binding.web.loadUrl(https://baidu.com);}
}跳转到这个Activity就可以自动打开百度了。Navigation这是jetpack库中的一个框架只能绑定在FragmentContainerView容器中一个FragmentContainerView容器对应绑定一个navigation文件。从Fragment跳到Fragment或Activity都可以。但是Activity跳到Fragment或Activity之间的跳转就只能老老实实startActivity了。所以开头只能是Fragment不然怎么叫FragmentContainerView容器呢FragmentContainerView容器用来承载fragment的。本来是叫fragment的不过androidx更新后现在推荐叫FragmentContainerView也就是下面这个。用 app:navGraphnavigation/nav_graph / 来绑定navigation进行页面的跳转。androidx.fragment.app.FragmentContainerViewandroid:idid/nav_host_fragment_content_mainandroid:nameandroidx.navigation.fragment.NavHostFragmentandroid:layout_width0dpandroid:layout_height0dpapp:defaultNavHosttrueapp:layout_constraintBottom_toBottomOfparentapp:layout_constraintEnd_toEndOfparentapp:layout_constraintStart_toStartOfparentapp:layout_constraintTop_toTopOfparentapp:navGraphnavigation/nav_graph /
/androidx.constraintlayout.widget.ConstraintLayoutnavigation绑定和跳转目标注释都写了自己看吧。?xml version1.0 encodingutf-8?
navigation xmlns:androidhttp://schemas.android.com/apk/res/androidxmlns:apphttp://schemas.android.com/apk/res-auto!--给fragmentUI控件绑定--android:idid/nav_graph.xml!--fragment初始页是哪个--app:startDestinationid/LoginFragmentfragment!-- 设置id别人才找得到--android:idid/LoginFragment!-- 会自动搜你项目的所有fragment让你选择这个子元素哪个fragment--android:namecom.example.intelligentwatch.ui.fragment.LoginFragmentaction!--这个动作的名字给点击事件绑定的--android:idid/toAboutActivity!--跳到哪个地方--app:destinationid/about_activity/actionandroid:idid/action_LoginFragment_to_WebView_activityapp:destinationid/WebView_activity //fragmentactivityandroid:idid/about_activityandroid:namecom.example.intelligentwatch.ui.activity.AboutCompany_Activity/activityactivityandroid:idid/WebView_activityandroid:namecom.example.intelligentwatch.ui.activity.WebViewToH5_Activity/activity/navigation也可以在design页面进行可视化设置。通过小圆球拖动来指定调到哪个fragment。点击事件中绑定Override
public void onClick(View v) {int id v.getId();switch (id){case R.id.button_first:Navigation.findNavController(v).navigate(R.id.WebView_activity);break;default:break;}
}大功告成。过几天再康康Glide图片加载框架的使用。