小编Mak*_*ele的帖子

导航栏上的UIView动画有时会出错

我在视图中嵌入了一个按钮,它位于UIBarButtonItem中.我想要实现的是创建动画,当我从左侧打开滑动菜单时,我将按钮向右移动一定量,当我关闭它时返回.

我正在使用此功能来创建它:

static func createMenuButton(controller:UIViewController) -> UIBarButtonItem {
    let target = controller.navigationController!.parentViewController!
    let menuImage = UIImage(named: "menu.png")!.imageWithRenderingMode(.AlwaysTemplate)
    let menuButton = UIButton(frame: CGRectMake(0, 0, 22, 22))
    menuButton.tintColor = UIColor.blackColor()
    menuButton.setBackgroundImage(menuImage, forState: .Normal)
    menuButton.addTarget(target, action: Selector("toggleMenuClicked:"), forControlEvents:.TouchUpInside)
    let menuButtonContainer = UIView(frame: menuButton.frame)
    menuButtonContainer.addSubview(menuButton)
    let menuButtonItem = UIBarButtonItem(customView: menuButtonContainer)
    return menuButtonItem
}
Run Code Online (Sandbox Code Playgroud)

我也想旋转它,但我在同时更改2个属性时遇到了一些问题.所以我决定制作两个单独的动画(这是为了打开,关闭它是相同的,但方向相反):

翻译容器(CGAffine翻译无法正常工作):

UIView.animateWithDuration(0.3, animations: {
            menuContainerView.frame = CGRectOffset(menuContainerView.frame, 183, 0.0)
            }, completion: nil)
Run Code Online (Sandbox Code Playgroud)

内部旋转按钮:

UIView.animateWithDuration(0.3, animations: {
            menuButton.transform = CGAffineTransformMakeRotation(CGFloat(M_PI_2))
            }, completion: nil)
Run Code Online (Sandbox Code Playgroud)

它有效 - 在90%的情况下.但有时候 - 当关闭时 - 按钮会在屏幕外传送并从那里移向终点.

同时我也从屏幕外移动菜单视图控制器(关闭恰好相反的值): …

ios swift

6
推荐指数
1
解决办法
478
查看次数

PolyUtil.containsLocation无法按预期工作

我做了一个简单的测试:

LatLng city = new LatLng(53.121896, 18.010110);

List<LatLng> pts = new ArrayList<>();
pts.add(new LatLng(53.520790, 17.404158));
pts.add(new LatLng(53.450445, 19.209022));
pts.add(new LatLng(52.659365, 17.656366));
pts.add(new LatLng(52.525305, 19.303601));

LatLngBounds bounds = new LatLngBounds(pts.get(2), pts.get(1));

boolean contains1 = PolyUtil.containsLocation(city.latitude, city.longitude, pts, true);
System.out.println("contains1: " + contains1);

boolean contains2 = bounds.contains(city);
System.out.println("contains2: " + contains2);
Run Code Online (Sandbox Code Playgroud)

下面是它的工作原理:

  1. 我创建了一个特定的point(city),我想测试它是否在多边形内,
  2. 我宣布一个多边形为4个点并且边界为2个点(东北和西南).

输出是:

contains1: false
contains2: true
Run Code Online (Sandbox Code Playgroud)

为什么PolyUtil.containsLocation返回false?我在这里错过了什么?这很简单,你可以在谷歌地图上测试这些点.

PolyUtil是Google提供的android maps utils类: 'com.google.maps.android:android-maps-utils:0.5'

java android google-maps google-maps-android-api-2

6
推荐指数
1
解决办法
1836
查看次数

UIView bounds.applying但有旋转

我想在视图周围创建一个虚线边框,可以移动/旋转/缩放.

这是我的代码:

func addBorder() {        
    let f = selectedObject.bounds.applying(selectedObject.transform)
    borderView.backgroundColor = UIColor(red: 1, green: 0, blue: 0, alpha: 0.5) //just for testing
    borderView.frame = f
    borderView.center = selectedObject.center
    borderView.transform = CGAffineTransform(translationX: selectedObject.transform.tx, y: selectedObject.transform.ty)

    removeBorder() //remove old border

    let f2 = CGRect(x: 0, y: 0, width: borderView.frame.width, height: borderView.frame.height)
    let dashedBorder = CAShapeLayer()
    dashedBorder.strokeColor = UIColor.black.cgColor
    dashedBorder.lineDashPattern = [2, 2]
    dashedBorder.frame = f2
    dashedBorder.fillColor = nil
    dashedBorder.path = UIBezierPath(rect: f2).cgPath
    dashedBorder.name = "border"
    borderView.layer.addSublayer(dashedBorder)
}
Run Code Online (Sandbox Code Playgroud)

它看起来像这样: 在此输入图像描述

这还不错,但我希望边框也可以旋转,因为它可能会误导用户,因为触摸区域仅在图像上.

我试图将旋转应用于变换:

func addBorder() …
Run Code Online (Sandbox Code Playgroud)

uiview cashapelayer ios cgrect swift

6
推荐指数
1
解决办法
226
查看次数

Android模拟器 - 模拟特定设备

我正在尝试模拟LG K4 2017:

https://www.gsmarena.com/lg_k4_(2017)-8489.php

尺寸5.0英寸,69.6平方厘米(约66.3%的屏幕与身体比例)

分辨率480 x 854像素,16:9比例(约195 ppi密度)

我试图在AVD管理器中做到这一点,我设置相同的屏幕尺寸和分辨率,但应用程序看起来非常不同(在真实设备上一切都要大得多,换句话说,我可以看到更少的内容).

以下是设置的外观:

在此输入图像描述

我认为屏幕尺寸应该是正常的,但没有办法改变它 - 它会根据屏幕尺寸和分辨率自动改变.

是否有可能以某种方式更改以模拟此设备?

android android-emulator

6
推荐指数
1
解决办法
632
查看次数

精灵跟踪触摸

我想在cocos2d-x中通过旋转实现跟踪(跟随)触摸.您可以在此处看到此效果:https://www.youtube.com/watch?v = RZouMyyNGG8(2:10).

这是我在touchMove中的代码:

_destinationX = touchPoint.x;
_destinationY = touchPoint.y;

_dx = _destinationX - draggedItem->getPositionX();
_dy = _destinationY - draggedItem->getPositionY();

_vx = _dx;
_vy = _dy;

float d = sqrtf((_dx*_dx)+(_dy*_dy));

//nice easing when near destination
if (d < 50 && d > 3){
    _vx *= d / 50.0f;
    _vy *= d / 50.0f;
}
else if(d <= 3){
    _vx = _vy = 0;
}

draggedItem->setPosition(draggedItem->getPosition() + Point(_vx, _vy));

float rad = atan2(_dy, _dx);
float rotateTo = CC_RADIANS_TO_DEGREES(-rad); …
Run Code Online (Sandbox Code Playgroud)

c++ cocos2d-x

5
推荐指数
1
解决办法
175
查看次数

在android上转换原始位图

所以,我正在使用这个库https://github.com/thuytrinh/android-collage-views将“MultiTouchListener”功能添加到我的 ImageView。基本上,我让用户根据自己的需要使用旋转、缩放和平移来修改照片。现在唯一的问题是如何保存它。我是这样做的:

    Bitmap bitmap = Bitmap.createBitmap(imageContainer.getWidth(), imageContainer.getHeight(), Bitmap.Config.ARGB_8888);
    Canvas canvas = new Canvas(bitmap);
    canvas.drawColor(Color.WHITE);
    imageContainer.draw(canvas);
Run Code Online (Sandbox Code Playgroud)

它可以工作,但图像不够大 - 它与手机上的视图一样大,因此它取决于屏幕分辨率。我想在给定的全尺寸位图上“应用”这些转换。我希望转换后的图像在屏幕上看起来像(所以它需要裁剪屏幕外的所有内容)

我尝试了以下方法:

    Bitmap newBitmap = Bitmap.createBitmap(image.getWidth(), image.getHeight(), Bitmap.Config.ARGB_8888);
    Canvas canvas = new Canvas(newBitmap);
    canvas.drawColor(Color.WHITE);
    Paint paint = new Paint();
    paint.setAntiAlias(true);
    canvas.drawBitmap(image, imageView.getMatrix(), paint);
Run Code Online (Sandbox Code Playgroud)

但它看起来并不像预期的那样。

用户画面:

在此处输入图片说明

并输出图像(不裁剪,因为我不想裁剪哪一边):

在此处输入图片说明

我怎样才能解决这个问题?有什么解决办法吗?

android

5
推荐指数
1
解决办法
2082
查看次数

Android项目中的C++ Firebase链接错误

我正在尝试将firebase c ++ sdk添加到我的cocos2d-x 3.14游戏中.到目前为止,我在firebase_cpp_sdk目录中创建了Android.mk:

LOCAL_PATH := $(call my-dir)

include $(CLEAR_VARS)
LOCAL_MODULE := firebase-prebuilt
LOCAL_SRC_FILES := libs/android/$(TARGET_ARCH_ABI)/c++/libapp.a
LOCAL_EXPORT_C_INCLUDES := $(LOCAL_PATH)/include
include $(PREBUILT_STATIC_LIBRARY)


include $(CLEAR_VARS)
LOCAL_MODULE := firebase-analytics
LOCAL_SRC_FILES := libs/android/$(TARGET_ARCH_ABI)/c++/libanalytics.a
LOCAL_EXPORT_C_INCLUDES := $(LOCAL_PATH)/include
include $(PREBUILT_STATIC_LIBRARY)
Run Code Online (Sandbox Code Playgroud)

然后在Android.mk的项目中我添加了:

LOCAL_C_INCLUDES += /Users/piotr/Documents/pierdoly/firebase_cpp_sdk/include

LOCAL_STATIC_LIBRARIES += firebase-prebuilt firebase-analytics

$(call import-add-path, /Users/piotr/Documents/pierdoly/firebase_cpp_sdk)
Run Code Online (Sandbox Code Playgroud)

我可以同步gradle和构建项目.我也可以

#include <firebase/app.h> 
Run Code Online (Sandbox Code Playgroud)

在AppDelegate.cpp(或h)中,它工作正常.即使Android工作室也能看到所有的firebase标题,我可以检查它们.

现在,在applicationDidFinishLaunching中我添加了这个:

#if (CC_TARGET_PLATFORM != CC_PLATFORM_ANDROID)
    ::firebase::App* app = ::firebase::App::Create(::firebase::AppOptions());
#else
    ::firebase::App* firebaseApp = ::firebase::App::Create(::firebase::AppOptions(), cocos2d::JniHelper::getEnv(), cocos2d::JniHelper::getActivity());
#endif
Run Code Online (Sandbox Code Playgroud)

还有来自AppActivity.java的JNICALL的替代版本(传递正确的活动,因为有人说上面的解决方案不起作用):

#if (CC_TARGET_PLATFORM == CC_PLATFORM_ANDROID)
JNIEXPORT void JNICALL Java_org_cocos2dx_cpp_AppActivity_initFirebase(JNIEnv* env, jobject thiz)
{ …
Run Code Online (Sandbox Code Playgroud)

c++ android android-ndk firebase ndk-build

5
推荐指数
1
解决办法
509
查看次数

在 mac os x Sierra 上使用 opencv c++ 编译 hello world

第一次我无法编译 hello world。我已经遵循了大量如何安装 opencv 的教程。我只有以下示例:

#include <iostream>
#include <opencv2/core/core.hpp>
#include <opencv2/highgui/highgui.hpp>

using namespace std;
using namespace cv;

int main()
{

    Mat imageMe = imread("test.jpg", 0);
    return 0;
}
Run Code Online (Sandbox Code Playgroud)

来自opencv网站。看起来很简单,但它不会编译。

g++ display_image.cpp `pkg-config --cflags --libs opencv` -l
Run Code Online (Sandbox Code Playgroud)

这是错误:

display_image.cpp:2:10: fatal error: 'opencv2/core/core.hpp' file not found
#include <opencv2/core/core.hpp>
         ^
1 error generated.
Run Code Online (Sandbox Code Playgroud)

并运行:

pkg-config --cflags --libs opencv 
Run Code Online (Sandbox Code Playgroud)

返回这个:

-I/usr/local/Cellar/opencv3/3.2.0/include/opencv -I/usr/local/Cellar/opencv3/3.2.0/include/opencv2 -L/usr/local/Cellar/opencv3/3.2.0/lib -lopencv_calib3d -lopencv_imgproc -lopencv_contrib -lopencv_legacy -l 
Run Code Online (Sandbox Code Playgroud)

这些文件存在。

运行ls /usr/local/Cellar/opencv3/3.2.0/include/opencv2/core | grep core.hpp 给出结果:

core.hpp
Run Code Online (Sandbox Code Playgroud)

有什么问题?

编辑:我一直在使用以下教程在我的机器上安装 opencv:

http://www.pyimagesearch.com/2016/12/19/install-opencv-3-on-macos-with-homebrew-the-easy-way/

https://www.learnopencv.com/install-opencv-3-on-yosemite-osx-10-10-x/

https://blogs.wcode.org/2014/10/howto-install-build-and-use-opencv-macosx-10-10/

http://seeb0h.github.io/howto/howto-install-homebrew-python-opencv-osx-el-capitan/ …

c++ macos opencv

5
推荐指数
1
解决办法
6618
查看次数

当文件路径输入不可见时,在selenium python中上传照片

这是上传照片的html代码:

<div id="choose-photo" class="controls avatar-settings inline-upload-avatar dropdown center">
      <div class="uploader-image uploader-avatar clearfix">
        <div class="dropdown-menu">
  <div class="dropdown-caret">
    <span class="caret-outer"></span>
    <span class="caret-inner"></span>
  </div>
  <ul tabindex="-1" role="menu" aria-hidden="true">
    <li id="photo-choose-existing" class="photo-choose-existing upload-photo" role="presentation">
      <button type="button" class="dropdown-link" role="menuitem">Prze?lij zdj?cie</button>
      <div class="photo-selector">
  <button class="btn" type="button">
      Zmie? zdj?cie
    </button>
  <span class="photo-file-name">Nie wybrano pliku</span>
  <div class="image-selector">
    <input type="hidden" name="media_file_name" class="file-name">
    <input type="hidden" name="media_data_empty" class="file-data">
    <label class="t1-label">
      <span class="u-hiddenVisually">Dodaj zdj?cie</span>
      <input type="file" name="media_empty" class="file-input js-tooltip" tabindex="-1" accept="image/gif,image/jpeg,image/jpg,image/png" data-original-title="Dodaj zdj?cie">
    </label>
  </div>
</div>

    </li>
      <li id="photo-choose-webcam" class="u-hidden" role="presentation">
        <button …
Run Code Online (Sandbox Code Playgroud)

python selenium

5
推荐指数
1
解决办法
706
查看次数

广告服务器未填充

我知道这个话题已经发布了很多次,但是没有真正的解决方案可以解决这个问题。

最近,我决定在几个应用程序中进行更新。这是次要的更新,将库版本(也包括admob)更改为最新版本。我也将targetSdkVersion从25更改为26。几天后,我检查了admob的统计信息,所有这些应用中的填充率均降至0!并且请求的数量增加了。用于横幅和插页式广告。其他应用程序不受影响。

我以为这是一个愚蠢的错误,但是我在代码中找不到任何问题。

在横幅广告和插页式广告的日志中,我看到的是:

I /广告:广告服务器未填满。

W /广告:无法加载广告:3

我已尽力简化此问题,因此我从android studio模板创建了一个全新的项目-Google AdMob Ads Activity,并将包名称设置为其中一个受影响的应用。结果是一样的。仍然没有填补。

  • 我尝试将设备添加为测试设备,并且此日志

该请求是从测试设备发送的。

在确认这一点。

  • 我已经尝试过这篇文章中的虚拟广告ID:是否有AdMob虚拟ID?

  • 我尝试使用具有不同sdk级别的不同设备。

  • 我尝试过使用firebase-ads和play-services-ads。

  • 我尝试使用较旧的admob SDK。

  • 我尝试使用较低的targerSdkVersions。

所有这些都给我什么。但是我发现只有一种方法可以更改包装名称。立刻,无论是什么广告,无论它是不是测试设备,我总会收到一则广告。插页式广告和横幅。

这是我的MainActivity.java代码:

public class MainActivity extends AppCompatActivity {

    public static final String ADMOB_INTERSTITIAL_DUMMY = "ca-app-pub-3940256099942544/1033173712";
    public static final String ADMOB_INTERSTITIAL = "ca-app-pub-my_own_ad_id";
    public InterstitialAd interstitial;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        AdView adView = (AdView) findViewById(R.id.adView);
        adView.loadAd(newAdRequest());

        interstitial = new InterstitialAd(this);
        interstitial.setAdUnitId(ADMOB_INTERSTITIAL_DUMMY); //ADMOB_INTERSTITIAL
        interstitial.loadAd(newAdRequest());

        interstitial.setAdListener(new AdListener() {

            @Override
            public void onAdClosed() {
                super.onAdClosed();
                interstitial.loadAd(newAdRequest());
            } …
Run Code Online (Sandbox Code Playgroud)

android admob

5
推荐指数
1
解决办法
1559
查看次数