コード例 #1
0
        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;
            }
        }
コード例 #2
0
        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;
            }
        }