【Android源码 栏目提醒】:网学会员为需要Android源码 的朋友们搜集整理了Android连连看源代码 doc - 技术总结相关资料,希望对各位网友有所帮助!
运行出来效果如下MainActivitypackage games.llkimport
android.app.Activityimport
android.os.Bundlepublic class Main extends Activity / Called when the activity is first created. / Override public void onCreateBundle savedInstanceState super.onCreatesavedInstanceState //setContentViewR.layout.main setContentViewnew GameViewthis GameViewpackage games.llkimport java.util.Randomimport
android.content.Contextimport
android.content.res.Resourcesimport
android.graphics.Bitmapimport
android.graphics.BitmapFactoryimport
android.graphics.Canvasimport
android.graphics.Paintimport
android.graphics.Pointimport
android.graphics.Rectimport
android.graphics.Bitmap.Configimport
android.os.Handlerimport
android.view.MotionEventimport
android.view.Viewpublic class GameView extends View private int m_wprivate int m_hprivate int top_clientprivate int right_clientprivate int bottom_clientprivate int left_clientprivate Rect client_rprivate Paint p_client_rprivate boolean display_moreInfoprivate boolean isInitedprivate Paint pprivate Paint p_lineprivate Paint p_line_2private Paint p_textprivate Paint p_pross_bprivate Paint p_prossprivate int point_wprivate int point_hprivate Rect btn_r_1private Rect btn_r_2private Rect btn_r_closeprivate Bitmap bmp_btnprivate Rect pross_rprivate Rect pross_r_2private Rect t_rprivate Rect t_r_2private boolean ispausefalseprivate boolean isstartfalseprivate String s_pausequot暂停中。
quotprivate Bitmap buffprivate Bitmap bmp_pointprivate Bitmap bmp_hintprivate Canvas buff_Canvasprivate int flevel private int ffen 0private int timecount0private int timecountper_l 480private boolean isdrawingfalse private Random randomnew Randomprivate Resources resprivate Point pointlist_tmp private int pointlist_tmp_count0private RefreshHandler mRedrawHandler new RefreshHandlerprivate Point mousept private Point lastpt private Point hintpt_1 private Point hintpt_2 private boolean isontimeringfalseprivate boolean isonmousedownfalseprivate int ontimercount0class RefreshHandler extends Handler Overridepublic void handleMessageandroid.os.Message msgGameView.this.ontimer nexttimer240public void nexttimer long delayMillis this.removeMessages0sendMessageDelayedobtainMessage0 delayMillisprivate Pointlist fpointlist new Pointlistclass Pointlistprivate int fxcountprivate int fycountprivate int l1private int l2private PointData fpointreclistclass PointDatapublic int xpublic int ypublic boolean valuepublic Object datapublic Rect rectpublic int statpublic int imgidxprivate Point plist_1private int plist_1_lenprivate Point plist_2private int plist_2_lenprivate Point pathlistpublic int pcount 0public void initint xcount int ycountfxcountxcountfycountycountfpointreclistnew PointDatafxcount2fycount2for int x_i 0 x_i lt fpointreclist.length x_ifor int y_i 0 y_i lt fpointreclistx_i.length y_ifpointreclistx_iy_inew PointDatafpointreclistx_iy_i.xx_ifpointreclistx_iy_i.yy_ifpointreclistx_iy_i.valuefalsefpointreclistx_iy_i.datanullfpointreclistx_iy_i.rectnew Rect0000fpointreclistx_iy_i.stat-1fpointreclistx_iy_i.imgidx-1plist_1new Pointfxcountfycount24for int i 0 i lt plist_1.length iplist_1inew Point00plist_1_len0plist_2new Pointfxcountfycount24for int i 0 i lt plist_2.length iplist_2inew Point00plist_2_len0pathlistnew Point2for int i 0 i lt pathlist.length ipathlistinew Point00l1new intfxcount2l2new intfxcount2public void setValueint xint yBoolean value fpointreclistxy.value valuepublic boolean getValueint xint yreturn fpointreclistxy.value public void setDataint xint yObject data fpointreclistxy.data datapublic void setrectint xint yRect r fpointreclistxy.rect.left r.left fpointreclistxy.rect.top r.top fpointreclistxy.rect.right r.right fpointreclistxy.rect.bottom r.bottom public Rect getrectint xint y return fpointreclistxy.rectpublic void setstatint xint yint v fpointreclistxy.statvpublic int getstatint xint yreturn fpointreclistxy.statpublic void setimgidxint xint yint v fpointreclistxy.imgidxvpublic int getimgidxint xint yreturn fpointreclistxy.imgidxpublic boolean checkppPoint p1Point p2boolean resultfalse if p1.x p2.x ampamp p1.y p2.y return true if p1.y p2.y int x1 p1.x lt p2.xp1.x:p2.x int x2 p1.x gt p2.xp1.x:p2.x for int ix11 iltx2-1i if fpointreclistip1.y.value return false result true if p1.x p2.x int y1 p1.y lt p2.yp1.y:p2.y int y2 p1.y gt p2.yp1.y:p2.y for int iy11 ilty2-1i if fpointreclistp1.xi.value return false result true return resultpublic void mousetoxyint xint y Point ptfor int x_i 1 x_i lt fxcount x_ifor int y_i 1 y_i lt fycount y_iif fpointreclistx_iy_i.rect.containsxypt.xx_ipt.yy_ireturnpt.x-1pt.y-1public boolean isallokfor int x_i 1 x_i lt fxcount x_ifor int y_i 1 y_i lt fycount y_iif fpointreclistx_iy_i.statgt0return falsereturn truepublic void changeplaceint vint idx0if v 2 v 6 for int i 1 iltfxcounti idx 0 for int j 1 jlt fycount j if getstati j gt 0 idxidx1 l1idx getimgidxi j l2idx getstati j for int j 1 jltfycountj if j gt idx setimgidxi j -1 setstati j -1 setValuei j false else setimgidxi j l1j setstati j l2j setValuei j true if v 3 v 7 for int i 1 iltfxcounti idx fycount1 for int j fycount jgt1 j-- if getstati j gt 0 idxidx-1 l1idx getimgidxi j l2idx getstati j for int j fycount jgt1j-- if j lt idx setimgidxi j -1 setstati j -1 setValuei j false else setimgidxi j l1j setstati j l2j setValuei j true if v 4 v 8 for int j 1 jlt fycount j idx 0 for int i 1 iltfxcounti if getstati j gt 0 idxidx1 l1idx getimgidxi j l2idx getstati j for int i 1 iltfxcounti if i gt idx setimgidxi j -1 setstati j -1 setValuei j false else setimgidxi j l1i setstati j l2i setValuei j true if v 5 v 9 for int j 1 jlt fycount j idx fxcount1 for int i fxcount igt1i-- if getstati j gt 0 idxidx-1 l1idx getimgidxi j l2idx getstati j for int i fxcount igt1i-- if i lt idx setimgidxi j -1 setstati j -1 setValuei j false else setimgidxi j l1i setstati j l2i setValuei j true public void findstatint v Point ptfor int x_i 0 x_i lt fpointreclist.length x_ifor int y_i 0 y_i lt fpointreclistx_i.length y_iif fpointreclistx_iy_i.statvpt.xx_ipt.yy_ireturnpt.x-1pt.y-1public boolean getpathint x1int y1 int x2int y2boolean resultfalsepcount0 if x1 x2 ampamp y1 y2 return false plist_10.xx1 plist_10.yy1 plist_1_len1 plist_20.xx2 plist_20.yy2 plist_2_len1 int x int y for int i y1 - 1igt0i-- x x1y iif fpointreclistxy.valuebreak else plist_1plist_1_len.x x plist_1plist_1_len.y y plist_1_lenplist_1_len1 for int i y1 1iltfycount 1i x x1 y i if fpointreclistxy.value break else plist_1plist_1_len.x x plist_1plist_1_len.y y plist_1_lenplist_1_len1 for int i x1 - 1igt0i-- x i y y1 if fpointreclistxy.value break else plist_1plist_1_len.x x plist_1plist_1_len.y y plist_1_lenplist_1_len1 for int i x1 1 ilt fxcount 1i x i y y1 if fpointreclistxy.value break else plist_1plist_1_len.x x plist_1plist_1_len.y y plist_1_lenplist_1_len1 for int i y2 - 1igt 0i-- x x2 y i if fpointreclistxy.value break else plist_2plist_2_len.x x plist_2plist_2_len.y y plist_2_lenplist_2_len1 for int i y2 1 ilt fycount 1 i x x2 y i if fpointreclistxy.value break else plist_2plist_2_len.x x plist_2plist_2_len.y y plist_2_lenplist_2_len1 for int i x2 - 1 igt 0 i-- x i y y2 if fpointreclistxy.value break else plist_2plist_2_len.x x plist_2plist_2_len.y y plist_2_lenplist_2_len1 for int i x2 1 ilt fxcount 1i x i y y2 if fpointreclistxy.value break else plist_2plist_2_len.x x plist_2plist_2_len.y y plist_2_lenplist_2_len1 pcount 0 for int i 0 ilt plist_1_leni for int j 0 jlt plist_2_lenj if checkppplist_1i plist_2j result true if i gt 0 pathlistpcount.x plist_1i.x pathlistpcount.y plist_1i.y pcountpcount1 if j gt 0 pathlistpcount.x plist_2j.x pathlistpcount.y plist_2j.y pcountpcount1 return result return resultprivate boolean getPHintPoint p1Point p2 for int i_1 1 i_1ltfxcounti_1 for int j_1 1 j_1ltfycount j_1 p1.x i_1 p1.y j_1 if getimgidxp1.x p1.y lt 0 continue if getstatp1.x p1.y lt 0 continue for int i_2 i_1 i_2ltfxcounti_2 for int j_2 1 j_2ltfycountj_2 if i_2 i_1 ampamp j_2 lt j_1 continue p2.x i_2 p2.y j_2 if getimgidxp2.x p2.y lt 0 continue if getstatp2.x p2.y lt 0 continue if getimgidxp1.x p1.y getimgidxp2.x p2.y continue if getpathp1.x p1.y p2.x p2.y return true p1.x-1 p1.y-1 p2.x-1 p2.y-1return falsepublic GameViewContext context supercontextdisplay_moreInfofalse// TODO Auto-generated constructor stubmousept new Point00lastpt new Point00pnew Paintp_linenew Paintp_line.setARGB255 255 0 0p_line_2new Paintp_line_2.setARGB255 0 0 255p_textnew Paintp_text.setARGB255 0 0 0p_text.setTextSize13p_text.setFlagsPaint.ANTI_ALIAS_FLAGp_pross_bnew Paintp_pross_b.setARGB255 210 210 210p_prossnew Paintp_pross.setARGB255 0 0 210p_client_rnew Paintp_client_r.setARGB255 255 255 255hintpt_1new Point-1-1hintpt_2new Point-1-1res context.getResourcesisInitedfalsesetFocusabletruepublic void ontimer if isontimeringreturnif isonmousedownreturnisontimeringtrueif isstartampamp ispause if timecountgt0 timecounttimecount-1 else beginlevelflevel if ontimercountgt0 ontimercountontimercount-1ifontimercountlt0 drawall invalidate ontimercount10 isontimeringfalseOverrideprotected void onDrawCanvas canvas // TODO Auto-generated method stubsuper.onDrawcanvascanvas.drawBitmapbuff 1 1 pOverrideprotected void onLayoutboolean changed int left int top int rightint bottom // TODO Auto-generated method stubsuper.onLayoutchanged left top right bottominitright-leftbottom-topprivate void drawblankbuff_Canvas.drawRectclient_r p_client_rprivate void drawtextbuff_Canvas.drawBitmapbmp_btnbtn_r_1.leftbtn_r_1.top pif isstart buff_Canvas.drawTextquot暂始quot btn_r_1.left14 btn_r_1.top14p_textelse if ispause buff_Canvas.drawTextquot暂暂quot btn_r_1.left14 btn_r_1.top14p_text buff_Canvas.drawTexts_pause left_client top_client20p_text else buff_Canvas.drawTextquot暂停quot btn_r_1.left14 btn_r_1.top14p_text buff_Canvas.drawRect t_r p_client_r buff_Canvas.drawRect t_r_2 p_client_rbuff_Canvas.drawTextquot暂数:quotString.valueOfflevel t_r.leftt_r.bottomp_textbuff_Canvas.drawTextquot分数:quotString.valueOfffen t_r_2.leftt_r_2.bottomp_textprivate void drawprossbuff_Canvas.drawRect pross_r p_client_rbuff_Canvas.drawLinepross_r.left pross_r.top pross_r.right pross_r.top p_pross_bbuff_Canvas.drawLinepross_r.right pross_r.top pross_r.right pross_r.bottom p_pross_bbuff_Canvas.drawLinepross_r.right pross_r.bottom pross_r.left pross_r.bottom p_pross_bbuff_Canvas.drawLinepross_r.left pross_r.bottom pross_r.left pross_r.top p_pross_bpross_r_2.rightpross_r_2.leftpross_r.right-pross_r.left-1timecount/timecountper_lbuff_Canvas.drawRect pross_r_2 p_prossprivate void drawpoint Rect dst_r Rect src_rnew Rect0000 for int i 1iltfpointlist.fxcount i for int j 1jltfpointlist.fycountj if fpointlist.getstati j lt 0 continue if fpointlist.getimgidxi j lt 0 continue dst_r.