فراخوانی سایت با استفاده از webview در Xamarin
چهارشنبه 7 بهمن 1394در این مقاله می خواهیم یک صفحه ی سایت را با استفاده از Webview client در یک صفحه ای ازوب فراخوانی نماییم، در واقع webview ابزاری برای نمایش سایت که به صورت استاتیک با گرفتن آدرس نمایش می دهد.
می توانید قبل از شروع مقاله ی فراخوانی سایت با استفاده از Webview در اندروید با جاوا را هم مطالعه نمایید.
در ابتدا در مورد webview کمی صحبت نماییم:
1-webview یک ابزاری است که برای نمایش صفحات وب از آن استفاده می شود، و صفحات سایت را به صورت استاتیک نمایش می دهد.
2-شامل قابلیت های یک مرورگر است که داخل یک نرم افزار یکپارچه شده است،مثل وردپرس، فلیپ بورد، Feedly
3-با استفاده از موتور webkit صفحات وب به همراه قابلیت های زوم و نمایش تاریخ و .. نمایش داده می شود.
4-اجرای webview کاملا ساده است ولی برای نمایش آنلاین و داینامیک استفاده نمی شود فقط برای نمایش استاتیک و به صورت آفلاین نمایش داده می شود.
در این مقاله در صفحه ی xaml خود یک webview قرار دهید که قرار است سایت مورد نظر را داخل آن بار گذاری نماییم.
داخل صفحه ی Layout:
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:orientation="vertical" android:layout_width="match_parent" android:layout_height="match_parent"> <WebView android:layout_width="match_parent" android:layout_height="match_parent" android:id="@+id/webView" /> </LinearLayout>
ابتدا می خواهیم یک صفحه ی html که شامل header,body و پاراگراف است را نمایش دهیم در واقع یک صفحه ی html قرار است ایجاد نماییم:
WebView mWebView = FindViewById<WebView>(Resource.Id.webView); string customHtml = "<html><body><h1>Hello, WebView</h1>" + "<h1>Heading 1</h1><h2>Heading 2</h2><h3>Heading 3</h3>" + "<p>This is a sample paragraph.</p>" + "</body></html>"; mWebView.LoadData(customHtml, "text/html", "UTF-8");
داخل activity مورد نظر webview مورد نظر را تعریف می کنیم، باید android.webkit را در ابتدا import نمایید.
و در مرحله ی بعدی باید فایل html مورد نظر را صدا بزنیم و نوع آن را encoding کنید.
خروجی به صورت زیر خواهد بود:
حالا می خواهیم یک سایت در webview نمایش داده شود:
این webview به گونه ای است که نیاز به انتخاب لینک نیست و با اجرا شدن پروژه سایت مورد نظر باز خواهد شد.
ما از متد webviewclient استفاده می نماییم که متد shouldOverrideUrlLoading()
را override می نماید.
این متد مورد نظر زمانی که صدا زده می شود، ما می توانیم این را با استفاده از webviewclient تنظیم نماییم.
این متد webviewclient دارای 3 action است که هر کدام برای نمایش محتوای webview و یا handle کردن خطا استفاده می شود،
داخل کد activity قطعه کد زیر را قرار دهید:
public class Activity2 : Activity { protected override void OnCreate(Bundle bundle) { base.OnCreate(bundle); SetContentView(Resource.Layout.Main); WebView mWebView = FindViewById<WebView>(Resource.Id.webView); mWebView.Settings.JavaScriptEnabled = true; mWebView.SetWebViewClient(new MyWebViewClient()); //Load url to be randered on WebView mWebView.LoadUrl("http://www.barnamenevisan.org"); // Create your application here } public class MyWebViewClient : WebViewClient { public override bool ShouldOverrideUrlLoading (WebView view, string url) { view.LoadUrl (url); return true; } public override void OnPageStarted (WebView view, string url, Android.Graphics.Bitmap favicon) { base.OnPageStarted (view, url, favicon); } public override void OnPageFinished (WebView view, string url) { base.OnPageFinished (view, url); } public override void OnReceivedError (WebView view, ClientError errorCode, string description, string failingUrl) { base.OnReceivedError (view, errorCode, description, failingUrl); } } }
خروجی به صورت زیر خواهد بود:
دوره های آموزشی زامارین
دوره برنامه نویسی اندروید با سی شارپ ( Xamarin )
آموزش متریال دیزاین در زامارین
آموزش Xamarin Forms
دوره Xamarin Form پیشرفته
- Xamarin
- 3k بازدید
- 7 تشکر