小编PPa*_*san的帖子

毕加索从文件系统加载图像

我可以使用Picasso库从文件系统加载图像吗?

startActivityForResult用来让用户从他的图库中选择一张照片,然后想要显示所选图像.

我已经有了工作代码来获取图像文件系统Uri,但无法使该Picasso.load()方法工作.

android picasso

73
推荐指数
5
解决办法
8万
查看次数

EditText性能:了解配置文件GPU渲染上的GPU处理时间

我正在研究提高性能的方法EditText,特别是在加载时间方面.当加载几千字或更多字的大型文档时,调用setText可以在我的一些测试设备和模拟器上冻结UI几秒钟.

作为回应,我已经探索了几种可能的解决方案,但都没有产生令人满意的结果.我试图按段落拆分大型文档,并将每个段落加载到自己的行RecyclerViewListView行中.由于导致滚动不稳定的问题,RecyclerView完全没有希望.ListView提供了很好的,几乎是即时的加载时间,以及非常好的滚动(虽然不如一个EditText块好),但是存在一个问题,即EditText行内的块在选中时会失去焦点.我也试图更新EditText从部分onProgressUpdateAsyncTask,希望用户可以用文字,因为它加载的部分进行交互,但加载时间基本上不受影响.

我探索过的最有希望的途径涉及改变以下元素AndroidManifest.xml:

    android:hardwareAccelerated="false"
Run Code Online (Sandbox Code Playgroud)

我在Google开发者频道上观看此YouTube视频片段中的以下片段后得到了这个想法.当我打开GPU Profile渲染时,我发现橙色条(代表"处理时间")每次都setText被调用.当我关闭硬件加速时,setText性能大幅提升,尽管其他领域(如滚动)变得更糟.

我想了解的是 - 为什么会发生这种情况?另外,有没有办法可以使用这些信息来进一步提高性能?我可以简单地以编程方式关闭和打开硬件加速吗?

值得一提的是,一些设备,如运行API 22的Nexus 7,在大型文档上调用setText时不会遇到任何问题,而其他设备真的很难加速硬件加速.我只想了解更好的情况,以便我可以尝试解决它!谢谢.

编辑:

这是一个GitHub存储库的链接,供任何人下载我的一个示例测试应用程序以复制我上面列出的问题.我还在网站上发布了三个视频,展示了这些问题,我将在下面进行讨论:

我做了三个视频演示,显示上运行这个程序, 华为Honor运行冬青4.4.2奇巧hardwareAccelerated设置属性trueAndroidManifest,然后用相同的手机设置为相同的属性false,以及一个独立的Nexus 7(2013)运行Lollipop 5.1启用了硬件加速功能.GPU分析在每种情况下都会启用.

荣誉霍莉 - 加速

Honor Holly - 加速关闭

Nexus 7(2013) - 加速开启

performance android android-edittext

5
推荐指数
0
解决办法
718
查看次数

使用ItemTouchHelper.Callback实现"Bounce Back"RecyclerView动画

我正在尝试RecyclerView使用Helper扩展的类在我的行中创建动画ItemTouchHelper.Callback.

默认的"滑动"行为ItemTouchHelper是,如果以足够的速度滑动一行,它将从视图中消失(即,滑动到dimiss).在我的情况下,我想创建一个动画,如果发生这样的事件,导致行直接反弹.

我已经能够创建一个ValueAnimator动画,如果它在屏幕上滑动,将该行动画回视图.但是,问题在于我无法让父ItemTouchHelper类识别x它存储的值已从行的宽度(因此它完全在屏幕外)更改为0(以便它返回到屏幕上).

这意味着每当我在完成自定义动画后与行进行交互时,它就像行仍然在屏幕外,即使它完全可见.这通常意味着按下它意味着行从一个X位置跳到行宽0X位置,因此再次从屏幕边缘重新生成动画.在完全重置并再次正常运行之前,它会执行此操作几次.

该视频将有助于显示问题.由于前两次滑动不在屏幕外,因此默认行为有效.然后将行从屏幕上滑下并反弹回来,点击该行会显示它从右边缘向后ping:

Youtube  -  ItemTouchHelper.Callback问题

这是我用来进行动画的代码:

public class CustomItemTouchHelper extends ItemTouchHelper.Callback {

    private RecoverAnimation ra;
    private boolean animatorRunning;

//...

    @Override
    public void onChildDraw(Canvas c, RecyclerView recyclerView, RecyclerView.ViewHolder viewHolder, float dX, float dY, int actionState, boolean isCurrentlyActive) {
        final float per = (dX/viewHolder.itemView.getWidth());
        if (per > 0.8F && !animatorRunning && !isCurrentlyActive) {
            ra = new RecoverAnimation(c, recyclerView, viewHolder, ItemTouchHelper.ANIMATION_TYPE_SWIPE_CANCEL, …
Run Code Online (Sandbox Code Playgroud)

android android-animation android-recyclerview

0
推荐指数
1
解决办法
2046
查看次数

在活动中获取android元素ID

如何在Android中获取元素ID

<EditText
   android:id="@+id/etCustomerNo"
Run Code Online (Sandbox Code Playgroud)

我需要在活动中访问editText的ID(例如,将“ etCustomerNo”获取为字符串)。谢谢。

我需要知道布局上所有editText的ID

for (int i = 0; i < rl.getChildCount(); i++) {
    if (rl.getChildAt(i) instanceof EditText) {
        String id = String.valueOf(rl.getChildAt(i).getId());
    }
}
Run Code Online (Sandbox Code Playgroud)

getId()返回一个int值而不是"etCustomerNo"

android android-edittext

0
推荐指数
1
解决办法
2726
查看次数