internal async Task LoadProcessWeb(string category, int categoryIndex, int itemIndex, bool IsRefresh = false) { cartoonType = CartoonType.Web; nowItemIndex = itemIndex; nowCategoryIndex = categoryIndex; nowCategory = category; try { loadProgress.Visibility = ViewStates.Visible; (Activity as CartoonActivity).mainDrawerLayout.Enabled = false; selectedItemList.Clear(); selectedItemURLList.Clear(); webViewLayout.RemoveAllViews(); copyrightLayout.RemoveAllViews(); await Task.Delay(100); (Activity as CartoonActivity).ListItems(categoryIndex, selectedItemList); ListItemURLs(categoryIndex, ref selectedItemURLList); selectedItemList.TrimExcess(); selectedItemURLList.TrimExcess(); var webview = new WebView(Activity); webview.SetWebViewClient(new WebBrowserWebClient()); webview.Settings.BuiltInZoomControls = true; webview.Settings.AllowContentAccess = true; webview.Settings.BlockNetworkImage = false; webview.Settings.BlockNetworkLoads = false; webview.Settings.LoadsImagesAutomatically = true; webview.Settings.DomStorageEnabled = true; webview.Settings.MixedContentMode = MixedContentHandling.AlwaysAllow; webview.Settings.SetAppCacheEnabled(true); webview.Settings.JavaScriptEnabled = true; webViewLayout.AddView(webview); webview.LoadUrl(selectedItemURLList[nowItemIndex]); loadProgress.Visibility = ViewStates.Invisible; } catch (Exception ex) { ETC.LogError(ex, Activity); } finally { (Activity as CartoonActivity).mainDrawerLayout.Enabled = false; toolbarTitle.Text = selectedItemList[itemIndex]; mainRecyclerView.Visibility = ViewStates.Gone; webViewLayout.Visibility = ViewStates.Visible; } }
internal async Task LoadProcess(string category, int categoryIndex, int itemIndex, bool isRefresh) { cartoonType = CartoonType.Image; nowItemIndex = itemIndex; nowCategoryIndex = categoryIndex; nowCategory = category; await Task.Delay(100); try { loadProgress.Visibility = ViewStates.Visible; (Activity as CartoonActivity).mainDrawerLayout.Enabled = false; selectedItemList.Clear(); copyrightLayout.RemoveAllViews(); await Task.Delay(100); (Activity as CartoonActivity).ListItems(categoryIndex, selectedItemList); selectedItemList.TrimExcess(); string categoryPath = Path.Combine(cartoonTopPath, category); string itemPath = Path.Combine(categoryPath, itemIndex.ToString()); if (isRefresh) { Directory.Delete(itemPath, true); } if (!Directory.Exists(categoryPath)) { Directory.CreateDirectory(categoryPath); } if (!Directory.Exists(itemPath)) { Directory.CreateDirectory(itemPath); await DownloadCartoon(category, itemIndex); } else { if (Directory.GetFiles(itemPath).Length == 0) { await DownloadCartoon(category, itemIndex); } } var layout = new LinearLayout(Activity); var tv1 = new TextView(Activity); var tv2 = new TextView(Activity) { AutoLinkMask = Android.Text.Util.MatchOptions.WebUrls }; switch (categoryIndex) { case 0: tv1.Text = "Creator : 츠보우"; tv2.Text = "http://kazensky.blog.me/221115059226"; break; case 1: case 2: case 3: case 4: tv1.Text = "Creator : 잉여군"; tv2.Text = "https://twitter.com/INGUKOON"; break; case 5: case 6: tv1.Text = "Creator : MADCORE"; tv2.Text = "https://www.pixiv.net/member.php?id=455690"; break; case 9: tv1.Text = "Creator : MMM"; tv2.Text = "https://www.pixiv.net/member.php?id=25683341"; break; case 11: tv1.Text = "Creator : 센롱"; tv2.Text = "https://www.pixiv.net/users/21946119"; break; } layout.Orientation = Orientation.Vertical; tv1.Gravity = GravityFlags.Center; tv2.Gravity = GravityFlags.Center; layout.AddView(tv1); layout.AddView(tv2); copyrightLayout.AddView(layout); var Files = Directory.GetFiles(itemPath).ToList(); Files.TrimExcess(); Files.Sort(SortCartoonList); bitmapList.Clear(); const int imageSize = 500; foreach (string file in Files) { var drawable = Drawable.CreateFromPath(file); var bitmap = (drawable as BitmapDrawable).Bitmap; int height = 0; while (height < bitmap.Height) { int remainHeight = bitmap.Height - height; var bitmapFix = (remainHeight >= imageSize) ? Android.Graphics.Bitmap.CreateBitmap(bitmap, 0, height, bitmap.Width, imageSize) : Android.Graphics.Bitmap.CreateBitmap(bitmap, 0, height, bitmap.Width, remainHeight); height += (remainHeight >= imageSize) ? imageSize : remainHeight; bitmapList.Add(bitmapFix); } await Task.Delay(10); } bitmapList.TrimExcess(); mainRecyclerView.SetAdapter(new CartoonScreenAdapter(bitmapList.ToArray())); GC.Collect(); loadProgress.Visibility = ViewStates.Invisible; } catch (Exception ex) { ETC.LogError(ex, Activity); } finally { (Activity as CartoonActivity).mainDrawerLayout.Enabled = false; toolbarTitle.Text = selectedItemList[itemIndex]; webViewLayout.Visibility = ViewStates.Gone; mainRecyclerView.Visibility = ViewStates.Visible; } }