我正在为Android 2.1开发一个应用程序.我想让我的用户在我的应用程序中选择个人资料图片(我没有使用联系人框架).
理想的解决方案是启动一个使用户能够从图库中选择图像的意图,但如果没有合适的图像,则使用相机拍照(反之亦然,即允许用户拍照,但如果他们知道他们已经有了合适的图像,让他们进入画廊并选择所述图像).
目前我可以做其中一个但不能两个都做.
如果我使用MediaStore.ACTION_IMAGE_CAPTURE直接进入相机模式,则无法进入图库.
如果我使用Intent.ACTION_PICK直接进入图库,那么我可以选择一个图像,但是如果我单击相机按钮(在图库的右上角),则会触发新的相机意图.因此,拍摄的任何照片都不会直接返回给我的应用程序.(当然你可以按后退按钮退回到图库并从那里选择图像,但这是一个额外的不必要的步骤,并不是很直观).
那么有没有办法将两者结合起来,或者我是否必须提供一个菜单来从我的应用程序中做一个或另一个?看起来这将是一个常见的用例...当然我错过了什么?
我想在谷歌地图视图上的我的位置显示一个箭头,显示我相对于目的地位置(而不是北方)的方向.
a)我使用磁力计和加速度计的传感器值计算了北方.我知道这是正确的,因为它与谷歌地图视图中使用的指南针对齐.
b)我使用myLocation.bearingTo(destLocation)计算了从我的位置到目的地位置的初始方位;
我错过了最后一步; 从这两个值(a和b)我用什么公式来得出手机相对于目的地位置的方向?
感谢任何有关心灵的帮助!
我正在使用改造,我觉得rxjava(with retrolambda)非常适合以下流程:
为每个小部件
a)获取给定窗口小部件类型的文章列表(http)
b)将所有文章保存到db
c)获取列表中的第一篇(最新)文章并使用本文中的适当值更新widget.articleName和widget.articleUrl
但是我不确定在步骤2a之后该怎么做.到目前为止,这是我的代码
apiService.getWidgets(token)
.flatMapIterable(widgets -> widgets)
.flatMap(widget -> apiService.getArticles(token, widget.type))
...
.toList()
.subscribe(
modifiedWidgets -> saveWidgets(modifiedWidgets),
throwable -> processWidgetError(throwable)
);
Run Code Online (Sandbox Code Playgroud)
我玩过一些操作员,但是当链接时,我似乎总是缩小范围(例如,获取单个文章的句柄),然后再也无法访问原始小部件进行修改.
@GET("/widgets")
Observable<List<Widget>> getWidgets(@Header("Authorization") String token);
@GET("/articles")
Observable<List<Article>> getArticles(@Header("Authorization") String token, @Query("type") String type);
Run Code Online (Sandbox Code Playgroud) 我已经实现了一些手势检测代码,以便我可以检测列表视图中的行(位于FrameLayout中)是否已被刷过.
public boolean onFling(MotionEvent e1, MotionEvent e2, float velocityX, float velocityY) {
if (e2.getX() - e1.getX() > SWIPE_MIN_DISTANCE && Math.abs(velocityX) > SWIPE_THRESHOLD_VELOCITY) {
int itemId = MainActivity.this.getListView().pointToPosition((int) e1.getX(),(int) e1.getY());
Offer order = (Offer)MainActivity.this.getListView().getAdapter().getItem(itemId);
View v = MainActivity.this.getListView().getChildAt(itemId);
}
}
Run Code Online (Sandbox Code Playgroud)
我想在滑动行的顶部显示一个视图,其中包含该行的一组上下文相关选项.
我的问题是以下方法:
v.getTop()
v.getBottom()
Run Code Online (Sandbox Code Playgroud)
仅在滚动视图之前返回正确的值.我可以做一些计算来计算使用滚动位置等的偏移量,但我也注意到,当我在屏幕上滑动可见的行时,我只获取值.如果我向下滚动列表然后滑动一行(原来不在屏幕外),则这些方法返回空值.
以下方法似乎遇到了同样的问题......
v.getLocationOnScreen(loc)
v.getLocationInWindow(loc)
Run Code Online (Sandbox Code Playgroud)
最后,我希望找到可见列表顶部与已刷过的行之间的距离.然后,我将使用此距离将父视图添加到具有适当高度填充的父FrameLayout(以便它覆盖滑动的行).
任何帮助将非常感激!
当我将数据加载到我的片段中时,我希望片段中间有一个不确定的微调器(下图中的示例),以向用户显示内容正在该特定窗格中加载.
在Honeycomb中做到这一点的最佳方法是什么?
我真的不想在操作栏中使用微调器,在数据加载的地方并不是很明显.此外,我不想要一个不确定的进度对话框,因为它出现在整个应用程序的中心,也阻止用户做任何其他事情,直到它被解雇.NB FragmentDialogs似乎也这样做.
我是否需要使用自定义FrameLayout来解决每个窗格所需的效果?

android spinner progressdialog android-fragments android-3.0-honeycomb
我正在尝试在Android中构建自定义时钟视图.见图http://twitpic.com/1devk7
到目前为止,绘制时间和小时标记我一直在使用Canvas.rotate方法来获得所需的效果.但是,请注意,由于绘制它们的角度,很难解释时钟下半部分的数字(例如6或9?).
使用drawText时,是否可以以45/90/180度绘制文本,以便在我的onDraw方法完成后所有文本都显示为直立?