如何在Xamarin.Android?

时间:2016-07-05 02:15:29

标签: xamarin xamarin.android xamarin.forms

我正在使用Xamarin.forms制作应用。 你可能知道形式'如果您尝试过按钮,则按钮不足以用作图像按钮。

所以我使用Image作为按钮并添加了gesturerecogniger。它工作正常。 好的是我可以像使用Image一样使用所有Image的可绑定属性。 (比如' Aspect属性'等等)

唯一的问题是Android按钮在按下时会产生声音效果。 我没有。

如何在Android上播放默认按键音?

[另一次尝试]

我尝试制作布局并将Image和空虚按钮放在上面。 但是,如果我这样做,我不能使用Image或Button的任何属性,除非我手动链接它。

所以我认为这不是正确的方法。

感谢。

3 个答案:

答案 0 :(得分:9)

Xamarin.Android

var root = FindViewById<View>(Android.Resource.Id.Content);
root.PlaySoundEffect(SoundEffects.Click);

Android playSoundEffect(int soundConstant)

Xamarin.iOS

UIDevice.CurrentDevice.PlayInputClick();

Xamarin.Forms来自Dependency Service

public interface ISound
{
    void KeyboardClick () ;
}

然后实现平台特定功能。

的iOS:

public void KeyboardClick()
{
    UIDevice.CurrentDevice.PlayInputClick();
}

机器人:

public View root;
public void KeyboardClick()
{
    if (root == null)
    {
        root = FindViewById<View>(Android.Resource.Id.Content);
    }
    root.PlaySoundEffect(SoundEffects.Click);
}

答案 1 :(得分:0)

看看以下内容:

MonoTouch.UIKit.IUIInputViewAudioFeedback

UIInputViewAudioFeedback_Extensions类一起构成UIInputViewAudioFeedback协议的接口。 另请参阅:IUIInputViewAudioFeedback

https://developer.xamarin.com/api/type/MonoTouch.UIKit.IUIInputViewAudioFeedback/

你会想要这样的东西(未经测试):

public void SomeButtonFunction()
{
    SomeBtn.TouchUpInside += (s, e) => { 
        UIDevice.CurrentDevice.PlayInputClick();
    };
}

答案 2 :(得分:0)

Xamarin表单

PCL界面:

interface ISoundService { void Click(); }

点击处理程序:

void Handle_OnClick(object sender, EventArgs e) {
    DependencyService.Get<ISoundService>().Click();
}

Android:

public class MainActivity {
    static MainActivity Instance { get; private set; }
    OnCreate() {
        Instance = this;
    }
}

class SoundService : ISoundService {
    public void Click() {
        var activity = MainActivity.Instance;
        var view = activity.FindViewById<View>(
            Android.Resource.Id.Content);
        view.PlaySoundEffect(SoundEffects.Click);
    }
}