自己用iis怎么建設(shè)網(wǎng)站百度小說搜索風(fēng)云排行榜
今日想法
今天是想把做一個(gè)跳轉(zhuǎn)頁面的時(shí)候調(diào)到H5頁面去,但是這個(gè)頁面我用app來承載,不要調(diào)到瀏覽器去。
所以用到了下方三個(gè)東西。
Viewbinding
build.gradle配置
首先在app模塊的build.gradle里添加一下代碼

默認(rèn)情況下,每一個(gè)布局xml文件都會(huì)生成一個(gè)對應(yīng)的Binding類
當(dāng)然,如果不需要為該xml生成Binding類,可以在xml的根布局中配置tools:viewBindingIgnore=“true”。
傳統(tǒng)設(shè)置布局
setContentView(R.layout.activity_web_view_to_h5);
viewbinding設(shè)置布局(Activity)
binding = ActivityMainBinding.inflate(getLayoutInflater());
setContentView(binding.getRoot());
用法也很簡單,在Activity的生命周期oncreate()中,直接通過binding點(diǎn)名字的方式就可以獲取到控件實(shí)例,消除了findViewById的模版代碼。
這里可以看到,setContentView的入?yún)懛ǘ甲兞?#xff0c;因?yàn)榭赏ㄟ^XXXBinding類的getRoot函數(shù)獲取到布局的根View,再通過setContentView添加到Activity。
viewbinding設(shè)置布局(Fragment)
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,Bundle savedInstanceState) {binding = FragmentLoginBinding.inflate(inflater,container,false);return binding.getRoot();
}
viewbinding設(shè)置布局(RecyclerView.Adapter)

調(diào)用控件
binding.控件ID即可。
WebView
首先我新創(chuàng)了一個(gè)空的Activity,添加代碼。
<?xml version="1.0" encoding="utf-8"?>
<androidx.constraintlayout.widget.ConstraintLayout 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:layout_width="match_parent"android:layout_height="match_parent"tools:context=".ui.activity.WebViewToH5"><WebViewandroid:layout_width="match_parent"android:layout_height="match_parent"android:id="@+id/web"/></androidx.constraintlayout.widget.ConstraintLayout>
package 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());//設(shè)置WebView支持JavaScript腳本binding.web.getSettings().setJavaScriptEnabled(true);//當(dāng)需要跳轉(zhuǎn)網(wǎng)頁時(shí)目標(biāo)網(wǎng)頁仍在當(dāng)前WebView中顯示binding.web.setWebViewClient(new WebViewClient());//當(dāng)需要跳轉(zhuǎn)網(wǎng)頁的時(shí)候直接調(diào)到系統(tǒng)瀏覽器去顯示
// binding.web.setWebChromeClient(new WebChromeClient());//傳入相應(yīng)瀏覽器網(wǎng)址,即可展示相應(yīng)網(wǎng)頁內(nèi)容,這里用的是百度binding.web.loadUrl("https://baidu.com");}
}
跳轉(zhuǎn)到這個(gè)Activity就可以自動(dòng)打開百度了。
Navigation
這是jetpack庫中的一個(gè)框架,只能綁定在FragmentContainerView容器中,一個(gè)FragmentContainerView容器對應(yīng)綁定一個(gè)navigation文件。
從Fragment跳到Fragment或Activity都可以。
但是Activity跳到Fragment或Activity之間的跳轉(zhuǎn)就只能老老實(shí)實(shí)startActivity了。
所以開頭只能是Fragment,不然怎么叫FragmentContainerView容器呢?
FragmentContainerView容器
用來承載fragment的。
本來是叫fragment的,不過androidx更新后現(xiàn)在推薦叫FragmentContainerView,也就是下面這個(gè)。用 app:navGraph="@navigation/nav_graph" /> 來綁定navigation進(jìn)行頁面的跳轉(zhuǎn)。
<androidx.fragment.app.FragmentContainerViewandroid:id="@+id/nav_host_fragment_content_main"android:name="androidx.navigation.fragment.NavHostFragment"android:layout_width="0dp"android:layout_height="0dp"app:defaultNavHost="true"app:layout_constraintBottom_toBottomOf="parent"app:layout_constraintEnd_toEndOf="parent"app:layout_constraintStart_toStartOf="parent"app:layout_constraintTop_toTopOf="parent"app:navGraph="@navigation/nav_graph" />
</androidx.constraintlayout.widget.ConstraintLayout>
navigation綁定和跳轉(zhuǎn)目標(biāo)
注釋都寫了,自己看吧。
<?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"<!--給fragmentUI控件綁定-->android:id="@+id/nav_graph.xml"<!--fragment初始頁是哪個(gè)-->app:startDestination="@id/LoginFragment"><fragment<!-- 設(shè)置id別人才找得到-->android:id="@+id/LoginFragment"<!-- 會(huì)自動(dòng)搜你項(xiàng)目的所有fragment,讓你選擇這個(gè)子元素哪個(gè)fragment-->android:name="com.example.intelligentwatch.ui.fragment.LoginFragment"><action<!--這個(gè)動(dòng)作的名字,給點(diǎn)擊事件綁定的-->android:id="@+id/toAboutActivity"<!--跳到哪個(gè)地方-->app:destination="@id/about_activity"/><actionandroid:id="@+id/action_LoginFragment_to_WebView_activity"app:destination="@id/WebView_activity" /></fragment><activityandroid:id="@+id/about_activity"android:name="com.example.intelligentwatch.ui.activity.AboutCompany_Activity"></activity><activityandroid:id="@+id/WebView_activity"android:name="com.example.intelligentwatch.ui.activity.WebViewToH5_Activity"></activity></navigation>
也可以在design頁面進(jìn)行可視化設(shè)置。

通過小圓球拖動(dòng),來指定調(diào)到哪個(gè)fragment。

點(diǎn)擊事件中綁定
@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圖片加載框架的使用。