{"id":1551,"date":"2025-05-01T00:00:07","date_gmt":"2025-04-30T16:00:07","guid":{"rendered":"https:\/\/www.wunen.com\/index.php\/2025\/05\/01\/android%e6%ba%90%e7%a0%81%e4%b9%8b%e5%8a%a8%e6%80%81%e5%a3%81%e7%ba%b8%e5%bc%95%e6%93%8e\/"},"modified":"2025-05-01T00:00:07","modified_gmt":"2025-04-30T16:00:07","slug":"android%e6%ba%90%e7%a0%81%e4%b9%8b%e5%8a%a8%e6%80%81%e5%a3%81%e7%ba%b8%e5%bc%95%e6%93%8e","status":"publish","type":"post","link":"http:\/\/www.wunen.com\/index.php\/2025\/05\/01\/android%e6%ba%90%e7%a0%81%e4%b9%8b%e5%8a%a8%e6%80%81%e5%a3%81%e7%ba%b8%e5%bc%95%e6%93%8e\/","title":{"rendered":"Android\u6e90\u7801\u4e4b\u52a8\u6001\u58c1\u7eb8\u5f15\u64ce"},"content":{"rendered":"<div class=\"article_content clearfix\" id=\"article_content\">\n <link href=\"https:\/\/csdnimg.cn\/release\/blogv2\/dist\/mdeditor\/css\/editerView\/kdoc_html_views-1a98987dfd.css\" rel=\"stylesheet\"\/>\n <link href=\"https:\/\/csdnimg.cn\/release\/blogv2\/dist\/mdeditor\/css\/editerView\/ck_htmledit_views-704d5b9767.css\" rel=\"stylesheet\"\/>\n<div class=\"htmledit_views atom-one-dark\" id=\"content_views\">\n<p style=\"margin:5px auto; font-family:Arial; font-size:14px; line-height:25px\">\n   \u52a8\u6001\u58c1\u7eb8\u86ee\u597d\u73a9\u7684\uff0c\u4e5f\u6ca1\u63a5\u89e6\u8fc7\uff0c\u770b\u5b98\u65b9\u6709\u5c31\u62ff\u4e86\u5b66\u4e60\u4e0b\uff0c\u662f\u7b2c\u4e00\u6b21\u63a5\u89e6\u5f15\u64ceEngine\uff0c\u6fc0\u52a8\u5174\u594b&#8230;\u6548\u679c\u505a\u51fa\u6765\u4e86\uff0c\u8bb0\u5f55\u7b14\u8bb0\uff0c\u543c\u543c\uff0c\u8ddf\u5927\u5bb6\u4ea4\u6d41\u5b66\u4e60\uff0c \u5e9f\u8bdd\u4e0d\u591a\u8bf4\u4e86\uff0c\u5148\u770b\u6548\u679c\uff0c\u518d\u770b\u6e90\u7801\uff0c\u4f9b\u5927\u5bb6\u4ea4\u6d41\u5b66\u4e60\uff0c\u4eca\u5929\u7684\u6548\u679c\u5982\u4e0b\u56fe\u6240\u793a\uff0c\u56e0\u4e3a\u624b\u673a\u5f00\u673a\u540e\u5c31\u8981\u52a0\u8f7d\u56fe\u7247\uff0c\u6240\u4ee5\u5c31\u76f4\u63a5\u4ece\u5f00\u673a\u542f\u52a8\u5b8c\u6210\u540e\u8bb2\u4e86\uff0c\u770b\u56fe&#8230;<\/p>\n<p>   \u672a\u5f00\u9501\u65f6\u7acb\u65b9\u4f53\u5f62\u5f0f\u4e00\uff1a\n  <\/p>\n<p style=\"margin:5px auto; font-family:Arial; font-size:14px; line-height:25px\">\n<p style=\"margin:5px auto; font-family:Arial; font-size:14px; line-height:25px\">\n   \u5f00\u9501\u65f6\u7acb\u65b9\u4f53\u5f62\u5f0f\u4e00\u4e0e\u4e8c\uff1a\n  <\/p>\n<p style=\"margin:5px auto; font-family:Arial; font-size:14px; line-height:25px\">\n<p style=\"margin:5px auto; font-family:Arial; font-size:14px; line-height:25px\">\n<p style=\"margin:5px auto; font-family:Arial; font-size:14px; line-height:25px\">\n   \u7b80\u5355\u7684\u7ed8\u5236\u6548\u679c\uff0c\u56e0\u4e3a\u7acb\u65b9\u4f53\u90fd\u662f\u4e0b\u9762\u8fd9\u4e9b\u56fe(\u7531\u4e09\u89d2\u5f62\u62fc\u6210\u7684)\u62fc\u7684\uff0c\u6240\u4ee5\u6b64\u5904\u8d34\u4e0b\u8fd9\u4e2a\u6548\u679c\u56fe\uff0c\u6548\u679c\u5236\u4f5c\u7684\u4ee3\u7801\u6211\u653e\u5728\u5f62\u5f0f\u4e00\u6ce8\u91ca\u91cc\u9762\u4e86\uff0c\u5927\u5bb6\u53ef\u4ee5\u8bd5\u4e0b\u7684\uff0c\u5c31\u662f\u8fd9\u4e2a\u6548\u679c\uff0c\u4e34\u65f6\u5f15\u7528\u7684\uff1a\n  <\/p>\n<p style=\"margin:5px auto; font-family:Arial; font-size:14px; line-height:25px\">\n<p style=\"margin:5px auto; font-family:Arial; font-size:14px; line-height:25px\">\n   \u5de5\u7a0b\u7ed3\u6784\u5982\u4e0b\u56fe\u6240\u793a\uff1a\n  <\/p>\n<p style=\"margin:5px auto; font-family:Arial; font-size:14px; line-height:25px\">\n<p style=\"margin:5px auto; font-family:Arial; font-size:14px; line-height:25px\">\n   \u56e0\u4e3a\u5f62\u5f0f\u4e00\u4e0e\u5f62\u5f0f\u4e8c\u53ea\u662f\u7ed8\u5236\u70b9\u4e0d\u4e00\u6837\uff0c\u4e24\u4e2a\u7c7b\u90fd\u4e00\u6837\uff0c\u9632\u6b62\u7bc7\u5e45\u8fc7\u957f(51\u6709\u9650\u5236\uff0c\u8d85\u8fc780000\u5b57\u7b26\u5c31\u6302\u4e86\uff0c\u6211\u5df2\u7ecf\u8d85\u8fc7\u4e86\uff0c\u8fd9\u662f\u7b2c\u4e8c\u8fb9\u5199\u4e86\uff0c\u6240\u4ee5\u5f62\u5f0f\u4e8c\u4ee3\u7801\u5c31\u4e0d\u8d34\u4e86)\uff0c\u5c0f\u9a6c\u5c31\u76f4\u63a5\u8d34\u5f62\u5f0f\u4e00\u7684\u4ee3\u7801\u4e0e\u914d\u7f6e\u6587\u4ef6\u4ee3\u7801\uff0c\u8be6\u7ec6\u7684\u5982\u6709\u670b\u53cb\u8981\u5b66\u4e60\u7684\u8bdd\uff0c\u4e0b\u8f7d\u4e0bDEMO\u5b66\u4e60\u5c31\u662f\uff0c\u5c0f\u9a6c\u57fa\u672c\u7684\u6ce8\u91ca\u90fd\u52a0\u4e86\uff0c\u56e0\u4e3a\u4e5f\u5728\u5b66\u4e60\u9636\u6bb5\uff0c\u5982\u6709\u5730\u65b9\u4e0d\u8db3\u7684\uff0c\u5e0c\u671b\u5927\u5bb6\u76f4\u63a5\u7559\u8a00\uff0c\u6279\u8bc4\u6307\u51fa\uff0c\u5c0f\u9a6c\u80af\u5b9a\u611f\u8c22&#8230;<br \/>\n   <br \/>\n   \u7acb\u65b9\u4f53\u5f62\u5f0f\u4e00\u63a7\u5236\u7c7b\u4ee3\u7801\uff1a\n  <\/p>\n<div class=\"cnblogs_code\" style=\"background-color:rgb(245,245,245); font-family:'Courier New'; border:1px solid rgb(204,204,204); padding:5px; overflow:auto; margin:5px 0px; line-height:25px\">\n<div class=\"cnblogs_code_toolbar\" style=\"margin-top:5px\">\n    <span class=\"cnblogs_code_copy\" style=\"padding-right:5px; line-height:1.5\"><br \/>\n     <a href=\"http:\/\/www.cnblogs.com\/vus520\/archive\/2012\/07\/27\/2611406.html\" rel=\"nofollow\" style=\"color:rgb(29,88,209); text-decoration:none; border:none!important\" title=\"\u590d\u5236\u4ee3\u7801\"><br \/>\n     <\/a><br \/>\n    <\/span>\n   <\/div>\n<pre style=\"margin-top:0px; margin-bottom:0px; margin-left:22px; white-space:pre-wrap; word-wrap:break-word; font-family:'Courier New'\"><span style=\"line-height:1.5; color:rgb(0,0,255)\">package<\/span><span style=\"line-height:1.5\"> xiaoma.cube1;\n<\/span><span style=\"line-height:1.5; color:rgb(0,0,255)\">import<\/span><span style=\"line-height:1.5\"> android.graphics.Canvas;\n<\/span><span style=\"line-height:1.5; color:rgb(0,0,255)\">import<\/span><span style=\"line-height:1.5\"> android.graphics.Paint;\n<\/span><span style=\"line-height:1.5; color:rgb(0,0,255)\">import<\/span><span style=\"line-height:1.5\"> android.os.Handler;\n<\/span><span style=\"line-height:1.5; color:rgb(0,0,255)\">import<\/span><span style=\"line-height:1.5\"> android.os.SystemClock;\n<\/span><span style=\"line-height:1.5; color:rgb(0,0,255)\">import<\/span><span style=\"line-height:1.5\"> android.service.wallpaper.WallpaperService;\n<\/span><span style=\"line-height:1.5; color:rgb(0,0,255)\">import<\/span><span style=\"line-height:1.5\"> android.view.MotionEvent;\n<\/span><span style=\"line-height:1.5; color:rgb(0,0,255)\">import<\/span><span style=\"line-height:1.5\"> android.view.SurfaceHolder;\n<\/span><span style=\"line-height:1.5; color:rgb(0,128,0)\">\/**<\/span><span style=\"line-height:1.5; color:rgb(0,128,0)\">\n* @Title: CubeWallpaper1.java\n* @Package cube1\n* @Description: \u521d\u8bc6Android\u52a8\u6001\u58c1\u7eb8\u5f15\u64ce\n* <\/span><span style=\"line-height:1.5; color:rgb(128,128,128)\">@author<\/span><span style=\"line-height:1.5; color:rgb(0,128,0)\"> XiaoMa\n<\/span><span style=\"line-height:1.5; color:rgb(0,128,0)\">*\/<\/span>\n<span style=\"line-height:1.5; color:rgb(0,128,0)\">\/*<\/span><span style=\"line-height:1.5; color:rgb(0,128,0)\">\n* \u56e0\u4e3a\u5c0f\u9a6c\u6ca1\u63a5\u89e6\u8fc7\u5f15\u64ce\uff0c\u4e5f\u65e0\u4ece\u4e0b\u624b\u5b66\u4e60\uff0c\u4eca\u5929\u5c31\u62ff\u5b98\u65b9\u7684\u4f8b\u5b50\u6765\u8bd5\u8bd5\u5200\u4e86\uff0c\n* \u543c\u543c\uff0c\u521a\u5f00\u59cb\u4e0d\u77e5\u9053\uff0c\u770b\u4e86\u4e0b\u4ee3\u7801\uff0c\u91cc\u9762\u6709\u8bb2\u5230WallPaperService\n* \u67e5\u8be2\u8fd9\u4e2a\u670d\u52a1\u53ef\u4ee5\u67e5\u5230\u4e0e\u4e4b\u76f8\u5173\u8054\u7684\u7c7b\u4e0e\u65b9\u6cd5\uff0c\u5982\u4e0b\u9762\u5b98\u65b9\u6587\u6863\u4e2d\u8bb2\u7684\uff0c\u5927\u5bb6\n* \u82f1\u8bed\u4e0d\u597d\u4e5f\u53ef\u4ee5\u7528\u5de5\u5177\u770b\u4e2a\u5927\u6982\uff0c\u82f1\u8bed\u4e0d\u597d\u7684\u670b\u53cb\u8bb0\u5f97\u591a\u7528\u5de5\u5177\u5b66\u4e60\u4e0b\uff0c\u5c0f\u9a6c\n* \u82f1\u8bed\u4e5f\u4e0d\u548b\u7684....\n* A wallpaper service is responsible for showing a live wallpaper behind\n* applications that would like to sit on top of it. This service object itself\n* does very little -- its only purpose is to generate instances of\n* WallpaperService.Engine as needed. Implementing a wallpaper thus involves\n* subclassing from this, subclassing an Engine implementation, and implementing\n* onCreateEngine() to return a new instance of your engine\n* \u4e0a\u9762\u8bb2\u7684\u5927\u4f53\u662f\uff1a\u4e00\u4e2a\u7c7b\u5fc5\u987b\u662fWallpaperService\u5f15\u64ce\u7c7b\u7684\u5b50\u7c7b\uff0c\u800c\u4e14\u91cc\u9762\u5fc5\u987b\u91cd\u5199\n* onCreateEngine\u8fd9\u4e2a\u65b9\u6cd5\uff0c\u8981\u4ed4\u7ec6\u770b\u7684\u8bdd\u5c0f\u9a6c\u4e5f\u770b\u4e0d\u61c2\u82f1\u6587\uff0c\u7167\u7740\u4f8b\u5b50\uff0c\u770b\u5b98\u65b9\u6587\u6863\uff0c\n* \u591a\u731c\u591a\u7528\u5de5\u5177\u67e5\u5c31\u884c\u4e86\uff0c\u5c0f\u9a6c\u82f1\u8bed\u70c2\u7684\u53ef\u4ee5\u8ba9\u4f60\u5410\u8840...\u6211\u80fd\u770b\u61c2\uff0c\u4f60\u80af\u5b9a\u80fd\u770b\u61c2\n<\/span><span style=\"line-height:1.5; color:rgb(0,128,0)\">*\/<\/span>\n<span style=\"line-height:1.5; color:rgb(0,0,255)\">public<\/span> <span style=\"line-height:1.5; color:rgb(0,0,255)\">class<\/span> CubeWallpaper1 <span style=\"line-height:1.5; color:rgb(0,0,255)\">extends<\/span><span style=\"line-height:1.5\"> WallpaperService {\n<\/span><span style=\"line-height:1.5; color:rgb(0,128,0)\">\/*<\/span><span style=\"line-height:1.5; color:rgb(0,128,0)\">\u5e38\u7528\u7684\u90fd\u662f\u8fd9\u6837\u7684\uff0c\u7528\u4e00\u4e2ahandler\u6765\u52a8\u6001\u7684\u53bb\u5237\u65b0UI\uff0c\u5bf9\u5427?\u731c\u7684\uff0c\u770b\u4e0b\u9762\u4ee3\u7801\u5230\u5e95\u662f\u4e0d\u662f<\/span><span style=\"line-height:1.5; color:rgb(0,128,0)\">*\/<\/span>\n<span style=\"line-height:1.5; color:rgb(0,0,255)\">private<\/span> <span style=\"line-height:1.5; color:rgb(0,0,255)\">final<\/span> Handler mHandler = <span style=\"line-height:1.5; color:rgb(0,0,255)\">new<\/span><span style=\"line-height:1.5\"> Handler();\n<\/span><span style=\"line-height:1.5; color:rgb(0,128,0)\">\/**<\/span><span style=\"line-height:1.5; color:rgb(0,128,0)\">\n* \u8fd9\u4e2a\u65b9\u6cd5\u4e0eActivity\u91cc\u9762\u7684\u4e00\u6837\uff0c\u5f53\u8fd9\u4e2a\u7c7b\u7684\u670d\u52a1\u88ab\u7b2c\u4e00\u6b21\u521b\u5efa\u65f6\n* \u8c03\u7528\uff0c\u4e5f\u5c31\u662f\u8bf4\uff0c\u8fd9\u4e2a\u65b9\u6cd5\u53ea\u8c03\u7528\u4e00\u6b21..\n<\/span><span style=\"line-height:1.5; color:rgb(0,128,0)\">*\/<\/span><span style=\"line-height:1.5\">\n@Override\n<\/span><span style=\"line-height:1.5; color:rgb(0,0,255)\">public<\/span> <span style=\"line-height:1.5; color:rgb(0,0,255)\">void<\/span><span style=\"line-height:1.5\"> onCreate() {\n<\/span><span style=\"line-height:1.5; color:rgb(0,0,255)\">super<\/span><span style=\"line-height:1.5\">.onCreate();\n}\n<\/span><span style=\"line-height:1.5; color:rgb(0,128,0)\">\/**<\/span><span style=\"line-height:1.5; color:rgb(0,128,0)\">\n* \u4e0e\u4e0a\u9762\u53cd\u7684\uff0c\u9500\u6bc1\u65f6\u8c03\u7528\uff0c\u8fd9\u4e2a\u731c\u4e0b\uff0c\n* \u4e0d\u61c2\u4e86\u67e5\u6587\u6863\n<\/span><span style=\"line-height:1.5; color:rgb(0,128,0)\">*\/<\/span><span style=\"line-height:1.5\">\n@Override\n<\/span><span style=\"line-height:1.5; color:rgb(0,0,255)\">public<\/span> <span style=\"line-height:1.5; color:rgb(0,0,255)\">void<\/span><span style=\"line-height:1.5\"> onDestroy() {\n<\/span><span style=\"line-height:1.5; color:rgb(0,0,255)\">super<\/span><span style=\"line-height:1.5\">.onDestroy();\n}\n<\/span><span style=\"line-height:1.5; color:rgb(0,128,0)\">\/**<\/span><span style=\"line-height:1.5; color:rgb(0,128,0)\">\n* \u8fd9\u4e2a\u65b9\u6cd5\u5728\u7c7b\u6ce8\u91ca\u4e2d\u5199\u660e\u4e86\n* implementing onCreateEngine() to return a new instance of your engine\n* \u5fc5\u987b\u5b9e\u73b0\u8fd9\u4e2a\u65b9\u6cd5\u6765\u8fd4\u56de\u6211\u4eec\u81ea\u5df1\u5b9a\u4e49\u5f15\u64ce\u7684\u4e00\u4e2a\u5b9e\u4f8b\n<\/span><span style=\"line-height:1.5; color:rgb(0,128,0)\">*\/<\/span><span style=\"line-height:1.5\">\n@Override\n<\/span><span style=\"line-height:1.5; color:rgb(0,0,255)\">public<\/span><span style=\"line-height:1.5\"> Engine onCreateEngine() {\n<\/span><span style=\"line-height:1.5; color:rgb(0,0,255)\">return<\/span> <span style=\"line-height:1.5; color:rgb(0,0,255)\">new<\/span><span style=\"line-height:1.5\"> CubeEngine();\n}\n<\/span><span style=\"line-height:1.5; color:rgb(0,128,0)\">\/**<\/span><span style=\"line-height:1.5; color:rgb(0,128,0)\">\n*\n* @Title: CubeWallpaper1.java\n* @Package cube1\n* @Description: \u81ea\u5b9a\u4e49\u5f15\u64ce\u7c7b\n* <\/span><span style=\"line-height:1.5; color:rgb(128,128,128)\">@author<\/span><span style=\"line-height:1.5; color:rgb(0,128,0)\"> XiaoMa\n<\/span><span style=\"line-height:1.5; color:rgb(0,128,0)\">*\/<\/span>\n<span style=\"line-height:1.5; color:rgb(0,0,255)\">class<\/span> CubeEngine <span style=\"line-height:1.5; color:rgb(0,0,255)\">extends<\/span><span style=\"line-height:1.5\"> Engine {\n<\/span><span style=\"line-height:1.5; color:rgb(0,0,255)\">private<\/span> <span style=\"line-height:1.5; color:rgb(0,0,255)\">final<\/span> Paint mPaint = <span style=\"line-height:1.5; color:rgb(0,0,255)\">new<\/span><span style=\"line-height:1.5\"> Paint();\n<\/span><span style=\"line-height:1.5; color:rgb(0,0,255)\">private<\/span> <span style=\"line-height:1.5; color:rgb(0,0,255)\">float<\/span><span style=\"line-height:1.5\"> mOffset;\n<\/span><span style=\"line-height:1.5; color:rgb(0,128,0)\">\/*<\/span><span style=\"line-height:1.5; color:rgb(0,128,0)\">\u7528\u6237\u89e6\u6478\u4f4d\u7f6e<\/span><span style=\"line-height:1.5; color:rgb(0,128,0)\">*\/<\/span>\n<span style=\"line-height:1.5; color:rgb(0,0,255)\">private<\/span> <span style=\"line-height:1.5; color:rgb(0,0,255)\">float<\/span> mTouchX = -1<span style=\"line-height:1.5\">;\n<\/span><span style=\"line-height:1.5; color:rgb(0,0,255)\">private<\/span> <span style=\"line-height:1.5; color:rgb(0,0,255)\">float<\/span> mTouchY = -1<span style=\"line-height:1.5\">;\n<\/span><span style=\"line-height:1.5; color:rgb(0,0,255)\">private<\/span> <span style=\"line-height:1.5; color:rgb(0,0,255)\">long<\/span><span style=\"line-height:1.5\"> mStartTime;\n<\/span><span style=\"line-height:1.5; color:rgb(0,128,0)\">\/*<\/span><span style=\"line-height:1.5; color:rgb(0,128,0)\">\u5c4f\u5e55\u4e2d\u5fc3\u5750\u6807\uff0c\u8bb0\u4e0b\uff0c\u662f\u4e2d\u5fc3\u4e0d\u662f\u539f\u5fc3(0\uff0c0)<\/span><span style=\"line-height:1.5; color:rgb(0,128,0)\">*\/<\/span>\n<span style=\"line-height:1.5; color:rgb(0,0,255)\">private<\/span> <span style=\"line-height:1.5; color:rgb(0,0,255)\">float<\/span><span style=\"line-height:1.5\"> mCenterX;\n<\/span><span style=\"line-height:1.5; color:rgb(0,0,255)\">private<\/span> <span style=\"line-height:1.5; color:rgb(0,0,255)\">float<\/span><span style=\"line-height:1.5\"> mCenterY;\n<\/span><span style=\"line-height:1.5; color:rgb(0,0,255)\">private<\/span> <span style=\"line-height:1.5; color:rgb(0,0,255)\">final<\/span> Runnable mDrawCube = <span style=\"line-height:1.5; color:rgb(0,0,255)\">new<\/span><span style=\"line-height:1.5\"> Runnable() {\n<\/span><span style=\"line-height:1.5; color:rgb(0,0,255)\">public<\/span> <span style=\"line-height:1.5; color:rgb(0,0,255)\">void<\/span><span style=\"line-height:1.5\"> run() {\ndrawFrame();\n}\n};\n<\/span><span style=\"line-height:1.5; color:rgb(0,0,255)\">private<\/span> <span style=\"line-height:1.5; color:rgb(0,0,255)\">boolean<\/span><span style=\"line-height:1.5\"> mVisible;\nCubeEngine() {\n<\/span><span style=\"line-height:1.5; color:rgb(0,128,0)\">\/*<\/span><span style=\"line-height:1.5; color:rgb(0,128,0)\">\u4e0b\u9762\u8fd9\u51e0\u884c\u5c31\u4e3a\u4e86\u5728\u5c4f\u5e55\u4e2d\u753b\u7acb\u65b9\u4f53\u7684\u7ebf\u6761\u800c\u505a\u51c6\u5907<\/span><span style=\"line-height:1.5; color:rgb(0,128,0)\">*\/<\/span>\n<span style=\"line-height:1.5; color:rgb(0,0,255)\">final<\/span> Paint paint =<span style=\"line-height:1.5\"> mPaint;\npaint.setColor(<\/span>0xffffffff);<span style=\"line-height:1.5; color:rgb(0,128,0)\">\/\/<\/span><span style=\"line-height:1.5; color:rgb(0,128,0)\">\u753b\u7b14\u989c\u8272<\/span>\npaint.setAntiAlias(<span style=\"line-height:1.5; color:rgb(0,0,255)\">true<\/span>);<span style=\"line-height:1.5; color:rgb(0,128,0)\">\/\/<\/span><span style=\"line-height:1.5; color:rgb(0,128,0)\">\u6297\u952f\u9f7f<\/span>\npaint.setStrokeWidth(2);<span style=\"line-height:1.5; color:rgb(0,128,0)\">\/\/<\/span><span style=\"line-height:1.5; color:rgb(0,128,0)\">\u7ebf\u6761\u7c97\u7ec6\uff0c\u731c\u7684\uff0c\u4e0d\u77e5\u9053\u5bf9\u4e0d\u5bf9<\/span>\n<span style=\"line-height:1.5\">paint.setStrokeCap(Paint.Cap.ROUND);\npaint.setStyle(Paint.Style.STROKE);\n<\/span><span style=\"line-height:1.5; color:rgb(0,128,0)\">\/\/<\/span><span style=\"line-height:1.5; color:rgb(0,128,0)\">\u7cfb\u7edf\u542f\u52a8\u5b8c\u4e4b\u540e\uff0c\u5f00\u59cb\u7ed8\u5236\u58c1\u7eb8\u7684\u65f6\u95f4\uff0c\u8fd9\u4e2a\u65f6\u95f4\u91cc\u9762\u5305\u542b\u6709\u7cfb\u7edf\u7761\u7720\u65f6\u95f4<\/span>\nmStartTime =<span style=\"line-height:1.5\"> SystemClock.elapsedRealtime();\n}\n<\/span><span style=\"line-height:1.5; color:rgb(0,128,0)\">\/**<\/span><span style=\"line-height:1.5; color:rgb(0,128,0)\">\n* \u5927\u5bb6\u53d1\u73b0\u8fd9\u4e2aonCreate\u4e0eActivity\u7684\u65b9\u6cd5\u6709\u4ec0\u4e48\u4e0d\u540c\u4e86\u5427?\n* \u8001\u89c4\u77e9\u7684\uff0c\u8fd8\u662f\u5728\u521d\u59cb\u5316\u58c1\u7eb8\u5f15\u64ce\u7684\u65f6\u5019\u8c03\u7528\u8fd9\u4e2a\u65b9\u6cd5\uff0c\u5e76\u8bbe\u7f6e\u89e6\n* \u5c4f\u4e8b\u4ef6\u4e3a\u53ef\u7528\n<\/span><span style=\"line-height:1.5; color:rgb(0,128,0)\">*\/<\/span><span style=\"line-height:1.5\">\n@Override\n<\/span><span style=\"line-height:1.5; color:rgb(0,0,255)\">public<\/span> <span style=\"line-height:1.5; color:rgb(0,0,255)\">void<\/span><span style=\"line-height:1.5\"> onCreate(SurfaceHolder surfaceHolder) {\n<\/span><span style=\"line-height:1.5; color:rgb(0,0,255)\">super<\/span><span style=\"line-height:1.5\">.onCreate(surfaceHolder);\nsetTouchEventsEnabled(<\/span><span style=\"line-height:1.5; color:rgb(0,0,255)\">true<\/span><span style=\"line-height:1.5\">);\n}\n@Override\n<\/span><span style=\"line-height:1.5; color:rgb(0,0,255)\">public<\/span> <span style=\"line-height:1.5; color:rgb(0,0,255)\">void<\/span><span style=\"line-height:1.5\"> onDestroy() {\n<\/span><span style=\"line-height:1.5; color:rgb(0,0,255)\">super<\/span><span style=\"line-height:1.5\">.onDestroy();\nmHandler.removeCallbacks(mDrawCube);\n}\n<\/span><span style=\"line-height:1.5; color:rgb(0,128,0)\">\/**<\/span><span style=\"line-height:1.5; color:rgb(0,128,0)\">\n* \u7cfb\u7edf\u58c1\u7eb8\u72b6\u6001\u6539\u53d8\u65f6\u4f1a\u8c03\u7528\u8fd9\u4e2a\u65b9\u6cd5\uff0c\u5982\uff1a\n* \u58c1\u7eb8\u7531\u9690\u85cf\u8f6c\u6362\u4e3a\u663e\u793a\u72b6\u6001\u65f6\u4f1a\u8c03\u7528\u8fd9\u4e2a\u65b9\u6cd5\n<\/span><span style=\"line-height:1.5; color:rgb(0,128,0)\">*\/<\/span><span style=\"line-height:1.5\">\n@Override\n<\/span><span style=\"line-height:1.5; color:rgb(0,0,255)\">public<\/span> <span style=\"line-height:1.5; color:rgb(0,0,255)\">void<\/span> onVisibilityChanged(<span style=\"line-height:1.5; color:rgb(0,0,255)\">boolean<\/span><span style=\"line-height:1.5\"> visible) {\nmVisible <\/span>=<span style=\"line-height:1.5\"> visible;\n<\/span><span style=\"line-height:1.5; color:rgb(0,128,0)\">\/*<\/span><span style=\"line-height:1.5; color:rgb(0,128,0)\">\u4e0b\u9762\u8fd9\u4e2a\u5224\u65ad\u597d\u73a9\uff0c\u5c31\u662f\u8bf4\uff0c\u5982\u679c\u5c4f\u5e55\u58c1\u7eb8\u72b6\u6001\u8f6c\u4e3a\u663e\u5f0f\u65f6\u91cd\u65b0\u7ed8\u5236\u58c1\u7eb8\uff0c\u5426\u5219\u9ed1\u5c4f\u5e55\uff0c\u9690\u85cf\u5c31\u53ef\u4ee5<\/span><span style=\"line-height:1.5; color:rgb(0,128,0)\">*\/<\/span>\n<span style=\"line-height:1.5; color:rgb(0,0,255)\">if<\/span><span style=\"line-height:1.5\"> (visible) {\ndrawFrame();\n} <\/span><span style=\"line-height:1.5; color:rgb(0,0,255)\">else<\/span><span style=\"line-height:1.5\"> {\nmHandler.removeCallbacks(mDrawCube);\n}\n}\n@Override\n<\/span><span style=\"line-height:1.5; color:rgb(0,0,255)\">public<\/span> <span style=\"line-height:1.5; color:rgb(0,0,255)\">void<\/span> onSurfaceChanged(SurfaceHolder holder, <span style=\"line-height:1.5; color:rgb(0,0,255)\">int<\/span><span style=\"line-height:1.5\"> format,\n<\/span><span style=\"line-height:1.5; color:rgb(0,0,255)\">int<\/span> width, <span style=\"line-height:1.5; color:rgb(0,0,255)\">int<\/span><span style=\"line-height:1.5\"> height) {\n<\/span><span style=\"line-height:1.5; color:rgb(0,0,255)\">super<\/span><span style=\"line-height:1.5\">.onSurfaceChanged(holder, format, width, height);\n<\/span><span style=\"line-height:1.5; color:rgb(0,128,0)\">\/\/<\/span><span style=\"line-height:1.5; color:rgb(0,128,0)\">\u4e0b\u9762\u662f\u6765\u4fdd\u5b58\u5c4f\u5e55\u663e\u793a\u7acb\u65b9\u4f53\u7684\uff0c\u4e5f\u5c31\u662f\u4f60\u80fd\u770b\u5230\u7684\u6b63\u9762\u56fe\u7684\u4e2d\u5fc3\u4f4d\u7f6e<\/span>\nmCenterX = width \/ 2.0f<span style=\"line-height:1.5\">;\nmCenterY <\/span>= height \/ 2.0f<span style=\"line-height:1.5\">;\ndrawFrame();\n}\n<\/span><span style=\"line-height:1.5; color:rgb(0,128,0)\">\/**<\/span><span style=\"line-height:1.5; color:rgb(0,128,0)\">\n* \u4e0b\u9762\u4e24\u4e2a\u65b9\u6cd5\u662f\u4e3a\u4e86\u65b9\u4fbf\u8c03\u7528SurfaceHolder\u4ea4\u4e92\u6765\u91cd\u5199\u7684\n<\/span><span style=\"line-height:1.5; color:rgb(0,128,0)\">*\/<\/span><span style=\"line-height:1.5\">\n@Override\n<\/span><span style=\"line-height:1.5; color:rgb(0,0,255)\">public<\/span> <span style=\"line-height:1.5; color:rgb(0,0,255)\">void<\/span><span style=\"line-height:1.5\"> onSurfaceCreated(SurfaceHolder holder) {\n<\/span><span style=\"line-height:1.5; color:rgb(0,0,255)\">super<\/span><span style=\"line-height:1.5\">.onSurfaceCreated(holder);\n}\n@Override\n<\/span><span style=\"line-height:1.5; color:rgb(0,0,255)\">public<\/span> <span style=\"line-height:1.5; color:rgb(0,0,255)\">void<\/span><span style=\"line-height:1.5\"> onSurfaceDestroyed(SurfaceHolder holder) {\n<\/span><span style=\"line-height:1.5; color:rgb(0,0,255)\">super<\/span><span style=\"line-height:1.5\">.onSurfaceDestroyed(holder);\nmVisible <\/span>= <span style=\"line-height:1.5; color:rgb(0,0,255)\">false<\/span><span style=\"line-height:1.5\">;\nmHandler.removeCallbacks(mDrawCube);\n}\n<\/span><span style=\"line-height:1.5; color:rgb(0,128,0)\">\/**<\/span><span style=\"line-height:1.5; color:rgb(0,128,0)\">\n* \u5f53\u624b\u52a8\u58c1\u7eb8\u65f6\u6839\u636e\u504f\u79fb\u91cf\u91cd\u7ed8\u58c1\u7eb8\n<\/span><span style=\"line-height:1.5; color:rgb(0,128,0)\">*\/<\/span><span style=\"line-height:1.5\">\n@Override\n<\/span><span style=\"line-height:1.5; color:rgb(0,0,255)\">public<\/span> <span style=\"line-height:1.5; color:rgb(0,0,255)\">void<\/span> onOffsetsChanged(<span style=\"line-height:1.5; color:rgb(0,0,255)\">float<\/span> xOffset, <span style=\"line-height:1.5; color:rgb(0,0,255)\">float<\/span> yOffset, <span style=\"line-height:1.5; color:rgb(0,0,255)\">float<\/span><span style=\"line-height:1.5\"> xStep,\n<\/span><span style=\"line-height:1.5; color:rgb(0,0,255)\">float<\/span> yStep, <span style=\"line-height:1.5; color:rgb(0,0,255)\">int<\/span> xPixels, <span style=\"line-height:1.5; color:rgb(0,0,255)\">int<\/span><span style=\"line-height:1.5\"> yPixels) {\nmOffset <\/span>=<span style=\"line-height:1.5\"> xOffset;\ndrawFrame();\n}\n<\/span><span style=\"line-height:1.5; color:rgb(0,128,0)\">\/*<\/span><span style=\"line-height:1.5; color:rgb(0,128,0)\">\n* \u5728\u8fd9\u4e2a\u5730\u65b9\u4fdd\u5b58\u89e6\u6478\u7684\u4f4d\u7f6e\uff0c\u6211\u4eec\u4f1a\u5728\u7ed8\u5236\u58c1\u7eb8\u7684\u65f6\u5019\u4f7f\u7528\u89e6\u6478\u503c\n<\/span><span style=\"line-height:1.5; color:rgb(0,128,0)\">*\/<\/span><span style=\"line-height:1.5\">\n@Override\n<\/span><span style=\"line-height:1.5; color:rgb(0,0,255)\">public<\/span> <span style=\"line-height:1.5; color:rgb(0,0,255)\">void<\/span><span style=\"line-height:1.5\"> onTouchEvent(MotionEvent event) {\n<\/span><span style=\"line-height:1.5; color:rgb(0,0,255)\">if<\/span> (event.getAction() ==<span style=\"line-height:1.5\"> MotionEvent.ACTION_MOVE) {\nmTouchX <\/span>=<span style=\"line-height:1.5\"> event.getX();\nmTouchY <\/span>=<span style=\"line-height:1.5\"> event.getY();\n} <\/span><span style=\"line-height:1.5; color:rgb(0,0,255)\">else<\/span><span style=\"line-height:1.5\"> {\nmTouchX <\/span>= -1<span style=\"line-height:1.5\">;\nmTouchY <\/span>= -1<span style=\"line-height:1.5\">;\n}\n<\/span><span style=\"line-height:1.5; color:rgb(0,0,255)\">super<\/span><span style=\"line-height:1.5\">.onTouchEvent(event);\n}\n<\/span><span style=\"line-height:1.5; color:rgb(0,128,0)\">\/*<\/span><span style=\"line-height:1.5; color:rgb(0,128,0)\">\n* \u7ed8\u5236\u7acb\u65b9\u4f53\u65b9\u6cd5\u5b9e\u73b0\n<\/span><span style=\"line-height:1.5; color:rgb(0,128,0)\">*\/<\/span>\n<span style=\"line-height:1.5; color:rgb(0,0,255)\">void<\/span><span style=\"line-height:1.5\"> drawFrame() {\n<\/span><span style=\"line-height:1.5; color:rgb(0,0,255)\">final<\/span> SurfaceHolder holder =<span style=\"line-height:1.5\"> getSurfaceHolder();\nCanvas c <\/span>= <span style=\"line-height:1.5; color:rgb(0,0,255)\">null<\/span><span style=\"line-height:1.5\">;\n<\/span><span style=\"line-height:1.5; color:rgb(0,0,255)\">try<\/span><span style=\"line-height:1.5\"> {\nc <\/span>=<span style=\"line-height:1.5\"> holder.lockCanvas();\n<\/span><span style=\"line-height:1.5; color:rgb(0,0,255)\">if<\/span> (c != <span style=\"line-height:1.5; color:rgb(0,0,255)\">null<\/span><span style=\"line-height:1.5\">) {\ndrawCube(c);\ndrawTouchPoint(c);\n}\n} <\/span><span style=\"line-height:1.5; color:rgb(0,0,255)\">finally<\/span><span style=\"line-height:1.5\"> {\n<\/span><span style=\"line-height:1.5; color:rgb(0,0,255)\">if<\/span> (c != <span style=\"line-height:1.5; color:rgb(0,0,255)\">null<\/span><span style=\"line-height:1.5\">)\nholder.unlockCanvasAndPost(c);\n}\n<\/span><span style=\"line-height:1.5; color:rgb(0,128,0)\">\/\/<\/span><span style=\"line-height:1.5; color:rgb(0,128,0)\"> \u5728\u6307\u5b9a\u65f6\u95f4\u91cc\u91cd\u7ed8\u5236\uff0c\u8fd9\u4e2a\u5730\u65b9\u5927\u5bb6\u53ef\u4ee5\u770b\u6548\u679c\u56fe\uff0c\u5982\u679c\u4f60\u62d6\u52a8\u8fc7\u5feb\u7684\u8bdd\uff0c\u7acb\u65b9\u4f53\n<\/span><span style=\"line-height:1.5; color:rgb(0,128,0)\">\/\/<\/span><span style=\"line-height:1.5; color:rgb(0,128,0)\">\u6bcf\u4e2a\u9876\u70b9\u4e4b\u95f4\u4f1a\u6709\u4e00\u4e2a\u77ed\u6682\u7684\u672a\u8fde\u63a5\u5ef6\u8fdf\uff0c\u5c31\u662f\u5728\u8fd9\u4e2a\u5730\u65b9\u4f7f\u7528\u4e86\u5ef6\u8fdf\u6765\u7ed8\u5236\u7684<\/span>\n<span style=\"line-height:1.5\">mHandler.removeCallbacks(mDrawCube);\n<\/span><span style=\"line-height:1.5; color:rgb(0,0,255)\">if<\/span><span style=\"line-height:1.5\"> (mVisible) {\nmHandler.postDelayed(mDrawCube, <\/span>1000 \/ 25<span style=\"line-height:1.5\">);\n}\n}\n<\/span><span style=\"line-height:1.5; color:rgb(0,128,0)\">\/*<\/span><span style=\"line-height:1.5; color:rgb(0,128,0)\">\n* \u8fd9\u4e2a\u5730\u65b9\u662f\u4ee5\u7acb\u65b9\u4f53\u67d0\u4e2a\u9876\u70b9\u4e3a\u8d77\u59cb\u7aef\uff0c\u7ed8\u5236\u4e09\u6761\u7ebf\n* \u4e00\u5806\u6570\u5b57\uff0c\u770b\u7740\u597d\u6655\n* \u5728\u8fd9\u5c0f\u9a6c\u987a\u4fbf\u8d34\u5728\u8fd9\u4e2aDEMO\u91cc\u9762\u7528\u5230\u7684\u57fa\u672c\u7684\u7ed8\u5236\uff0c\u5982\u4e0b\uff1a\n* graphics.Canvas\u6709\u56db\u79cd\u753b\u77e9\u5f62\u7684\u65b9\u6cd5\u3002\ncanvas.drawRect(new RectF(10, 10, 300, 100), paint);\ncanvas.drawRect(10, 150, 300, 200, paint);\ncanvas.drawRect(new Rect(10, 250, 300, 300), paint);\n\u7b2c\u56db\u79cd\uff1a\u753b\u5706\u89d2\u7684\u77e9\u5f62\ncanvas.drawRoundRect(new RectF(10, 350, 300, 450), 10, 10, paint);\n\u7b2c\u4e8c\u4e2a\u548c\u7b2c\u4e09\u4e2a\u53c2\u6570\u4e3a\u5706\u89d2\u7684\u5bbd\u9ad8\u3002\n\u6709\u5174\u8da3\u7684\u670b\u53cb\u53ef\u4ee5\u6539\u4e0b\u4e0b\u9762\u8fd9\u4e9b\u4e1c\u897f\n<\/span><span style=\"line-height:1.5; color:rgb(0,128,0)\">*\/<\/span>\n<span style=\"line-height:1.5; color:rgb(0,0,255)\">void<\/span><span style=\"line-height:1.5\"> drawCube(Canvas c) {\nc.save();\nc.translate(mCenterX, mCenterY);\nc.drawColor(<\/span>0xff000000<span style=\"line-height:1.5\">);\ndrawLine(c, <\/span>-400, -400, -400, 400, -400, -400<span style=\"line-height:1.5\">);\ndrawLine(c, <\/span>400, -400, -400, 400, 400, -400<span style=\"line-height:1.5\">);\ndrawLine(c, <\/span>400, 400, -400, -400, 400, -400<span style=\"line-height:1.5\">);\ndrawLine(c, <\/span>-400, 400, -400, -400, -400, -400<span style=\"line-height:1.5\">);\ndrawLine(c, <\/span>-400, -400, 400, 400, -400, 400<span style=\"line-height:1.5\">);\ndrawLine(c, <\/span>400, -400, 400, 400, 400, 400<span style=\"line-height:1.5\">);\ndrawLine(c, <\/span>400, 400, 400, -400, 400, 400<span style=\"line-height:1.5\">);\ndrawLine(c, <\/span>-400, 400, 400, -400, -400, 400<span style=\"line-height:1.5\">);\ndrawLine(c, <\/span>-400, -400, 400, -400, -400, -400<span style=\"line-height:1.5\">);\ndrawLine(c, <\/span>400, -400, 400, 400, -400, -400<span style=\"line-height:1.5\">);\ndrawLine(c, <\/span>400, 400, 400, 400, 400, -400<span style=\"line-height:1.5\">);\ndrawLine(c, <\/span>-400, 400, 400, -400, 400, -400<span style=\"line-height:1.5\">);\nc.restore();\n}\n<\/span><span style=\"line-height:1.5; color:rgb(0,128,0)\">\/*<\/span><span style=\"line-height:1.5; color:rgb(0,128,0)\">\n* \u5728\u5c4f\u5e55\u4e2d\u7ed8\u5236\u4e09\u7ef4\u7a7a\u95f4\u7684\u7ebf\n<\/span><span style=\"line-height:1.5; color:rgb(0,128,0)\">*\/<\/span>\n<span style=\"line-height:1.5; color:rgb(0,0,255)\">void<\/span> drawLine(Canvas c, <span style=\"line-height:1.5; color:rgb(0,0,255)\">int<\/span> x1, <span style=\"line-height:1.5; color:rgb(0,0,255)\">int<\/span> y1, <span style=\"line-height:1.5; color:rgb(0,0,255)\">int<\/span> z1, <span style=\"line-height:1.5; color:rgb(0,0,255)\">int<\/span> x2, <span style=\"line-height:1.5; color:rgb(0,0,255)\">int<\/span> y2, <span style=\"line-height:1.5; color:rgb(0,0,255)\">int<\/span><span style=\"line-height:1.5\"> z2) {\n<\/span><span style=\"line-height:1.5; color:rgb(0,128,0)\">\/*<\/span><span style=\"line-height:1.5; color:rgb(0,128,0)\">\n*\u56e0\u4e3a\u5927\u5bb6\u90fd\u77e5\u9053\uff0c\u58c1\u7eb8\u662f\u624b\u673a\u542f\u52a8\u5b8c\u6210\u4e4b\u540e\u5c31\u5df2\u7ecf\u5f00\u59cb\u7ed8\u5236\u7684\uff0c\u4e00\u822c\u53d6\u65f6\u95f4\u4ec0\u4e48\u7684\n*\u6211\u4eec\u90fd\u7528Timer System.currentTimeMillis() Calendar\u6765\u53d6\n*\u8fd9\u4e2a\u5730\u65b9\u53d6\u7cfb\u7edf\u7ea7\u542f\u52a8\u65f6\u95f4\u7b49\u7684\uff0c\u8bb0\u4f4f\u8fd9\u4e2a\u7c7b\uff0cSystemClock\uff0c\u65b9\u6cd5\u81ea\u5df1\u67e5\n<\/span><span style=\"line-height:1.5; color:rgb(0,128,0)\">*\/<\/span>\n<span style=\"line-height:1.5; color:rgb(0,0,255)\">long<\/span> now =<span style=\"line-height:1.5\"> SystemClock.elapsedRealtime();\n<\/span><span style=\"line-height:1.5; color:rgb(0,128,0)\">\/*<\/span><span style=\"line-height:1.5; color:rgb(0,128,0)\">\u53d6\u5f97\u4e09\u7ef4\u5750\u6807\u8f74\u7684\u65cb\u8f6c\u503c<\/span><span style=\"line-height:1.5; color:rgb(0,128,0)\">*\/<\/span>\n<span style=\"line-height:1.5; color:rgb(0,0,255)\">float<\/span> xrot = ((<span style=\"line-height:1.5; color:rgb(0,0,255)\">float<\/span>) (now - mStartTime)) \/ 1000<span style=\"line-height:1.5\">;\n<\/span><span style=\"line-height:1.5; color:rgb(0,0,255)\">float<\/span> yrot = (0.5f - mOffset) * 2.0f<span style=\"line-height:1.5\">;\n<\/span><span style=\"line-height:1.5; color:rgb(0,0,255)\">float<\/span> zrot = 0<span style=\"line-height:1.5\">;\n<\/span><span style=\"line-height:1.5; color:rgb(0,128,0)\">\/\/<\/span><span style=\"line-height:1.5; color:rgb(0,128,0)\"> rotation around X-axis ???<\/span>\n<span style=\"line-height:1.5; color:rgb(0,0,255)\">float<\/span> newy1 = (<span style=\"line-height:1.5; color:rgb(0,0,255)\">float<\/span>) (Math.sin(xrot) * z1 + Math.cos(xrot) *<span style=\"line-height:1.5\"> y1);\n<\/span><span style=\"line-height:1.5; color:rgb(0,0,255)\">float<\/span> newy2 = (<span style=\"line-height:1.5; color:rgb(0,0,255)\">float<\/span>) (Math.sin(xrot) * z2 + Math.cos(xrot) *<span style=\"line-height:1.5\"> y2);\n<\/span><span style=\"line-height:1.5; color:rgb(0,0,255)\">float<\/span> newz1 = (<span style=\"line-height:1.5; color:rgb(0,0,255)\">float<\/span>) (Math.cos(xrot) * z1 - Math.sin(xrot) *<span style=\"line-height:1.5\"> y1);\n<\/span><span style=\"line-height:1.5; color:rgb(0,0,255)\">float<\/span> newz2 = (<span style=\"line-height:1.5; color:rgb(0,0,255)\">float<\/span>) (Math.cos(xrot) * z2 - Math.sin(xrot) *<span style=\"line-height:1.5\"> y2);\n<\/span><span style=\"line-height:1.5; color:rgb(0,128,0)\">\/\/<\/span><span style=\"line-height:1.5; color:rgb(0,128,0)\"> rotation around Y-axis ???<\/span>\n<span style=\"line-height:1.5; color:rgb(0,0,255)\">float<\/span> newx1 = (<span style=\"line-height:1.5; color:rgb(0,0,255)\">float<\/span>) (Math.sin(yrot) * newz1 + Math.cos(yrot) *<span style=\"line-height:1.5\"> x1);\n<\/span><span style=\"line-height:1.5; color:rgb(0,0,255)\">float<\/span> newx2 = (<span style=\"line-height:1.5; color:rgb(0,0,255)\">float<\/span>) (Math.sin(yrot) * newz2 + Math.cos(yrot) *<span style=\"line-height:1.5\"> x2);\nnewz1 <\/span>= (<span style=\"line-height:1.5; color:rgb(0,0,255)\">float<\/span>) (Math.cos(yrot) * newz1 - Math.sin(yrot) *<span style=\"line-height:1.5\"> x1);\nnewz2 <\/span>= (<span style=\"line-height:1.5; color:rgb(0,0,255)\">float<\/span>) (Math.cos(yrot) * newz2 - Math.sin(yrot) *<span style=\"line-height:1.5\"> x2);\n<\/span><span style=\"line-height:1.5; color:rgb(0,128,0)\">\/\/<\/span><span style=\"line-height:1.5; color:rgb(0,128,0)\"> 3D-to-2D projection ???<\/span>\n<span style=\"line-height:1.5; color:rgb(0,0,255)\">float<\/span> startX = newx1 \/ (4 - newz1 \/ 400<span style=\"line-height:1.5\">);\n<\/span><span style=\"line-height:1.5; color:rgb(0,0,255)\">float<\/span> startY = newy1 \/ (4 - newz1 \/ 400<span style=\"line-height:1.5\">);\n<\/span><span style=\"line-height:1.5; color:rgb(0,0,255)\">float<\/span> stopX = newx2 \/ (4 - newz2 \/ 400<span style=\"line-height:1.5\">);\n<\/span><span style=\"line-height:1.5; color:rgb(0,0,255)\">float<\/span> stopY = newy2 \/ (4 - newz2 \/ 400<span style=\"line-height:1.5\">);\nc.drawLine(startX, startY, stopX, stopY, mPaint);\n}\n<\/span><span style=\"line-height:1.5; color:rgb(0,128,0)\">\/*<\/span><span style=\"line-height:1.5; color:rgb(0,128,0)\">\n* \u6309\u4f4d\u5c4f\u5e55\u624b\u52a8\u65f6\u7ed8\u5236\u4e00\u4e2a\u767d\u8272\u7684\u5708\n<\/span><span style=\"line-height:1.5; color:rgb(0,128,0)\">*\/<\/span>\n<span style=\"line-height:1.5; color:rgb(0,0,255)\">void<\/span><span style=\"line-height:1.5\"> drawTouchPoint(Canvas c) {\n<\/span><span style=\"line-height:1.5; color:rgb(0,0,255)\">if<\/span> (mTouchX &gt;= 0 &amp;&amp; mTouchY &gt;= 0<span style=\"line-height:1.5\">) {\nc.drawCircle(mTouchX, mTouchY, <\/span>80<span style=\"line-height:1.5\">, mPaint);\n}\n}\n}\n}<\/span><\/pre>\n<div class=\"cnblogs_code_toolbar\" style=\"margin-top:5px\">\n    <span class=\"cnblogs_code_copy\" style=\"padding-right:5px; line-height:1.5\"><br \/>\n     <a href=\"http:\/\/www.cnblogs.com\/vus520\/archive\/2012\/07\/27\/2611406.html\" rel=\"nofollow\" style=\"color:rgb(29,88,209); text-decoration:none; border:none!important\" title=\"\u590d\u5236\u4ee3\u7801\"><br \/>\n     <\/a><br \/>\n    <\/span>\n   <\/div>\n<\/p><\/div>\n<p style=\"margin:5px auto; font-family:Arial; font-size:14px; line-height:25px\">\n   \u914d\u7f6e\u6587\u4ef6\u4ee3\u7801\u5982\u4e0b\uff1a\n  <\/p>\n<div class=\"cnblogs_code\" style=\"background-color:rgb(245,245,245); font-family:'Courier New'; border:1px solid rgb(204,204,204); padding:5px; overflow:auto; margin:5px 0px; line-height:25px\">\n<div class=\"cnblogs_code_toolbar\" style=\"margin-top:5px\">\n    <span class=\"cnblogs_code_copy\" style=\"padding-right:5px; line-height:1.5\"><br \/>\n     <a href=\"http:\/\/www.cnblogs.com\/vus520\/archive\/2012\/07\/27\/2611406.html\" rel=\"nofollow\" style=\"color:rgb(29,88,209); text-decoration:none; border:none!important\" title=\"\u590d\u5236\u4ee3\u7801\"><br \/>\n     <\/a><br \/>\n    <\/span>\n   <\/div>\n<pre style=\"margin-top:0px; margin-bottom:0px; margin-left:22px; white-space:pre-wrap; word-wrap:break-word; font-family:'Courier New'\"><span style=\"line-height:1.5; color:rgb(0,0,255)\">package<\/span>=\"xiaoma.cube1\"<span style=\"line-height:1.5\">\nandroid:versionCode<\/span>=\"1\"<span style=\"line-height:1.5\">\nandroid:versionName<\/span>=\"1.0\" &gt;<span style=\"line-height:1.5\">\nandroid:label<\/span>=\"@string\/wallpapers\"<span style=\"line-height:1.5\">\nandroid:icon<\/span>=\"@drawable\/ic_launcher\"&gt;<span style=\"line-height:1.5\">\nandroid:label<\/span>=\"@string\/wallpaper_cube1\"<span style=\"line-height:1.5\">\nandroid:name<\/span>=\".CubeWallpaper1\"<span style=\"line-height:1.5\">\nandroid:permission<\/span>=\"android.permission.BIND_WALLPAPER\"&gt;<span style=\"line-height:1.5\">\nandroid:label<\/span>=\"@string\/wallpaper_cube2\"<span style=\"line-height:1.5\">\nandroid:name<\/span>=\".CubeWallpaper2\"<span style=\"line-height:1.5\">\nandroid:permission<\/span>=\"android.permission.BIND_WALLPAPER\"&gt;<span style=\"line-height:1.5\">\nandroid:label<\/span>=\"@string\/cube2_settings\"<span style=\"line-height:1.5\">\nandroid:name<\/span>=\".CubeWallpaper2Settings\"<span style=\"line-height:1.5\">\nandroid:theme<\/span>=\"@android:style\/Theme.Light.WallpaperSettings\"<span style=\"line-height:1.5\">\nandroid:exported<\/span>=\"true\"&gt;<\/pre>\n<div class=\"cnblogs_code_toolbar\" style=\"margin-top:5px\">\n    <span class=\"cnblogs_code_copy\" style=\"padding-right:5px; line-height:1.5\"><br \/>\n     <a href=\"http:\/\/www.cnblogs.com\/vus520\/archive\/2012\/07\/27\/2611406.html\" rel=\"nofollow\" style=\"color:rgb(29,88,209); text-decoration:none; border:none!important\" title=\"\u590d\u5236\u4ee3\u7801\"><br \/>\n     <\/a><br \/>\n    <\/span>\n   <\/div>\n<\/p><\/div>\n<p style=\"margin:5px auto; font-family:Arial; font-size:14px; line-height:25px\">\n<p style=\"margin:5px auto; font-family:Arial; font-size:14px; line-height:25px\">\n   \u4e0b\u8f7d\u5730\u5740\uff1a<br \/>\n   <a href=\"http:\/\/www.eoeandroid.com\/thread-178842-1-1.html\" rel=\"nofollow\" style=\"color:rgb(29,88,209); text-decoration:none\"><br \/>\n    http:\/\/www.eoeandroid.com\/thread-178842-1-1.html<br \/>\n   <\/a>\n  <\/p>\n<p style=\"margin:5px auto; font-family:Arial; font-size:14px; line-height:25px\">\n   \n  <\/p>\n<p style=\"margin:5px auto; font-family:Arial; font-size:14px; line-height:25px\">\n   \u539f\u6587\u5730\u5740\uff1a<br \/>\n   <a href=\"http:\/\/www.cnblogs.com\/vus520\/archive\/2012\/07\/27\/2611406.html\" rel=\"nofollow\"><br \/>\n    http:\/\/www.cnblogs.com\/vus520\/archive\/2012\/07\/27\/2611406.html<br \/>\n   <\/a>\n  <\/p>\n<\/p><\/div>\n<\/div>\n","protected":false},"excerpt":{"rendered":"<p>\u52a8\u6001\u58c1\u7eb8\u86ee\u597d\u73a9\u7684\uff0c\u4e5f\u6ca1\u63a5\u89e6\u8fc7\uff0c\u770b\u5b98\u65b9\u6709\u5c31\u62ff\u4e86\u5b66\u4e60\u4e0b\uff0c\u662f\u7b2c\u4e00\u6b21\u63a5\u89e6\u5f15\u64ceEngine\uff0c\u6fc0\u52a8\u5174\u594b&#8230;\u6548\u679c\u505a [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":215,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[8],"tags":[],"class_list":["post-1551","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-8"],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v24.6 - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>Android\u6e90\u7801\u4e4b\u52a8\u6001\u58c1\u7eb8\u5f15\u64ce - \u7269\u5ae9\u8f6f\u4ef6\u8d44\u8baf\u7f51<\/title>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/www.wunen.com\/index.php\/2025\/05\/01\/android\u6e90\u7801\u4e4b\u52a8\u6001\u58c1\u7eb8\u5f15\u64ce\/\" \/>\n<meta property=\"og:locale\" content=\"zh_CN\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Android\u6e90\u7801\u4e4b\u52a8\u6001\u58c1\u7eb8\u5f15\u64ce - \u7269\u5ae9\u8f6f\u4ef6\u8d44\u8baf\u7f51\" \/>\n<meta property=\"og:description\" content=\"\u52a8\u6001\u58c1\u7eb8\u86ee\u597d\u73a9\u7684\uff0c\u4e5f\u6ca1\u63a5\u89e6\u8fc7\uff0c\u770b\u5b98\u65b9\u6709\u5c31\u62ff\u4e86\u5b66\u4e60\u4e0b\uff0c\u662f\u7b2c\u4e00\u6b21\u63a5\u89e6\u5f15\u64ceEngine\uff0c\u6fc0\u52a8\u5174\u594b&#8230;\u6548\u679c\u505a [&hellip;]\" \/>\n<meta property=\"og:url\" content=\"https:\/\/www.wunen.com\/index.php\/2025\/05\/01\/android\u6e90\u7801\u4e4b\u52a8\u6001\u58c1\u7eb8\u5f15\u64ce\/\" \/>\n<meta property=\"og:site_name\" content=\"\u7269\u5ae9\u8f6f\u4ef6\u8d44\u8baf\u7f51\" \/>\n<meta property=\"article:published_time\" content=\"2025-04-30T16:00:07+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/www.wunen.com\/wp-content\/uploads\/2025\/03\/\u8d44\u8baf.jpg\" \/>\n\t<meta property=\"og:image:width\" content=\"260\" \/>\n\t<meta property=\"og:image:height\" content=\"180\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/jpeg\" \/>\n<meta name=\"author\" content=\"admin@wunen\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"\u4f5c\u8005\" \/>\n\t<meta name=\"twitter:data1\" content=\"admin@wunen\" \/>\n\t<meta name=\"twitter:label2\" content=\"\u9884\u8ba1\u9605\u8bfb\u65f6\u95f4\" \/>\n\t<meta name=\"twitter:data2\" content=\"4 \u5206\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\/\/www.wunen.com\/index.php\/2025\/05\/01\/android%e6%ba%90%e7%a0%81%e4%b9%8b%e5%8a%a8%e6%80%81%e5%a3%81%e7%ba%b8%e5%bc%95%e6%93%8e\/#article\",\"isPartOf\":{\"@id\":\"https:\/\/www.wunen.com\/index.php\/2025\/05\/01\/android%e6%ba%90%e7%a0%81%e4%b9%8b%e5%8a%a8%e6%80%81%e5%a3%81%e7%ba%b8%e5%bc%95%e6%93%8e\/\"},\"author\":{\"name\":\"admin@wunen\",\"@id\":\"https:\/\/www.wunen.com\/#\/schema\/person\/d5f7a6cf545656a9c90d507e64452db8\"},\"headline\":\"Android\u6e90\u7801\u4e4b\u52a8\u6001\u58c1\u7eb8\u5f15\u64ce\",\"datePublished\":\"2025-04-30T16:00:07+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/www.wunen.com\/index.php\/2025\/05\/01\/android%e6%ba%90%e7%a0%81%e4%b9%8b%e5%8a%a8%e6%80%81%e5%a3%81%e7%ba%b8%e5%bc%95%e6%93%8e\/\"},\"wordCount\":18,\"commentCount\":0,\"publisher\":{\"@id\":\"https:\/\/www.wunen.com\/#organization\"},\"image\":{\"@id\":\"https:\/\/www.wunen.com\/index.php\/2025\/05\/01\/android%e6%ba%90%e7%a0%81%e4%b9%8b%e5%8a%a8%e6%80%81%e5%a3%81%e7%ba%b8%e5%bc%95%e6%93%8e\/#primaryimage\"},\"thumbnailUrl\":\"http:\/\/www.wunen.com\/wp-content\/uploads\/2025\/03\/\u8d44\u8baf.jpg\",\"articleSection\":[\"\u52a8\u6001\u58c1\u7eb8\"],\"inLanguage\":\"zh-Hans\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\/\/www.wunen.com\/index.php\/2025\/05\/01\/android%e6%ba%90%e7%a0%81%e4%b9%8b%e5%8a%a8%e6%80%81%e5%a3%81%e7%ba%b8%e5%bc%95%e6%93%8e\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/www.wunen.com\/index.php\/2025\/05\/01\/android%e6%ba%90%e7%a0%81%e4%b9%8b%e5%8a%a8%e6%80%81%e5%a3%81%e7%ba%b8%e5%bc%95%e6%93%8e\/\",\"url\":\"https:\/\/www.wunen.com\/index.php\/2025\/05\/01\/android%e6%ba%90%e7%a0%81%e4%b9%8b%e5%8a%a8%e6%80%81%e5%a3%81%e7%ba%b8%e5%bc%95%e6%93%8e\/\",\"name\":\"Android\u6e90\u7801\u4e4b\u52a8\u6001\u58c1\u7eb8\u5f15\u64ce - \u7269\u5ae9\u8f6f\u4ef6\u8d44\u8baf\u7f51\",\"isPartOf\":{\"@id\":\"https:\/\/www.wunen.com\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\/\/www.wunen.com\/index.php\/2025\/05\/01\/android%e6%ba%90%e7%a0%81%e4%b9%8b%e5%8a%a8%e6%80%81%e5%a3%81%e7%ba%b8%e5%bc%95%e6%93%8e\/#primaryimage\"},\"image\":{\"@id\":\"https:\/\/www.wunen.com\/index.php\/2025\/05\/01\/android%e6%ba%90%e7%a0%81%e4%b9%8b%e5%8a%a8%e6%80%81%e5%a3%81%e7%ba%b8%e5%bc%95%e6%93%8e\/#primaryimage\"},\"thumbnailUrl\":\"http:\/\/www.wunen.com\/wp-content\/uploads\/2025\/03\/\u8d44\u8baf.jpg\",\"datePublished\":\"2025-04-30T16:00:07+00:00\",\"breadcrumb\":{\"@id\":\"https:\/\/www.wunen.com\/index.php\/2025\/05\/01\/android%e6%ba%90%e7%a0%81%e4%b9%8b%e5%8a%a8%e6%80%81%e5%a3%81%e7%ba%b8%e5%bc%95%e6%93%8e\/#breadcrumb\"},\"inLanguage\":\"zh-Hans\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/www.wunen.com\/index.php\/2025\/05\/01\/android%e6%ba%90%e7%a0%81%e4%b9%8b%e5%8a%a8%e6%80%81%e5%a3%81%e7%ba%b8%e5%bc%95%e6%93%8e\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"zh-Hans\",\"@id\":\"https:\/\/www.wunen.com\/index.php\/2025\/05\/01\/android%e6%ba%90%e7%a0%81%e4%b9%8b%e5%8a%a8%e6%80%81%e5%a3%81%e7%ba%b8%e5%bc%95%e6%93%8e\/#primaryimage\",\"url\":\"http:\/\/www.wunen.com\/wp-content\/uploads\/2025\/03\/\u8d44\u8baf.jpg\",\"contentUrl\":\"http:\/\/www.wunen.com\/wp-content\/uploads\/2025\/03\/\u8d44\u8baf.jpg\",\"width\":260,\"height\":180},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/www.wunen.com\/index.php\/2025\/05\/01\/android%e6%ba%90%e7%a0%81%e4%b9%8b%e5%8a%a8%e6%80%81%e5%a3%81%e7%ba%b8%e5%bc%95%e6%93%8e\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"\u9996\u9875\",\"item\":\"https:\/\/www.wunen.com\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Android\u6e90\u7801\u4e4b\u52a8\u6001\u58c1\u7eb8\u5f15\u64ce\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/www.wunen.com\/#website\",\"url\":\"https:\/\/www.wunen.com\/\",\"name\":\"\u7269\u5ae9\u8f6f\u4ef6\u8d44\u8baf\u7f51\",\"description\":\"\u8f6f\u4ef6\u8d44\u8baf\u6765\u7269\u5ae9\",\"publisher\":{\"@id\":\"https:\/\/www.wunen.com\/#organization\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/www.wunen.com\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"zh-Hans\"},{\"@type\":\"Organization\",\"@id\":\"https:\/\/www.wunen.com\/#organization\",\"name\":\"\u7269\u5ae9\u8f6f\u4ef6\u8d44\u8baf\u7f51\",\"url\":\"https:\/\/www.wunen.com\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"zh-Hans\",\"@id\":\"https:\/\/www.wunen.com\/#\/schema\/logo\/image\/\",\"url\":\"http:\/\/www.wunen.com\/wp-content\/uploads\/2025\/03\/cropped-\u7269\u5ae9-1.png\",\"contentUrl\":\"http:\/\/www.wunen.com\/wp-content\/uploads\/2025\/03\/cropped-\u7269\u5ae9-1.png\",\"width\":1024,\"height\":1024,\"caption\":\"\u7269\u5ae9\u8f6f\u4ef6\u8d44\u8baf\u7f51\"},\"image\":{\"@id\":\"https:\/\/www.wunen.com\/#\/schema\/logo\/image\/\"}},{\"@type\":\"Person\",\"@id\":\"https:\/\/www.wunen.com\/#\/schema\/person\/d5f7a6cf545656a9c90d507e64452db8\",\"name\":\"admin@wunen\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"zh-Hans\",\"@id\":\"https:\/\/www.wunen.com\/#\/schema\/person\/image\/\",\"url\":\"https:\/\/secure.gravatar.com\/avatar\/d90ec1e3faf77c4d4e66e40c29b85ff6401161e0502f401dae2f0e25b38ce25e?s=96&d=mm&r=g\",\"contentUrl\":\"https:\/\/secure.gravatar.com\/avatar\/d90ec1e3faf77c4d4e66e40c29b85ff6401161e0502f401dae2f0e25b38ce25e?s=96&d=mm&r=g\",\"caption\":\"admin@wunen\"},\"sameAs\":[\"http:\/\/www.wunen.com\"],\"url\":\"http:\/\/www.wunen.com\/index.php\/author\/adminwunen\/\"}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"Android\u6e90\u7801\u4e4b\u52a8\u6001\u58c1\u7eb8\u5f15\u64ce - \u7269\u5ae9\u8f6f\u4ef6\u8d44\u8baf\u7f51","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/www.wunen.com\/index.php\/2025\/05\/01\/android\u6e90\u7801\u4e4b\u52a8\u6001\u58c1\u7eb8\u5f15\u64ce\/","og_locale":"zh_CN","og_type":"article","og_title":"Android\u6e90\u7801\u4e4b\u52a8\u6001\u58c1\u7eb8\u5f15\u64ce - \u7269\u5ae9\u8f6f\u4ef6\u8d44\u8baf\u7f51","og_description":"\u52a8\u6001\u58c1\u7eb8\u86ee\u597d\u73a9\u7684\uff0c\u4e5f\u6ca1\u63a5\u89e6\u8fc7\uff0c\u770b\u5b98\u65b9\u6709\u5c31\u62ff\u4e86\u5b66\u4e60\u4e0b\uff0c\u662f\u7b2c\u4e00\u6b21\u63a5\u89e6\u5f15\u64ceEngine\uff0c\u6fc0\u52a8\u5174\u594b&#8230;\u6548\u679c\u505a [&hellip;]","og_url":"https:\/\/www.wunen.com\/index.php\/2025\/05\/01\/android\u6e90\u7801\u4e4b\u52a8\u6001\u58c1\u7eb8\u5f15\u64ce\/","og_site_name":"\u7269\u5ae9\u8f6f\u4ef6\u8d44\u8baf\u7f51","article_published_time":"2025-04-30T16:00:07+00:00","og_image":[{"width":260,"height":180,"url":"https:\/\/www.wunen.com\/wp-content\/uploads\/2025\/03\/\u8d44\u8baf.jpg","type":"image\/jpeg"}],"author":"admin@wunen","twitter_card":"summary_large_image","twitter_misc":{"\u4f5c\u8005":"admin@wunen","\u9884\u8ba1\u9605\u8bfb\u65f6\u95f4":"4 \u5206"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/www.wunen.com\/index.php\/2025\/05\/01\/android%e6%ba%90%e7%a0%81%e4%b9%8b%e5%8a%a8%e6%80%81%e5%a3%81%e7%ba%b8%e5%bc%95%e6%93%8e\/#article","isPartOf":{"@id":"https:\/\/www.wunen.com\/index.php\/2025\/05\/01\/android%e6%ba%90%e7%a0%81%e4%b9%8b%e5%8a%a8%e6%80%81%e5%a3%81%e7%ba%b8%e5%bc%95%e6%93%8e\/"},"author":{"name":"admin@wunen","@id":"https:\/\/www.wunen.com\/#\/schema\/person\/d5f7a6cf545656a9c90d507e64452db8"},"headline":"Android\u6e90\u7801\u4e4b\u52a8\u6001\u58c1\u7eb8\u5f15\u64ce","datePublished":"2025-04-30T16:00:07+00:00","mainEntityOfPage":{"@id":"https:\/\/www.wunen.com\/index.php\/2025\/05\/01\/android%e6%ba%90%e7%a0%81%e4%b9%8b%e5%8a%a8%e6%80%81%e5%a3%81%e7%ba%b8%e5%bc%95%e6%93%8e\/"},"wordCount":18,"commentCount":0,"publisher":{"@id":"https:\/\/www.wunen.com\/#organization"},"image":{"@id":"https:\/\/www.wunen.com\/index.php\/2025\/05\/01\/android%e6%ba%90%e7%a0%81%e4%b9%8b%e5%8a%a8%e6%80%81%e5%a3%81%e7%ba%b8%e5%bc%95%e6%93%8e\/#primaryimage"},"thumbnailUrl":"http:\/\/www.wunen.com\/wp-content\/uploads\/2025\/03\/\u8d44\u8baf.jpg","articleSection":["\u52a8\u6001\u58c1\u7eb8"],"inLanguage":"zh-Hans","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/www.wunen.com\/index.php\/2025\/05\/01\/android%e6%ba%90%e7%a0%81%e4%b9%8b%e5%8a%a8%e6%80%81%e5%a3%81%e7%ba%b8%e5%bc%95%e6%93%8e\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/www.wunen.com\/index.php\/2025\/05\/01\/android%e6%ba%90%e7%a0%81%e4%b9%8b%e5%8a%a8%e6%80%81%e5%a3%81%e7%ba%b8%e5%bc%95%e6%93%8e\/","url":"https:\/\/www.wunen.com\/index.php\/2025\/05\/01\/android%e6%ba%90%e7%a0%81%e4%b9%8b%e5%8a%a8%e6%80%81%e5%a3%81%e7%ba%b8%e5%bc%95%e6%93%8e\/","name":"Android\u6e90\u7801\u4e4b\u52a8\u6001\u58c1\u7eb8\u5f15\u64ce - \u7269\u5ae9\u8f6f\u4ef6\u8d44\u8baf\u7f51","isPartOf":{"@id":"https:\/\/www.wunen.com\/#website"},"primaryImageOfPage":{"@id":"https:\/\/www.wunen.com\/index.php\/2025\/05\/01\/android%e6%ba%90%e7%a0%81%e4%b9%8b%e5%8a%a8%e6%80%81%e5%a3%81%e7%ba%b8%e5%bc%95%e6%93%8e\/#primaryimage"},"image":{"@id":"https:\/\/www.wunen.com\/index.php\/2025\/05\/01\/android%e6%ba%90%e7%a0%81%e4%b9%8b%e5%8a%a8%e6%80%81%e5%a3%81%e7%ba%b8%e5%bc%95%e6%93%8e\/#primaryimage"},"thumbnailUrl":"http:\/\/www.wunen.com\/wp-content\/uploads\/2025\/03\/\u8d44\u8baf.jpg","datePublished":"2025-04-30T16:00:07+00:00","breadcrumb":{"@id":"https:\/\/www.wunen.com\/index.php\/2025\/05\/01\/android%e6%ba%90%e7%a0%81%e4%b9%8b%e5%8a%a8%e6%80%81%e5%a3%81%e7%ba%b8%e5%bc%95%e6%93%8e\/#breadcrumb"},"inLanguage":"zh-Hans","potentialAction":[{"@type":"ReadAction","target":["https:\/\/www.wunen.com\/index.php\/2025\/05\/01\/android%e6%ba%90%e7%a0%81%e4%b9%8b%e5%8a%a8%e6%80%81%e5%a3%81%e7%ba%b8%e5%bc%95%e6%93%8e\/"]}]},{"@type":"ImageObject","inLanguage":"zh-Hans","@id":"https:\/\/www.wunen.com\/index.php\/2025\/05\/01\/android%e6%ba%90%e7%a0%81%e4%b9%8b%e5%8a%a8%e6%80%81%e5%a3%81%e7%ba%b8%e5%bc%95%e6%93%8e\/#primaryimage","url":"http:\/\/www.wunen.com\/wp-content\/uploads\/2025\/03\/\u8d44\u8baf.jpg","contentUrl":"http:\/\/www.wunen.com\/wp-content\/uploads\/2025\/03\/\u8d44\u8baf.jpg","width":260,"height":180},{"@type":"BreadcrumbList","@id":"https:\/\/www.wunen.com\/index.php\/2025\/05\/01\/android%e6%ba%90%e7%a0%81%e4%b9%8b%e5%8a%a8%e6%80%81%e5%a3%81%e7%ba%b8%e5%bc%95%e6%93%8e\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"\u9996\u9875","item":"https:\/\/www.wunen.com\/"},{"@type":"ListItem","position":2,"name":"Android\u6e90\u7801\u4e4b\u52a8\u6001\u58c1\u7eb8\u5f15\u64ce"}]},{"@type":"WebSite","@id":"https:\/\/www.wunen.com\/#website","url":"https:\/\/www.wunen.com\/","name":"\u7269\u5ae9\u8f6f\u4ef6\u8d44\u8baf\u7f51","description":"\u8f6f\u4ef6\u8d44\u8baf\u6765\u7269\u5ae9","publisher":{"@id":"https:\/\/www.wunen.com\/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/www.wunen.com\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"zh-Hans"},{"@type":"Organization","@id":"https:\/\/www.wunen.com\/#organization","name":"\u7269\u5ae9\u8f6f\u4ef6\u8d44\u8baf\u7f51","url":"https:\/\/www.wunen.com\/","logo":{"@type":"ImageObject","inLanguage":"zh-Hans","@id":"https:\/\/www.wunen.com\/#\/schema\/logo\/image\/","url":"http:\/\/www.wunen.com\/wp-content\/uploads\/2025\/03\/cropped-\u7269\u5ae9-1.png","contentUrl":"http:\/\/www.wunen.com\/wp-content\/uploads\/2025\/03\/cropped-\u7269\u5ae9-1.png","width":1024,"height":1024,"caption":"\u7269\u5ae9\u8f6f\u4ef6\u8d44\u8baf\u7f51"},"image":{"@id":"https:\/\/www.wunen.com\/#\/schema\/logo\/image\/"}},{"@type":"Person","@id":"https:\/\/www.wunen.com\/#\/schema\/person\/d5f7a6cf545656a9c90d507e64452db8","name":"admin@wunen","image":{"@type":"ImageObject","inLanguage":"zh-Hans","@id":"https:\/\/www.wunen.com\/#\/schema\/person\/image\/","url":"https:\/\/secure.gravatar.com\/avatar\/d90ec1e3faf77c4d4e66e40c29b85ff6401161e0502f401dae2f0e25b38ce25e?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/d90ec1e3faf77c4d4e66e40c29b85ff6401161e0502f401dae2f0e25b38ce25e?s=96&d=mm&r=g","caption":"admin@wunen"},"sameAs":["http:\/\/www.wunen.com"],"url":"http:\/\/www.wunen.com\/index.php\/author\/adminwunen\/"}]}},"_links":{"self":[{"href":"http:\/\/www.wunen.com\/index.php\/wp-json\/wp\/v2\/posts\/1551","targetHints":{"allow":["GET"]}}],"collection":[{"href":"http:\/\/www.wunen.com\/index.php\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"http:\/\/www.wunen.com\/index.php\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"http:\/\/www.wunen.com\/index.php\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"http:\/\/www.wunen.com\/index.php\/wp-json\/wp\/v2\/comments?post=1551"}],"version-history":[{"count":0,"href":"http:\/\/www.wunen.com\/index.php\/wp-json\/wp\/v2\/posts\/1551\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"http:\/\/www.wunen.com\/index.php\/wp-json\/wp\/v2\/media\/215"}],"wp:attachment":[{"href":"http:\/\/www.wunen.com\/index.php\/wp-json\/wp\/v2\/media?parent=1551"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"http:\/\/www.wunen.com\/index.php\/wp-json\/wp\/v2\/categories?post=1551"},{"taxonomy":"post_tag","embeddable":true,"href":"http:\/\/www.wunen.com\/index.php\/wp-json\/wp\/v2\/tags?post=1551"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}