刚刚宣布了具有强大功能的新firebase,但根据文档(https://firebase.google.com/docs/android/setup#prerequisites),现在需要android studio(以及gradle).目前在我的cocos2d-x应用程序中,我必须使用ADT/Eclipse来构建应用程序,因为还没有支持gradle(但是cocos2d-x团队正在开发它).我现在使用的是旧版本的sdk,它只是一个jar文件.有没有办法在eclipse中使用新的firebase?让我最担心的是插件:
apply plugin: 'com.google.gms.google-services'
Run Code Online (Sandbox Code Playgroud) 我在项目中遇到非常烦人的警告:
WARNING: API 'variant.getMergeResources()' is obsolete and has been replaced with 'variant.getMergeResourcesProvider()'.
It will be removed at the end of 2019.
For more information, see https://d.android.com/r/tools/task-configuration-avoidance.
REASON: It is currently called from the following trace:
...
WARNING: Debugging obsolete API calls can take time during configuration. It's recommended to not keep it on at all times.
Affected Modules: app
Run Code Online (Sandbox Code Playgroud)
由于该警告将在明年成为错误,因此我想一劳永逸地修复它。
我已经更新了gradle插件,google play服务插件和所有依赖项,但是问题仍然存在。
这是项目级别的build.gradle文件:
buildscript {
repositories {
google()
jcenter()
}
dependencies {
classpath 'com.android.tools.build:gradle:3.4.1'
classpath 'com.google.gms:google-services:4.3.0'
}
} …Run Code Online (Sandbox Code Playgroud) 我使用的是RecyclerView与RatingBar每一个排.现在,有时RatingBars的一部分绘制不正确.离开屏幕并返回后,它们都恢复正常.我不知道为什么会发生这种情况,我甚至删除了任何样式,RatingBar所以它应该具有默认外观.
这是它的样子:
在Nexus 6P(Android 7.1.1)上测试过.还在三星Galaxy J3(2016)(Android 5.1.1)上测试过,这里没有问题.
我还补充道
holder.rbRating.requestLayout();
Run Code Online (Sandbox Code Playgroud)
在onBindViewHolder().它减少了一点问题,但它仍然存在.当我重复使用屏幕上的"坏"行时,它看起来很好.
这是行布局:
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:paddingTop="@dimen/main_margin_top"
android:paddingBottom="@dimen/main_margin_top"
android:layout_width="match_parent"
android:layout_height="wrap_content" >
<TextView
android:id="@+id/tvRatingTitle"
android:text="Czysto?? wody"
android:textSize="16sp"
android:textStyle="bold"
android:layout_centerHorizontal="true"
android:layout_width="wrap_content"
android:layout_height="wrap_content" />
<RatingBar
android:id="@+id/rbRating"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="4dp"
android:isIndicator="true"
android:layout_centerHorizontal="true"
android:layout_below="@+id/tvRatingTitle"
android:numStars="5"
android:rating="2.5"
android:stepSize="0.1" />
<CheckBox
android:id="@+id/chkMissing"
android:text="Zaznacz je?li nie ma"
android:layout_centerHorizontal="true"
android:layout_below="@+id/rbRating"
android:layout_width="wrap_content"
android:layout_height="wrap_content" />
</RelativeLayout>
Run Code Online (Sandbox Code Playgroud)
我也尝试过转换android.support.v7.widget.AppCompatRatingBar,但它没有任何区别.
编辑:
@Muhib Pirani解决方案似乎有效,但我有两个小问题:
1)在Nexus 6P上,第一层星星偏移几个像素(放大查看):
2)在三星Galaxy J3(2016)上看起来像这样:
我对边界很好,但我希望它们在空星中也是绿色(不是灰色,背景应该是灰色的).
我正在使用谷歌地图中的热图图层显示热图,但是,我现在有太多的点,它停止工作,因为浏览器无法再处理它了.我发现它们提供了Fusion Tables,但它们也有限:到100k行,这太低了.我需要渲染数百万的热图或者甚至更多的点.如果我的服务器可以有一些PHP脚本来渲染热图,例如,每天一次,我会很完美.然后来自js的客户端将只下载预加载的热图(在地图上像谷歌地图,但也可能是不同的地图).这是否可以通过一些现有技术(可以是商业的)?
我想使用一些图标创建一个UITableView带标题标签和嵌入UICollectionView(它知道它的大小)UITableViewAutomaticDimension.UITableView当我在UICollectionView里面时,问题是找出细胞高度有问题.我必须滚动UITableView一下才能重新计算尺寸.但即便如此,它也存在高度问题(如果从较大的高度重复使用它会太大).除了UICollectionView乞讨之外,内部的图标不知道,但它们是从服务器加载的.
我也尝试为a创建一个高度约束UICollectionView,但是这样我得到"无法同时满足由冲突引起的约束",UIView-Encapsulated-Layout-Height并且我自己的约束无论如何都被删除了.
我已经创建了一个带有示例项目的GitHub存储库(我尽可能简单地完成了它):
我已经创建了这个类的Swift版本:https://github.com/bennythemink/ZoomRotatePanImageView/blob/master/ZoomRotatePanImageView.m效果很好.现在我想将修改后的图像保存到文件中.问题是我想以全分辨率保存它,而且我想保存只对用户可见的区域.
让我举个简单的例子:
这就是它在我的应用程序中的外观.图像是iOS模拟器中的一些示例.大多数是在屏幕外.我只想看到可见的部分.
保存后没有裁剪它看起来像这样:
到目前为止,剪裁后效果非常好.
但现在让我们做一些改变:
保存后:
看起来它被错误的支点所改变.我该如何解决?
这是我保存的代码:
UIGraphicsBeginImageContextWithOptions(image.size, false, 0)
let context = UIGraphicsGetCurrentContext()
let transform = imageView.transform
let imageRect = CGRectMake(0, 0, image.size.width, image.size.height)
CGContextSetFillColorWithColor(context, UIColor.blueColor().CGColor) //for debugging
CGContextFillRect(context, imageRect)
CGContextConcatCTM(context, transform)
image.drawInRect(imageRect)
let newImage = UIGraphicsGetImageFromCurrentImageContext()!
UIGraphicsEndImageContext()
Run Code Online (Sandbox Code Playgroud)
有一种更简单的方法来实现它:
UIGraphicsBeginImageContextWithOptions(imageContainer.bounds.size, false, 0)
self.imageContainer.drawViewHierarchyInRect(imageContainer.bounds, afterScreenUpdates: true)
let screenshot = UIGraphicsGetImageFromCurrentImageContext()!
UIGraphicsEndImageContext()
Run Code Online (Sandbox Code Playgroud)
但是输出图像的视图大小不是实际图像,我希望它以全分辨率.
自从我的Mac OS X更新到El Capitan(以及安卓工作室从1.5.1到2.x使用所有工具和sdks)我在Android Studio中遇到了我的libgdx-robovm游戏问题.当我在做Gradle Sync时,它总是挂起:
执行任务:[:android:generateDebugSources,:android:generateDebugAndroidTestSources,:android:mockableAndroidJar,:android:prepareDebugUnitTestDependencies,:android-full:generateDebugSources,:android-full:generateDebugAndroidTestSources,:android-full:mockableAndroidJar,:android-full: prepareDebugUnitTestDependencies]
总是.悬挂我的意思是永远.
我看到很少有同样问题的主题,但我找不到任何解决方案,我真的很沮丧.我试过了:
1)确保我安装了zlib(s /usr/include/zlib.h),
2)在Global Gradle设置中我尝试打开"离线工作",但结果是一样的,
3)清除robovm和gradle缓存,
4)重启Android Studio,
5)将Android Studio更新到最新的稳定版本,
6)我已经尝试了最新的gradle,但它只是提出了新的问题,最后在摆脱它们后我得到了相同的点(悬挂),
7)删除.gradle目录,
8)删除构建目录的内容,
9)清洁和重建,
10)无效和重新启动 - 重新启动后它没有挂起,但任何操作(清理,重建,同步)都会再次挂起,
11)尝试过较旧的Android Studio(1.5.1),
12)尝试了不同的gradle插件版本:1.2.3,1.5.0,2.0 +
13)尝试了不同的android构建工具(22.0.1和23.xx)
14)直接从控制台编译(使用-d获取更多日志):
最后几行:
11:17:41.891 [DEBUG] [org.gradle.model.internal.registry.DefaultModelRegistry]将模型元素'tasks.tasks'转换为状态GraphClosed.
11:17:41.891 [INFO] [org.gradle.execution.TaskNameResolvingBuildConfigurationAction
]从项目中选择的主要任务"任务":11:17:41.893 [DEBUG] [org.gradle.execution.taskgraph.DefaultTaskGraphExecuter]时间:
创建DAG耗时0.002秒11:17:41.894 [INFO] [org.gradle.BuildLogger]评估所有项目.
配置> 7/7项目
(永远......)
编辑:
可能导致这种冻结的问题是我有ios(robovm)的2个子项目,当我删除其中一个时,它最终起作用.这只是ios的一个问题,因为android 2子模块不是问题.我还必须将robovm更新到最新版本.
这是我的代码:
class LoginUserResponse : Codable {
var result: String = ""
var data: LoginUserResponseData?
var mess: [String] = []
}
public class LoginUserResponseData : Codable {
var userId = "0"
var name = ""
}
Run Code Online (Sandbox Code Playgroud)
现在,调用服务器 API 我正在解析这样的响应(使用 Stuff 库来简化解析):
do {
let loginUserResponse = try LoginUserResponse(json: string)
} catch let error {
print(error)
}
Run Code Online (Sandbox Code Playgroud)
当我输入正确的密码时,我会得到这样的答案:
{"result":"success","data":{"userId":"10","name":"Foo"},"mess":["You're logged in"]}
Run Code Online (Sandbox Code Playgroud)
这很好,解析器工作正常。
提供错误密码时给出以下答案:
{"result":"error","data":{},"mess":["Wrong password"]}
Run Code Online (Sandbox Code Playgroud)
在这种情况下,解析器失败了。它应该将数据设置为 nil,而是尝试将其解码为 LoginUserResponseData 对象。
我在使用改造的 Android 上使用相同的方法,它工作正常。我宁愿不想将所有字段都设为可选。
有没有办法让解析器将空的 json {} 视为 nil?或者将 LoginUserResponseData 设为非可选并且它只有默认值?我知道我可以为此创建一个自定义解析器,但我有大量这样的请求,它需要太多的额外工作。
从Android Kitkat(4.4.2)将我的华为Ascend P7更新到Android Lolipop(5.1.1)后,当我启动应用程序时,我开始遇到两个非常棘手的问题:
1)(Android Studio,Eclipse,来自终端的ADB)
[2015-10-20 09:34:48 - myapp] ------------------------------
[2015-10-20 09:34:48 - myapp] Android Launch!
[2015-10-20 09:34:48 - myapp] adb is running normally.
[2015-10-20 09:34:48 - myapp] Performing com.example.myapp.MainActivity activity launch
[2015-10-20 09:34:49 - myapp] Automatic Target Mode: using device '7N2SRA153S024947'
[2015-10-20 09:34:49 - myapp] Uploading myapp.apk onto device '7N2SRA153S024947'
[2015-10-20 09:34:51 - myapp] Installing myapp.apk...
[2015-10-20 09:35:12 - myapp] Success!
[2015-10-20 09:35:13 - myapp] Starting activity com.example.myapp.MainActivity on device 7N2SRA153S024947
[2015-10-20 09:35:13 - myapp] ActivityManager: java.lang.UnsatisfiedLinkError: No …Run Code Online (Sandbox Code Playgroud) 我做了一个简单的测试:
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'