日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 运维知识 > Android >内容正文

Android

Xamarin.Android开发实践(十八)

發(fā)布時(shí)間:2025/7/14 Android 45 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Xamarin.Android开发实践(十八) 小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

Xamarin.Android之SlidingMenu

一、前言

有位網(wǎng)友在評(píng)論中希望能夠出個(gè)在Xamarin.Android下實(shí)現(xiàn)SlidingMenu效果的隨筆,剛好昨天在觀看官網(wǎng)示例項(xiàng)目的時(shí)候也看到這個(gè)SlidingMenu,但是最終的效果并不是我們所期待的,至此筆者就在官方的論壇中尋找,最后也成功的尋找到的答案,下面筆者將帶領(lǐng)帶領(lǐng)大家實(shí)現(xiàn)SlidingMenu

?

二、準(zhǔn)備工作

實(shí)現(xiàn)SlidingMenu重點(diǎn)是需要一個(gè)第三方的類庫(kù),筆者已經(jīng)把部分重要的方法注釋了,下面是下載地址:

從Github下載

從百度網(wǎng)盤(pán)下載

?

?

注:我們的項(xiàng)目不僅僅需要引用這個(gè)類庫(kù)還需要引用自帶的Mono.Android.Support.v4類庫(kù),可從 圖 1.1 找到該類庫(kù)。

?

圖 1.1

?

?

三、正文

新建項(xiàng)目筆者就不多說(shuō)了,然后我們按照第二步的要求引用需要的類庫(kù)后在Resource/layout下新建一個(gè)視圖并命名為menu,然后在其中拖放幾個(gè)Button控件,而這個(gè)視圖將是我們滑動(dòng)菜單的界面,最后我們就可以打開(kāi)MainActivity.cs并在其中寫(xiě)入如下代碼:

1 protected override void OnCreate(Bundle bundle) 2 { 3 base.OnCreate(bundle); 4 SetContentView(Resource.Layout.Main); 5 //實(shí)例化 6 var sm = new SlidingMenu(this); 7 //指定滑動(dòng)菜單的視圖 8 sm.SetMenu(Resource.Layout.menu); 9 //將滑動(dòng)菜單附加到Activity上 10 sm.AttachToActivity(this, SlidingMenuSharp.SlideStyle.Window); 11 }

其中需要說(shuō)明的是AttachToActivity方法的第二個(gè)參數(shù),這個(gè)參數(shù)指定了SlidingMenu如何附加到Activity上,在視覺(jué)效果上指定了Window則當(dāng)滑動(dòng)的時(shí)候ActionBar也會(huì)跟著滑動(dòng),如果是Content則ActionBar不會(huì)跟著滑動(dòng),我們可以查看圖 1.2 和 1.3 分別是Window和Content情況下的效果(默認(rèn)需要從邊框開(kāi)始滑動(dòng)才可以,并不是全屏)。

圖1.2

?

圖1.3

?

但是上面的這種SlidingMenu可不是我們所希望的那種SlidingMenu,況且Xamarin的官方示例里面也有這種效果,所以下面我們要讓滑動(dòng)菜單只顯示部分,并且可以通過(guò)滑動(dòng)全屏的任意部分呼出菜單,所以我們將代碼改寫(xiě)成如下所示:

1 protected override void OnCreate(Bundle bundle) 2 { 3 base.OnCreate(bundle); 4 SetContentView(Resource.Layout.Main); 5 var sm = new SlidingMenu(this); 6 sm.SetMenu(Resource.Layout.menu); 7 //指定主界面顯示的寬度 8 sm.BehindOffset = 100; 9 sm.TouchModeAbove = TouchMode.Fullscreen; 10 sm.AttachToActivity(this, SlidingMenuSharp.SlideStyle.Content); 11 }

其中需要說(shuō)明的是BehindOffset屬性,通過(guò)注釋我們可以知道它是用來(lái)指定滑動(dòng)菜單完全顯示后主界面的可視部分的寬度,也可以BehindOffsetRes來(lái)指定,只是這個(gè)屬性必須使用資源的標(biāo)識(shí)符來(lái)賦值。我們除了可以指定主界面也可以指定滑動(dòng)菜單顯示的寬度,對(duì)應(yīng)的屬性就是BehindWidthBehindWidthRes

?

現(xiàn)在我們的SlidingMenu已經(jīng)有點(diǎn)樣子了,但是還沒(méi)有完全結(jié)束,后面我們將會(huì)不斷的美化它,讓它更加符合實(shí)際項(xiàng)目的需要。

?

首先我們需要講解的是BehindScrollScale屬性,它的效果就是控制滑動(dòng)菜單在劃出時(shí)滑動(dòng)的強(qiáng)度,取值范圍為0~1,我們可以通過(guò)圖 1.4 和 1.5 看出取值為0和1時(shí)候的滑動(dòng)效果。

圖1.4

?

圖 1.5

?

通過(guò)圖1.4和圖1.5我們可以清楚的看到這個(gè)屬性的作用,你會(huì)發(fā)現(xiàn)當(dāng)設(shè)置為1的時(shí)候跟ViewPager很相似了。

?

還有另一個(gè)屬性就是FadeDegreeFadeEnabled,第一個(gè)是控制漸變效果的強(qiáng)度,第二個(gè)則決定是否使用漸變效果,我們還是通過(guò)圖片來(lái)演示FadeDegree在0和1的情況下分別是什么樣的效果,圖 1.6 和 圖 1.7分別對(duì)應(yīng)取值為0和1時(shí)的效果。

圖1.6

?

圖1.7

?

通過(guò)圖1.6和1.7我們可以清楚的看出在剛滑動(dòng)的時(shí) 候他們的顏色是不同的,并且在不斷滑動(dòng)的過(guò)程中會(huì)漸漸變淡,而這個(gè)屬性的作用就是用來(lái)控制它。然而還有一個(gè)比較嚴(yán)重的問(wèn)題就是滑動(dòng)菜單和我們的主界面之間 沒(méi)有分割線,但是我們又不能直接用一條線,這樣顯的很不美觀,那么我們就可以自己設(shè)置一個(gè)漸變效果,首先我們需要在Resource/drawable下新建一個(gè)xml文件,并命名為shadow,在其中寫(xiě)入如下內(nèi)容:

1 <?xml version="1.0" encoding="utf-8" ?> 2 <shape xmlns:android="http://schemas.android.com/apk/res/android"> 3 <gradient 4 android:endColor="#00000000" 5 android:centerColor="#11000000" 6 android:startColor="#33000000" ></gradient> 7 </shape>

通過(guò)以上內(nèi)容我們指定了一個(gè)漸變效果的,剩下的我們需要使用這個(gè)資源:

1 var sm = new SlidingMenu(this); 2 sm.SetMenu(Resource.Layout.menu); 3 4 sm.FadeEnabled = true; 5 sm.FadeDegree = 1f; 6 sm.BehindOffset = 100; 7 sm.ShadowDrawableRes = Resource.Drawable.shadow; 8 sm.ShadowWidth = 15; 9 sm.BehindScrollScale = 0f; 10 sm.TouchModeAbove = TouchMode.Fullscreen; 11 sm.AttachToActivity(this, SlidingMenuSharp.SlideStyle.Content); 12 }

?

這里我們通過(guò)ShadowDrawableRes屬性使用這個(gè)資源,并通過(guò)ShadowWidth屬性控制它的寬度,最后我們運(yùn)行程序就可以看到一個(gè)漸變的分割線了圖1.8:

圖1.8

?

上面我們只是把滑動(dòng)菜單都放在了左邊,實(shí)際上我們可以將滑動(dòng)菜單放在右邊或者兩邊都有,比如在原本的代碼上加上這句代碼后就可以在左邊呈現(xiàn)了。

1 sm.Mode = MenuMode.Right; 2 sm.SetSecondaryMenu(Resource.Layout.menu);

?

第一個(gè)屬性用來(lái)控制滑動(dòng)菜單的模式,第二個(gè)就是指定右邊的滑動(dòng)菜單的內(nèi)容。講到這里大家獲取會(huì)疑惑怎么才好監(jiān)聽(tīng)滑動(dòng)菜單里的事件呢?其實(shí)滑動(dòng)菜單就是整個(gè)Activity的一部分,所以在其中的控件都是可以通過(guò)FindViewById獲取到的當(dāng)然筆者建議讀者采用Fragment將代碼分離,SlidingMenu的SetContent方法可以直接改變主界面的視圖。

?

除了我們自己新建SlidingMenu,我們還可以讓活動(dòng)繼承SlidingFragmentActivity類,這樣我們就直接可以通過(guò)控制SlidingMenu屬性,而不需要實(shí)例化一個(gè),也不需要調(diào)用AttachToActivity附加到Activity上,比如我們將上面的代碼改寫(xiě)成如下所示

1 protected override void OnCreate(Bundle bundle) 2 { 3 base.OnCreate(bundle); 4 SetContentView(Resource.Layout.Main); 5 SetBehindContentView(Resource.Layout.menu); 6 SlidingMenu.FadeEnabled = true; 7 SlidingMenu.FadeDegree = 1f; 8 SlidingMenu.BehindOffset = 100; 9 SlidingMenu.ShadowDrawableRes = Resource.Drawable.shadow; 10 SlidingMenu.ShadowWidth = 15; 11 SlidingMenu.BehindScrollScale = 0f; 12 SlidingMenu.Mode = MenuMode.Right; 13 SlidingMenu.SetSecondaryMenu(Resource.Layout.menu); 14 SlidingMenu.TouchModeAbove = TouchMode.Fullscreen; 15 }

我們需要注意SetBehindContentView方法,這個(gè)方法必須調(diào)用,但是它的功能實(shí)際上跟SetMenu是一樣的,是用來(lái)設(shè)置滑動(dòng)菜單的界面的,讀者通過(guò)查看最終的結(jié)果可以發(fā)現(xiàn)ActionBar又跟著主界面動(dòng)了,但是我們沒(méi)了AttachToActivity方法就不好指定枚舉了,這個(gè)時(shí)候我們需要使用SetSlidingActionBarEnabled方法,并傳入false即可。

?

讀者在使用實(shí)際的app中一定會(huì)發(fā)現(xiàn)SlidingMenu呈現(xiàn)的動(dòng)畫(huà)會(huì)有許多中,當(dāng)然我們也有許多種呈現(xiàn)方式,只需要給BehindCanvasTransformer屬性賦值即可,內(nèi)置的動(dòng)畫(huà)有ZoomTransformerSlideTransformerScaleTransformer,當(dāng)然他們都是類,是需要初始化的,我們通過(guò)下圖來(lái)演示不同的動(dòng)畫(huà)效果如何:

ZoomTransformer動(dòng)畫(huà)

?

SlideTransformer動(dòng)畫(huà)

?

ScaleTransformer動(dòng)畫(huà)

轉(zhuǎn)載于:https://www.cnblogs.com/ShaYeBlog/p/4631604.html

總結(jié)

以上是生活随笔為你收集整理的Xamarin.Android开发实践(十八)的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

如果覺(jué)得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。

主站蜘蛛池模板: 免费在线看污视频 | 亚洲激情欧美 | 国产精品电影一区 | 日日日插插插 | 伊人日本 | 九草视频在线观看 | 亚洲精品乱码久久久久久写真 | 91欧美激情一区二区三区成人 | 精品久久久久久亚洲 | 成人自拍视频网 | 成年人视频免费看 | 国产精品500部 | 精品国产亚洲一区二区麻豆 | www.尤物| 色综合一区二区三区 | 风流少妇按摩来高潮 | 国产成人精品在线视频 | 免费黄色一级 | 欧美性一区二区 | 日韩毛片网 | 欧洲金发美女大战黑人 | 久草影视在线观看 | 欧美一区二不卡视频 | 琪琪av在线 | 96av在线视频| 亚洲第一天堂 | 色射网| 国产毛片视频网站 | 女性毛片 | 日本激情视频网站 | 日韩在线 中文字幕 | 欧美视频在线观看 | 免费日韩在线 | 最新视频 - 88av | 中文字幕日韩经典 | 性色av网址 | 一区二区三区视频在线 | 农村少妇无套内谢粗又长 | av手机在线| 国产一级影片 | 国产免费一级视频 | 日韩国产毛片 | 视频二区三区 | 黄色a级片网站 | 九九色在线 | 91成人黄色 | 四虎黄色影视 | 99精品免费| 国产传媒在线播放 | 日本黄色美女网站 | 天天曰夜夜曰 | 天天干天天操av | 国产一区精品无码 | 国产99在线视频 | 亚洲经典av | 992tv人人草| 开心激情亚洲 | 男阳茎进女阳道视频大全 | 东北女人啪啪ⅹxx对白 | 最新永久地址 | 一级特黄aa大片免费播放 | 国产剧情一区二区三区 | 亚洲美女性生活 | 国语对白一区二区 | 黄色污污网站在线观看 | 999免费视频 | 九九热免费| 性激情视频 | 久久亚洲av成人无码国产电影 | 亚洲色图国产 | julia一区二区 | 欧美大片在线免费观看 | 72种无遮挡啪啪的姿势 | 91午夜理伦私人影院 | 亚洲午夜精品一区二区三区他趣 | 国产三级久久久 | 国产毛茸茸 | 亚洲爽爽爽 | 久久国产精品免费视频 | 永久av在线免费观看 | 久久精品免费一区二区 | 国产人妻人伦精品1国产丝袜 | 熊猫成人网 | 欧美日韩一区二区三区在线观看 | 另类三区 | 国产福利网站 | 不卡在线播放 | 8x8ⅹ国产精品一区二区 | 伊人色综合网 | av导航网| 特级丰满少妇一级aaa爱毛片 | 亚洲精品免费在线观看视频 | 永久免费不卡在线观看黄网站 | 日韩午夜在线观看 | 欧美一区二区在线免费观看 | 秋霞成人av| 久久r| 激情四射网 | 天天干夜夜夜 |