码迷,mamicode.com
首页 > 其他好文 > 详细

andorid 开发笔记 -- 问题与解决

时间:2015-04-14 12:51:50      阅读:140      评论:0      收藏:0      [点我收藏+]

标签:

1. SQLiteDataBase 中 TimeStamp 转化为 Date 的问题:java.text.ParseException: Unparseable date: "Sun Jan 25 21:15:51 GMT+08:00 2

      解决:读取数据时用 Cursor.GetString() 这样的方式读出来,导致转化时出现问题。

              TimeStamp 其实是一个整型的数据,代码如下:

    private Date getDateFromCursor(Cursor cursor, String columnName) throws Exception {
        long date = cursor.getLong(cursor.getColumnIndex(columnName));
        return new Date(date);
    }

  另外注意 insert or update TimeStamp 字段时,插入值应该是 date().getTime() 转化为长整型

 

2. ImageView.GetWidth() 为0

  OnCreate() 中显示数据的时ImageView.GetWidth() 为0,有人说这是因为 OnCreate 中垃圾回收,本人觉得是因为这里还没有创建View,所有的Layout均没有正确初始化,可以选择在 onWindowFocusChanged() 计算,这里可以得到正常值。

  但是有一个问题,OnWindowFocusChanged() 有可能会经常调用,例如点击菜单等

   另外有一种更好的解决办法:

        ViewTreeObserver viewTreeObserver = gameFrame.getViewTreeObserver();
        if (viewTreeObserver.isAlive()) {
            viewTreeObserver.addOnGlobalLayoutListener(new ViewTreeObserver.OnGlobalLayoutListener() {
                @TargetApi(Build.VERSION_CODES.JELLY_BEAN)
                @Override
                public void onGlobalLayout() {
                    gameFrame.getViewTreeObserver().removeOnGlobalLayoutListener(this);//移除响应,表示本监听只需要运行一次,获取需要的数据之后不再需要运行此过程
                    layoutX = gameFrame.getWidth();
                    layoutY = gameFrame.getHeight();
                    refreshView();
                }
            });
        }

 

 

3. 暂时正在滑动的图片,停在当前位置

很多人说用 clearAnimation(),事实证明这个不管用

倒是下面一句话给了我启示:

What you need to do is to calculate the amount of time into the current animation cycle, then create a new Animation with a 0 duration, fillEnabled, fillBefore and fillAfter set to true and for the amount of translation to be equal to the amount that the current animation would have been offsetting the View.

long currentTime = System.currentTimeMillis();//记录当前时间
long y = (-layoutY+ imageView.getHeight()) * (currentTime - backupTime) / 5000;  // 5000 为上文定义的动画时间,currentTime-backupTime 为动画运行时间
if(y < -layoutY)return;
imageView.clearAnimation();
imageView.offsetTopAndBottom((int)y);

  

本文原创, 转载请注明出处: http://www.cnblogs.com/EasyInvoice/p/4255456.html

andorid 开发笔记 -- 问题与解决

标签:

原文地址:http://www.cnblogs.com/EasyInvoice/p/4255456.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!