小编Csh*_*est的帖子

检测触摸按压与长按vs运动?

我目前正在摆弄Android编程,但我在检测不同的触摸事件时遇到一个小问题,即正常触摸按下(按下屏幕并立即释放),长按(触摸屏幕并按住手指) )和移动(在屏幕上拖动).

我想要做的是在屏幕上有一个图像(圆圈),我可以拖动它.然后,当我按一次(短/正常按下)时,Toast会提供一些关于它的基本信息.当我长按它时,会出现一个带有列表的AlertDialog来选择不同的图像(圆形,矩形或三角形).

我使用自己的OnTouchListener创建了一个自定义视图来检测事件并在onDraw中绘制图像.OnTouchListener.onTouch是这样的:

// has a touch press started?
private boolean touchStarted = false;
// co-ordinates of image
private int x, y;

public boolean onTouch(View v, MotionEvent event) {
    int action = event.getAction();
    if (action == MotionEvent.ACTION_DOWN) {
        touchStarted = true;
    }
    else if (action == MotionEvent.ACTION_MOVE) {
        // movement: cancel the touch press
        touchStarted = false;

        x = event.getX();
        y = event.getY();

        invalidate(); // request draw
    }
    else if (action == MotionEvent.ACTION_UP) {
        if (touchStarted) {
            // touch …
Run Code Online (Sandbox Code Playgroud)

java android move touch long-press

65
推荐指数
3
解决办法
12万
查看次数

Xamarin媒体库的唯一文件路径

我正在将Xamarin与Visual Studio + James Montemagno的Media Plugin一起使用

我使用它来访问本机设备库,使用PickVideoAsync()选择/拾取视频

var file = await CrossMedia.Current.PickVideoAsync();
Run Code Online (Sandbox Code Playgroud)

我想获取我选择的视频var file)的完整路径

但是,生成的文件似乎是实际文件临时(和压缩)版本。因此,此文件引用的路径不是原始文件路径。

我的结果:

file.Path: /var/mobile/Containers/Data/Application/9436142C-F8A1-43BF-ADE9-AD2DD676FC65/Documents/temp/trim.33800B19-DCDE-4629-896F-B34F5CDFB768.MOV

file.AlbumPath: assets-library://asset/asset.mov?id=8938D860-B84F-4878-9EA2-E91CBF9E9157&ext=mov
Run Code Online (Sandbox Code Playgroud)

file.Path =临时文件路径

file.AlbumPath=似乎是唯一引用文件的“路径”,无论对图库进行了什么更改。可悲的是,此文件似乎是URI / URL。

如何获取实际路径,或者至少获取实际文件名

提示: 据我所记得,它var file来自类似的类型Media.Plugin.Abstractions.MediaFile,因此它不是实际的.NET类型

c# android gallery xamarin.ios xamarin

5
推荐指数
0
解决办法
541
查看次数

Android MediaRecorder Video - 随后播放的音频和视频轨道

我遇到了一个错误,主要出现在三星设备上。我用媒体录像机录制了一段视频(代码如下所示)。它在所有设备上都能完美运行,但现在在某些 Android 设备上,音频和视频轨道是分开的。

假设我正在捕获 5 秒的视频。视频时长 5 秒,播放视频将播放视频的第一帧和 5 秒的音频。之后,正在播放 5 秒的视频。默认视频播放器显示视频在 5 秒后结束,但实际上它只是音频...

8.0 Oreo 中是否有新引入的内容,以便我必须调整我的 MediaRecorder?

我的媒体记录器设置:

private void SetUpMediaRecorder()
        {
            MediaRecorder.SetAudioSource(AudioSource.Mic);
            MediaRecorder.SetVideoSource(VideoSource.Surface);
            MediaRecorder.SetOutputFormat(OutputFormat.Mpeg4);

            MediaRecorder.SetVideoEncoder(VideoEncoder.H264);
            MediaRecorder.SetAudioEncoder(AudioEncoder.Aac);
            MediaRecorder.SetOutputFile(outputURL);
            MediaRecorder.SetVideoSize(1280, 720);

            MediaRecorder.SetVideoFrameRate(30);
            MediaRecorder.SetVideoEncodingBitRate(2000000);
            MediaRecorder.SetMaxDuration(VideoManager.MAX_VIDEODURATION_MS);

            //Set audio bitrate
            int bitDepth = 16;
            int sampleRate = 44100;
            int bitRate = sampleRate * bitDepth;
            MediaRecorder.SetAudioEncodingBitRate(bitRate);
            MediaRecorder.SetAudioSamplingRate(sampleRate);

            int rotation = (int)ThisActivity.WindowManager.DefaultDisplay.Rotation;
            int orientation = orientations[rotation];
            MediaRecorder.SetOrientationHint(orientation);
            MediaRecorder.Prepare();
        }
Run Code Online (Sandbox Code Playgroud)

编辑:我正在使用 Camera2 API

EDIT2:这似乎是某些三星设备的问题。深度睡眠会导致第一帧的呈现时间戳太长。将时间戳设置为 1/30 秒(如果您的视频是以 30fps 捕获的)将解决此问题。这是一个相应的错误线程:https : //github.com/googlesamples/android-Camera2Video/issues/24

audio video android xamarin.android mediarecorder

5
推荐指数
0
解决办法
497
查看次数

实例化后Unity3D C#面板定位

我正在实例化一个GO,它有一个面板组件(RectTransform)作为场景中存在的画布的子代:

_heroSelectUI = (GameObject)Instantiate (_heroSelectUIPrefab, GameObject.Find ("Canvas").GetComponent<Transform>());
Run Code Online (Sandbox Code Playgroud)

创建它时,它获得以下值:

面板值

"左","上","右"和"下"得到一些不需要的值(可能是由于现有的画布似乎具有相同的值).

面板预制值为0,如何在实例化后将它们设置为0?我找不到RectTransform的正确变量.

c# transform panel rect unity-game-engine

4
推荐指数
1
解决办法
668
查看次数

Unity3D C#按钮精灵交换 - 在运行时附加图像

我正在创建 "英雄选择菜单" 时创建按钮.这些按钮将根据它们代表的"英雄" 获得相关的图像/精灵.

我有以下方法,但我不明白我要将sprite应用到哪个变量.

Button _thisButton;
Sprite  _normalSprite;
Sprite _highlightSprite;

protected override void DoStateTransition (SelectionState state, bool instant){
    switch (state) {
    case Selectable.SelectionState.Normal:
        _thisButton.image = _normalSprite;    //.image is not correct
        Debug.Log("statenormalasd");
        break;
    case Selectable.SelectionState.Highlighted:
        _thisButton.image = _normalSprite;    //.image is not correct
//...
    }
Run Code Online (Sandbox Code Playgroud)

状态肯定是有效的,我通过Debug.Log(...)确认了它;

问题是:如果不是.image,必须更改哪个值?

在此先感谢,Csharpest

c# button sprite unity-game-engine

2
推荐指数
1
解决办法
2346
查看次数