我可以使用Picasso库从文件系统加载图像吗?
我startActivityForResult
用来让用户从他的图库中选择一张照片,然后想要显示所选图像.
我已经有了工作代码来获取图像文件系统Uri
,但无法使该Picasso.load()
方法工作.
当从Android Gallery(使用startActivityForResult)加载"大"图像(> 1.5MB)时,我使用Picasso获得Out Of Memory异常.
我正在使用自定义Target对象,因为我需要在Bitmap准备好时对其进行预处理,并且我还使用自定义Transform对象来缩放Bitmap.
问题是public Bitmap transform(Bitmap source)
我的Transform对象上的方法永远不会被调用,因为Out Of Memory Exception,所以我没有机会重新采样图像.
但是,如果我使用该.resize(maxWidth, maxHeight)
方法,那么它加载图像确定.我认为Transform对象也是出于这个目的,但似乎在调整大小后调用transform方法,如果我不调用resize,那么它将以Out of Memory结束.
问题是,使用resize我需要指定宽度和高度,但我需要缩放并保持纵横比.
考虑到图像将从用户图库中选择,因此它们可以更大或更小,纵向,平方或横向等,因此我需要自己的Transformation对象来执行需要我的应用程序的逻辑.
我正在使用Fragments实现菜单导航.所以我从Home开始,然后用户可以导航到每个部分的不同部分和细节.
当用户更改部分时,我会在fragmentmanager backstack上调用pop,直到我到达Home,然后加载新部分.
这一切都按预期工作.但是我遇到了这个问题:
我已经迭代了backstack并打印了每个片段,并且它不是菜单中的片段.
我在onResume()方法上放了一个调试标记(setHasOptionsMenu(true)
标记的地方),它确实进入了这里,所以片段它仍然在某处.
我想知道我做错了什么,我怎么能解决它,谢谢
更新:
我正在使用此代码加载新片段
fm.beginTransaction()
.add(container, sectionFragment.getFragment())
.addToBackStack(sectionFragment.getFragmentName())
.commit();
Run Code Online (Sandbox Code Playgroud)
并删除:
private void clearStack(){
int count = fm.getBackStackEntryCount();
while(count > 1){
fm.popBackStack();
count--;
}
}
Run Code Online (Sandbox Code Playgroud)
注1:我正在使用add而不是替换,因为当我从详细信息部分导航回来时,我不想丢失我的片段的状态.当我加载另一个不同的部分,然后我调用clearStack将堆栈弹出到1,然后加载新的片段.最后,我调用executePendingTransactions()来完成从事务中删除片段.
注2:我看到它正在我的片段onDestroy()方法上进入,所以它被摧毁了.但我不知道为什么在Main活动恢复时会再次调用它.
android android-fragments fragmentmanager android-nested-fragment
我在UsersController类中执行以下操作"/ login"路由操作时遇到问题
public function actionLogin(){
$data = Yii::$app->getRequest()->getBodyParams();
$model = new Usuario();
//Validamos que se hayan recibido los campos
if(empty($data['email']) || empty($data['password'])){
throw new \yii\web\BadRequestHttpException("Debe ingresar email y password");
}
//Validamos usuario y contraseña
$usuario = $model->findByUsername($data['email']);
if(empty($usuario) || !$usuario->validatePassword($data['password'])){
throw new \yii\web\UnauthorizedHttpException("Usuario y/o contraseña incorrectos");
}
return $usuario;
}
Run Code Online (Sandbox Code Playgroud)
情况是我正在使用POST方法执行登录,并且我从不同的域调用此路由,因此前端库首先尝试使用OPTIONS方法调用/ login route以检查是否允许调用/使用POST登录..
问题是yii2 rest ActiveController的内置功能仅适用于/ users和/ users/{id}
如果我通过动作verbFilter手动添加此/登录路由以在POST和OPTIONS中都可用,则yii尝试使用OPTIONS请求实际调用登录操作.我的意思是,它正在尝试登录.当然它不能,因为它不发送电子邮件和密码字段,但我可以在日志文件中看到错误.
所以,我的问题是......有没有办法正确配置这个"自定义"路由动作并使OPTIONS执行透明?因为我期望在使用OPTIONS调用它时不会执行登录操作,而是直接返回OPTIONS允许的方法头.
更新信息:添加了URL管理器规则
'urlManager' => [
'enablePrettyUrl' => true,
'enableStrictParsing' => true,
'showScriptName' => true,
'rules' => [
[
'class' => 'yii\rest\UrlRule', …
Run Code Online (Sandbox Code Playgroud) 通过配置更改字体大小显示设置时,我遇到了一些Android设备的问题.
在网络浏览器中,我的应用很简单,忽略了这一点 对于其他一些手机也是如此.
但是对于某些特定的手机(如摩托罗拉G或X),更改此配置也会影响我的Phonegap应用程序.
我不知道如何避免这种情况使应用程序看起来一致
情况就是这样:我是Yii2的新手,想在ActiveForm中使用一些文件上传器小部件..到目前为止,我发现了这个非常好的一个:\ kartik\widget\FileInput
使用此小部件,我可以管理文件上传,然后,当进入编辑模式时,使用oportunite显示上一个上传的图像以替换它.
问题是,如果我在没有修改图像的情况下按下表单的"更新"按钮,则表示图像"不能为空",因为我在模型中设置了"必需"规则.
我正在使用MySql数据库,因此我在db模式中将列类型定义为Tinyint(1).
在我的ActiveRecord中,我设置了布尔验证器.保存逻辑按预期工作.
我现在想要的是,当我调用Yii2 REST服务时,返回布尔字段为true或false而不是1或0,因为在客户端,框架带有严格的比较(===),1与true不同.
当然,我可以在发送内容之前手动覆盖该值,或者在将其加载到模型之前在客户端上覆盖该值,但我希望有一个更清晰的解决方案.
构建并运行Android应用程序后,它关闭.
查看Eclipse logcat,它显示了一个未找到的类com.ionic.keyboard.IonicKeyboard
我是Ionic的新手,我不知道如何让它起作用.提前致谢
我最近下载了最后一个版本的moment.js,它在尝试调用时开始显示以下消息,例如, moment().add(1, 'day');
"Deprecation warning: Accessing Moment through the global scope is deprecated, and will be removed in an upcoming release."
Run Code Online (Sandbox Code Playgroud)
什么是最好的方式来称呼时刻?
更新:找出问题所在
问题出现了,因为我在我的项目中有requirejs,而且我试图警告我,我应该使用momentjs作为模块依赖.
以下代码是从momentjs v2.9.0中提取的
// CommonJS module is defined
if (hasModule) {
module.exports = moment;
} else if (typeof define === 'function' && define.amd) {
define('moment', function (require, exports, module) {
if (module.config && module.config() && module.config().noGlobal === true) {
// release the global variable
globalScope.moment = oldGlobalMoment;
}
return moment;
});
makeGlobal(true);
} else {
makeGlobal();
} …
Run Code Online (Sandbox Code Playgroud) android ×4
yii2 ×3
php ×2
picasso ×2
cordova ×1
file-upload ×1
javascript ×1
momentjs ×1
rest ×1
yii2-model ×1