[Xamarin] Android 製作滑動含手勢輪播廣告 +網路圖片 +點擊事件

2016-07-20

之前分享一篇文章關於 Android 製作滑動含手勢輪播廣告 但是那時候用的圖片是由內建的資源,因為剛好朋友在問我這問題,我就順手改寫了一段讓他支援網路圖片,並且點擊之後會有觸發Toast 事件
1.先下載 Source Code ( https://github.com/donma/Xamarin.TestSliderAutoPlay )

Screenshot_20160720-155902
2.改寫 MainActivity.cs 將 List<int> ImagesList 改成 List<string> ImagesList ,之後放入的Resource 就變成放入網址

//加入圖片
ImagesList = new List<string>();
ImagesList.Add("https://scontent-tpe1-1.xx.fbcdn.net/t31.0-8/1658640_607698415972232_623702357_o.jpg");
ImagesList.Add("https://scontent-tpe1-1.xx.fbcdn.net/t31.0-8/1912488_607698419305565_1668011281_o.jpg");
ImagesList.Add("https://scontent-tpe1-1.xx.fbcdn.net/v/t1.0-0/p206x206/13615237_1098938063514929_7364534394901397035_n.jpg?oh=20cc9dcc28a6fcda6ffd1ea872c67abe&oe=57EE0EBD");
ImagesList.Add("https://scontent-tpe1-1.xx.fbcdn.net/t31.0-8/13662165_1098938066848262_3644920350712659186_o.jpg");
ImagesList.Add("https://scontent-tpe1-1.xx.fbcdn.net/t31.0-8/13680021_1098938060181596_8709151440474234547_o.jpg");
_adapter = new FragStateSupport(SupportFragmentManager, ImagesList);
//這時候把自己Activity 傳入,方便從Fragment 那邊直接呼叫
_adapter._Activity = this;

其中,我多新增一個_Activity 讓主Activity這邊可以傳遞到Adapter 中,在讓Adapter 傳遞至Fragment 這樣就可以抓到父親的Activity
3.改寫 TestFragment.cs 的 GetBitmapOptionsOfImage 部分,讓他取得Options 之前如果沒有圖片就下載

public BitmapFactory.Options GetBitmapOptionsOfImage()
{
    //Get only the bounds of the bitmap image
    BitmapFactory.Options options = new BitmapFactory.Options
    {
        InJustDecodeBounds = true,
        InPurgeable = true,
    };
 
    //改寫這一段,如果沒有圖片就進行下載
    if (myBitmap == null)
    {
        var client = new WebClient();
        myBitmap = client.DownloadData(itemData);
    }
 
    // The result will be null because InJustDecodeBounds == true.
    Bitmap result = BitmapFactory.DecodeByteArray(myBitmap,0,myBitmap.Length, options);
    int imageHeight = options.OutHeight;
    int imageWidth = options.OutWidth;
    Console.WriteLine(string.Format("Original Size= {0}x{1}", imageWidth, imageHeight));
    return options;
}

改寫 OnCreateView 中圖片點擊事件加入Click

using (Bitmap bitmapToDisplay = LoadScaledDownBitmapForDisplay(options, 500, 300))
{
    
    ivImageView.SetImageBitmap(bitmapToDisplay);
    //加入圖片點擊的事件
    ivImageView.Click += delegate
    {
        Toast.MakeText(_Activity, itemData, ToastLength.Short).Show();
    };
}

結果,這都是來自臉書上面的圖片
Screenshot_20160720-155902
Source:
https://www.dropbox.com/s/az5yximpic8ljli/SlideTest.WebImage.7z?dl=0


當麻許的超技八 2014 | Donma Hsu Design.