android¼Çʱ¾¿ª·¢±Ê¼Ç

ÅÝÔÚÍøÉϵÄÈÕ×Ó / ÎÄ ·¢±íÓÚ2013-04-13 10:01 µÚ´ÎÔĶÁ ¼Çʱ¾,android

   Ò»Ö±ÒÔÀ´¶¼Ã»Ê±¼äºÃºÃдһ¸ö°²×¿Æ½Ì¨µÄ¿Í»§¶Ë£¬Ò»ÊÇÒòΪ×Ô¼ºË®Æ½»¹ºÜÓÐÏÞ£¬¶þÊÇÐèÒª»¨ºÜ¶àʱ¼äÀ´Î¬»¤Õâ¸öÍøÕ¾¡£µ«×Ô´Ó°Ù¶ÈÎÞÇéµÄ°ÑÍøÕ¾kÁËÖ®ºó£¬ÎÒ¾õµÃºÃºÃµÄͶÈëandroidƽ̨ÉÏÀ´ÁË¡£

   ÎÒÏÖÔÚÏë×öµÄÊÇÒ»¸ö¼Çʱ¾³ÌÐò¡£

   ÎªÁËʵÏÖÕâ¸ö³ÌÐò£¬ÔÚ¸Õ¸Õ¿ªÊ¼Ñ§Ï°°²×¿µÄʱºòÎÒÕÒÁ˺ܶàÎÄÕ£¬×ÐϸÔĶÁÁ˰²×¿sdkÖеÄnotepadÀý×Ó³ÌÐò£¬Õâ¸öÀý×Ó³ÌÐòȷʵºÜÊʺÏÈëÃÅ£¬¿ÉÒÔÈÃÄãºÜ¿ì½Ó´¥µ½listviewÕâÑùµÄ»ù´¡¿Ø¼þ£¬°²×¿ÖÐÊý¾Ý¿â£¨SQLite£©µÄ²Ù×÷¡¢Êý¾Ý´æ´¢--ContentProvider£¬Fragment£¬InstanceStateÊý¾Ý±£´æ£¬ÒÔ¼°ÒâͼIntentµÄÓ÷¨£¬µ«ÊÇÀïÃæµÄºÜ¶à´¦Àí·½Ê½£¨±ÈÈçн¨Ò»¸ö¼Çʱ¾µÄÂß¼­£©£¬ÏԵ÷dz£»ìÂÒ£¬ºÜÈÝÒ×·¢Éúbug£¬±Ï¾¹ÕâÖ»ÊÇÒ»¸öѧϰµÄdemo£¬ÈÃÄã»ñµÃ¸ü¶àµÄÖ»ÊDZÈÈÃÄã»ñµÃÒ»¸öappÖØÒª¡£

   ÕâÎÒµÄÕâ¸öÍøÕ¾ÀïÃæÓкܶà¸Õ¸ÕËùÌáµ½µÄÏà¹ØÎÄÕ£¬¶¼ÊÇÎÒÆ½Ê±×ܽáµÄ£¬µÈÎÒÍê³ÉÕâÆªÎÄÕÂÖ®ºó£¬ÎÒ»áÕÒʱ¼ä°ÑÕâЩ×ÊÁÏËѼ¯ÔÚ´Ë£¬·½±ã´ó¼Ò²Î¿¼¡£

   ÔÚÕâ¸ö¼Çʱ¾ÖУ¬ÎªÁËʵÏÖ¼Çʱ¾×óÓÒ»¬¶¯ÄÜ·­µ½ÉÏһƪ»òÕßÏÂһƪ£¬ÎÒÃÇÒýÈëÁËÒ»¸ö×Ô¶¨ÒåµÄscrollLayoutÀ࣬scrollLayoutÀà¼Ì³Ð×ÔViewGroup£¬ÓÉÈý¸ö×Óview¹¹³É£¬µ«ÊÇÄÜÎÞÏÞÑ­»·ÏÔʾ¡£scrollLayoutÀàµÄʵÏÖ½è¼øÁËÍøÉϺܶàViewGroup×Ô¶¨Òå×óÓÒ»¬¶¯ÀàµÄʵÏÖ£¬Ö»ÊÇÔö¼ÓÁËÎÞÏÞÑ­»·»¬¶¯µÄ¹¦ÄÜ¡£

   ÆäʵʵÏÖÕâÒ»¹¦ÄÜÔÚ×ʼÎÒÏëµ½µÄ²»ÊÇViewGroup£¬¶øÊÇViewPager£¬ÔÚ´òËãд¼Çʱ¾Ö®Ç°£¬ÎÒ×îÏÈÔÚ¶¹°êµÄÔĶÁÆ÷ÉÏ¿´µ½ÕâÖÖ×óÓÒ»¬¶¯·­Ò³µÄЧ¹û£¬ºóÀ´·¢ÏÖ¶¹°ê¾ÍÊÇÓÃViewPagerÀ´ÊµÏֵġ£µ«ÊÇViewPagerÓиöÌìÈ»µÄȱÏÝ£¬¾ÍÊÇViewPager±ØÐë¸øËû¸³Ò»¸ö×ÓViewµÄ¸öÊý¡£Èç¹ûҪʵÏÖÑ­»·»¬¶¯µÄ»°£¬Õâ¸ö¸öÊý±ØÐëºÜ´ó£¬±ÈÈçintµÄ×î´óÖµ¡£×îºóÐÞ¸ÄÒ»ÏÂViewPagerµÄһЩ·½·¨£¬¾ÍÄÜÄ£ÄâÉÙÊý¼¸¸ö×ÓViewÎÞÏÞÑ­»·¡£ÕâÖÖ·½Ê½µÄЧ¹ûÆäʵ»¹²»´í¡£µ«ÊÇÒ»Ïëµ½Õâ¸öÑ­»·ÔÚÖ±¹ÛÉÏ¿ÉÄÜÓкܴóµÄÀË·Ñ£¨ÊÂʵÉÏÓÐûÓÐÀ˷Ѳ»È·¶¨£©£¬ÎÒ¹û¶Ï·ÅÆúÁËÕâÖÖ·½Ê½¡£

   scrollLayoutÀàҪʵÏÖÎÞÏÞÑ­»·»¬¶¯»¹ÊDZȽÏÄѵ쬯äÖÐÓм¸¸öÐèÒª·Ç³£×ÐϸµÄµØ·½£¬²»È»»¬¶¯ÆðÀ´×ÜÊÇÓÐÈÃÈ˲»ÂúÒâµÄÇé¿ö¡£

   1.computeScroll()·½·¨£º

   computeScroll()·½·¨¸ºÔðÔÚmScroller£¨Ò»¸ö¹ö¶¯Àà³ÉÔ±±äÁ¿£©¹ö¶¯ºÍÊÖÖ¸Í϶¯µÄʱºòÒÆ¶¯scrollLayoutµÄÏÔʾλÖ᣺ܶàÈ˶¼²»Ã÷°×ViewGroupµÄÏÔʾλÖõ½µ×´ú±íʲô£¬ÕâÀïÎÒֻ˵Õâ¸öÏÔʾλÖÃÌåÏÖÔÚgetScrollXÕâ¸öÖµÖС£

if (mScroller.computeScrollOffset()) {
    mTouchX = mScroller.getCurrX();
    Log.i("scroll","scrollling  mTouchX="+mTouchX);
    scrollTo(mScroller.getCurrX(), mScroller.getCurrY());
    postInvalidate();
}

ÉÏÃæµÄ´úÂë±íʾÈç¹û¹ö¶¯ÈÔÔÚ¼ÌÐø£¬ÄÇô֮ÐÐÆäÖеĴúÂë¡£µ«ÊÇÒ»µ©¹ö¶¯½áÊø£¬ÏÂÃæÕâ¶Î´úÂëÈÔ½«»áÖ´ÐУ¬¼´Ê¹ÄãµÄÊÖָʲô¶¼Ã»×ö¡£Ò²¾ÍÊÇ˵computeScroll·½·¨ÔÚûÓÐÈκβÙ×÷µÄÇé¿öÏ£¬»á´ÓmScroller¿ªÊ¼µÄ˲¼äÒ»Ö±µ÷Óõ½½áÊøµÄ˲¼ä£¨°üÀ¨½áÊø£©¡£

else if (mNextScreen != INVALID_SCREEN) {
            if (mNextScreen == -1) {
                mCurrentScreen = getChildCount() - 1;
                mHander.queryForNewPage(PREVIEOUS, mCurrentScreen);
                scrollTo(mCurrentScreen * getWidth(), getScrollY());
            } else if (mNextScreen == getChildCount()) {
                mCurrentScreen = 0;
                mHander.queryForNewPage(NEXT, mCurrentScreen);
                scrollTo(0, getScrollY());
            } else {
                int temp = mCurrentScreen;
                mCurrentScreen = Math.max(0,
                        Math.min(mNextScreen, getChildCount() - 1));
                if (mNextScreen > temp) {
                    mHander.queryForNewPage(NEXT, mCurrentScreen);
                } else {
                    mHander.queryForNewPage(PREVIEOUS, mCurrentScreen);
                }
            }
            mNextScreen = INVALID_SCREEN;
        }


ÉÏһƪ£ºÎªÊ²Ã´ÎÒ¾ö¶¨Òª¸Ä°æÎÒµÄÍøÕ¾£¬ÒÔ¼°Ò»Ð©ËéËéÄî
08·¢ÉúÁËÁ½¼þ¼ÇÒäºÜÉîµÄÊ£¬µÚÒ»¼þÊÂÈ«¹úÈËÃñ¶¼ÖªµÀ£¬5.12´óµØÕð¡£µ±Ê±ÎÒÔڳɶ¼£¬ÒѾ­ÊÇÂíÉÏ´óÈýµÄÈËÁË£¬ÓÚÊǾõ¶¨²Î¼Ó¶«ÈíÔÚÎÒÃÇѧУ×éÖ¯µÄÅàѵ£¬ÅàѵÕâ¼þÊ£¬ÊÇÎÒ¼ÇÒä½ÏÉîµÄµÚ¶þ¼þÊ¡£ ±¾À´¶«ÈíÔڳɶ¼µÄÅàѵ»ùµØÊÇÔÚÇà³ÇɽÏ£¬¿Éϧ08ÄêµÄµØÕð°Ñ¶«ÈíµÄ·¿×Ó¸ø
ÏÂһƪ£ºandroid¼Çʱ¾¿ª·¢±Ê¼Ç2-¼ÇÊÂÁбíµÄ¶àÑ¡²Ù×÷
Ò»°ãÀ´Ëµ£¬ÔÚ°²×¿Ó¦ÓÃÖÐlistviewµÄ¶àÑ¡²Ù×÷¶¼ÊǺÍActionMode½áºÏÆðÀ´µÄ¡£ActionMode¿ÉÒÔÀí½âΪactionbarµÄÁíÒ»ÖÖÐÎʽ£¬Í¬Ñù¿ÉÒÔÔڲ˵¥ÖÐÌí¼Ó¶¯×÷ÏͬÑù¿ÉÒÔͨ¹ýsetCustomView×Ô¶¨Ò嶯×÷À¸£¬²¢ÇÒµ±Æô¶¯ActionModeÖ®ºó£¬ËüËùÕ¼¾ÝµÄλÖÃÊǺÍactionbarÖØµþµÄ¡£
ÍÆ¼öÎÄÕÂ
ÔÞÖúÉÌ