我在视图中嵌入了一个按钮,它位于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%的情况下.但有时候 - 当关闭时 - 按钮会在屏幕外传送并从那里移向终点.
同时我也从屏幕外移动菜单视图控制器(关闭恰好相反的值): …
我做了一个简单的测试:
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)
下面是它的工作原理:
city),我想测试它是否在多边形内,输出是:
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'
我想在视图周围创建一个虚线边框,可以移动/旋转/缩放.
这是我的代码:
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) 我正在尝试模拟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管理器中做到这一点,我设置相同的屏幕尺寸和分辨率,但应用程序看起来非常不同(在真实设备上一切都要大得多,换句话说,我可以看到更少的内容).
以下是设置的外观:
我认为屏幕尺寸应该是正常的,但没有办法改变它 - 它会根据屏幕尺寸和分辨率自动改变.
是否有可能以某种方式更改以模拟此设备?
我想在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) 所以,我正在使用这个库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)
但它看起来并不像预期的那样。
用户画面:
并输出图像(不裁剪,因为我不想裁剪哪一边):
我怎样才能解决这个问题?有什么解决办法吗?
我正在尝试将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) 第一次我无法编译 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/ …
这是上传照片的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) 我知道这个话题已经发布了很多次,但是没有真正的解决方案可以解决这个问题。
最近,我决定在几个应用程序中进行更新。这是次要的更新,将库版本(也包括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)