CINXE.COM

Android 开发专区 - OSCHINA 社区

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html lang='zh-CN' xml:lang='zh-CN' xmlns='http://www.w3.org/1999/xhtml'> <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> <!-- 此meta用于腾讯验证我们网址的有效性 --> <meta property="qc:admins" content="2554550177673301616654"> <!-- 此meta用于百度站长工具 --> <meta name="baidu-site-verification" content="kerGDpToCx"> <meta name="referrer" content="always"/> <link rel="shortcut icon" type="image/x-icon" href="/img/favicon.ico?t=1670143215000"> <title>Android 开发专区 - OSCHINA 社区</title> <meta itemprop="name" content="Android 开发专区- OSCHINA 社区"/> <meta itemprop="image" content="https://www.oschina.net/img/logo_s2.png" /> <meta name="Description" itemprop="description" content="Android 开发专区- OSCHINA 社区"> <link rel="stylesheet" href="/css/channel.css?t=1670143214000" type="text/css" media="screen"> <link rel="stylesheet" type="text/css" href="/js/2011/fancybox/jquery.fancybox-1.3.4.css?t=1670143215000" media="screen"> <link type="text/css" rel="stylesheet" href="https://static.oschina.net/build/oschina/components/stylesheets/footer.css?t=1743650652000"> <link type="text/css" rel="stylesheet" href="https://static.oschina.net/build/oschina/components/stylesheets/header.css?t=1743650652000"> <link type="text/css" rel="stylesheet" href="https://static.oschina.net/build/oschina/components/stylesheets/icon.css?t=1743650652000"> <link type="text/css" rel="stylesheet" href="https://static.oschina.net/build/oschina/components/stylesheets/leeui.css?t=1743650652000"> <link type="text/css" rel="stylesheet" href="https://static.oschina.net/build/oschina/components/stylesheets/leeui_layout.css?t=1743650652000"> <link type="text/css" rel="stylesheet" href="https://static.oschina.net/build/oschina/components/stylesheets/scope.css?t=1743650652000"> <link rel="alternate" type="application/rss+xml" title="最新开源项目" href="https://www.oschina.net/project/rss"> <link rel="alternate" type="application/rss+xml" title="最新开源资讯" href="https://www.oschina.net/news/rss"> <link rel="alternate" type="application/rss+xml" title="最新问题列表" href="https://www.oschina.net/question/rss"> <link rel="alternate" type="application/rss+xml" title="最新翻译列表" href="https://www.oschina.net/translate/rss"> <link rel="alternate" type="application/rss+xml" title="最新博客列表" href="https://www.oschina.net/blog/rss"> <link rel="alternate" type="application/rss+xml" title="推荐博客列表" href="https://www.oschina.net/blog/rss?show=more"> <link rel="alternate" type="application/rss+xml" title="推荐软件列表" href="https://www.oschina.net/project/rss?show=recomms"> <link rel="alternate" type="application/rss+xml" title="最新代码分享列表" href="https://www.oschina.net/code/rss"> <link rel="alternate" type="application/rss+xml" title="OSCHINA - 源码列表" href="https://www.oschina.net/code/source_rss"> <!--添加emoji支持--> <link rel="stylesheet" type="text/css" href="/js/team/grunt/dist/emoji/emoji.min.css?t=1670143216000"> <link rel="stylesheet" type="text/css" href="/js/poshytip/tip-yellowsimple/tip-yellowsimple.css?t=1670143216000"> <script type="text/javascript" src="https://static.oschina.net/public/bower_components/jquery/dist/jquery.js?t=1670143216000"></script> <script type="text/javascript" src="https://static.oschina.net/public/bower_components/jquery-form/jquery.form.js?t=1670143216000"></script> <script type="text/javascript" src="https://static.oschina.net/public/bower_components/fancybox/source/jquery.fancybox.js?t=1670143216000"></script> <script type="text/javascript" src="https://static.oschina.net/public/javascripts/extension/func.js?t=1670143216000"></script> <script type="text/javascript" src="https://static.oschina.net/public/javascripts/action/action.js?t=1743589986000"></script> <script type="text/javascript" src="https://static.oschina.net/public/javascripts/action/plugins/throttle.js?t=1670143216000"></script> <script type="text/javascript" src="https://static.oschina.net/public/javascripts/action/plugins/www/msg.js?t=1670143216000"></script> <script> define('www_channel', ['msg', 'throttle'], function (msg, throttle) { var TAGS = function () { this.__name = 'TAGS'; }; function top(ww) { var tooltop = $('.sc-tool-backtop'), scrollHandler = function () { var scrollTop = ww.scrollTop(); if (scrollTop > 200) { tooltop.removeClass('hide').addClass('show'); } else { tooltop.removeClass('show').addClass('hide'); } }; scrollHandler(); throttle.requestAnimationFrame(scrollHandler, 300); tooltop.bind('click', function () { $("html, body").stop().animate({scrollTop: 0}, '500', 'swing'); }); }; TAGS.prototype = { constructor: TAGS, register: function () { if (this.g_user_login) { msg.polling(this.polling_msg_tips_url); } top($(window)); } }; return TAGS; }); </script> <script type="text/javascript"> g_user = { id:0, name:'', login:false}; </script> <script type="text/javascript" src="/js/2011/oschina.js?t=1670143215000"></script> <script type="text/javascript" src="/js/utils.js?t=1670143216000"></script> <script type="text/javascript" src="/js/channel_v2.js?t=1670143215000?2016122918"></script> <script type="text/javascript" src="/js/2011/jq.Slide.js?t=1670143215000"></script> <link rel="stylesheet" href="/css/android.css?t=1670143214000" type="text/css" media="screen" /> <style type="text/css"> .header-navbar .top-banner .menu-drop .menu-drop-down .drop-list li { text-align: left; } .footer .footer-wrapper .box-aw { text-align: left; } #OSC_Banner .wp998 .search input { height: 32px; } </style> </head> <body class="sc body sc-bgc" style="background: #fff;"> <val data-name="g_user_login" data-value="false"></val> <link type="text/css" rel="stylesheet" href="https://static.oschina.net/build/oschina/event/stylesheets/widget/news_style.css?t=1744100514000" /> <div id="news_header"> <header class="ant-layout-header header"> <div class="header2" style="box-shadow: 0 2px 4px #0000001a;"> <div class="top-prefix"> <div class="header-top"> <div class="header-top-content"> <div class="content-left"> <a class="logo-C" href="https://www.oschina.net/"> <div class="box-center"> <img src="/img/images/top_logo.png" width="22" height="22" alt="" /> </div> </a> <div id="nav_top_BarTabs"> </div> <div class="oper-user"> <span> DevOps研发效能 <span role="img" aria-label="right" class="anticon anticon-right" style="font-size: 14px;"> <svg focusable="false" data-icon="right" width="1em" height="1em" fill="currentColor" aria-hidden="true" viewBox="64 64 896 896"> <path d="M765.7 486.8L314.9 134.7A7.97 7.97 0 00302 141v77.3c0 4.9 2.3 9.6 6.1 12.6l360 281.1-360 281.1c-3.9 3-6.1 7.7-6.1 12.6V883c0 6.7 7.7 10.4 12.9 6.3l450.8-352.1a31.96 31.96 0 000-50.4z"></path> </svg><!----> </span> </span> <div class="oper-user-box"> <div class="ant-popover css-quj94o ant-popover-placement-bottom ant-popover-arrow-hidden"> <div class="ant-popover-inner" role="tooltip"> <div class="ant-popover-inner-content"> <div class="item-content" id="devops_box"> </div> </div> </div> </div> </div> </div> </div> <div class="content-right"> <div class="media-matrix"> <div class="box-center"> <img src="/img/images/icon_code.svg" width="14" alt="" /> </div> <span>媒体矩阵</span> <span role="img" aria-label="right" class="anticon anticon-right" style="font-size: 14px;"> <svg focusable="false" data-icon="right" width="1em" height="1em" fill="currentColor" aria-hidden="true" viewBox="64 64 896 896" > <path d="M765.7 486.8L314.9 134.7A7.97 7.97 0 00302 141v77.3c0 4.9 2.3 9.6 6.1 12.6l360 281.1-360 281.1c-3.9 3-6.1 7.7-6.1 12.6V883c0 6.7 7.7 10.4 12.9 6.3l450.8-352.1a31.96 31.96 0 000-50.4z"></path> </svg> </span> </div> <div class="osc-app"> <div class="box-center"> <img src="/img/images/icon_iphone.svg" width="24px" alt="" /> </div> <span>开源中国APP</span> <span role="img" aria-label="right" class="anticon anticon-right" style="font-size: 14px;"> <svg focusable="false" data-icon="right" width="1em" height="1em" fill="currentColor" aria-hidden="true" viewBox="64 64 896 896"> <path d="M765.7 486.8L314.9 134.7A7.97 7.97 0 00302 141v77.3c0 4.9 2.3 9.6 6.1 12.6l360 281.1-360 281.1c-3.9 3-6.1 7.7-6.1 12.6V883c0 6.7 7.7 10.4 12.9 6.3l450.8-352.1a31.96 31.96 0 000-50.4z"></path> </svg> </span> </div> </div> </div> </div> <!--媒体矩阵--> <div class="media-matrix-mask mask" style="display: none;"> <div class="mask-box"> <div class="mask-content" id="media-box-mask"> </div> </div> </div> <!--开源中国APP--> <div class="osc-app-mask mask" style="display: none;"> <div class="mask-box"> <div class="mask-content" id="osc-app-box"> </div> </div> </div> </div> <div class="header-box"> <div class="header-bottom"> <div class="nav-bar"> <div class="nav-bar-item" id="nav-bar-menu"> </div> </div> <div class="nav-bar-h5"> <div class="box-center ant-dropdown-trigger"> <img src="/img/images/icon_navIphone.png" style="width: 1.75rem; height: 1.75rem;" alt="" /> </div> <!--h5页面导航--> <div class="h5-bar-menu" id="navBarH5Menu"> <div class="nav-bar-h5-item"> </div> </div> <!--h5页面导航--> </div> <div class="expandable-search seach-box"> <form action="/search"> <span class="ant-input-affix-wrapper search-input css-quj94o"> <input type="hidden" name="identification" value="1745441089671" /> <input type="text" name="q" id="keyword" class="ant-input css-quj94o" value="" placeholder="用问题解决问题" /> <span class="ant-input-suffix"> <div class="search-btn" onclick="window.location.href='/search?q=' + encodeURIComponent(document.getElementById('keyword').value)"> <div class="box-center" style="padding: 0 10px"> <img src="/img/images/icon_search.png" class="search_btn" alt="" /> </div> </div> </span> </span> </form> </div> <div class="header-box__inner__box"> <!--未登录--> <a class="item" href="/home/login?goto_page=">登录</a> <a class="item" href="/home/reg?goto_page=">注册</a> <!--未登录--> </div> </div> <div class="drawer"> </div> </div> </div> </header> </div> <!--登录后点击用户显示--> <section> <div id='OSC_Banner'> <div class="wp998"><a href='https://www.oschina.net/' class='Logo' title='OSChina 开源中国'>开源中国</a> <h1><a href='/android'>Android开发专区</a></h1> <form action='https://www.oschina.net/search' class='search'> <input type='hidden' name='scope' value='blog'/> <input id='channel_q' type='text' name='q' value='' placeholder='在 73427 款开源软件中搜索' class='TXT'/> <button type='submit' class='BTN'>搜 索</button> </form> <div class='clear'></div> </div> </div> <div id="OSC_Screen" style="margin-bottom: 0;min-height: calc(100vh - 240px);" data-define="www_channel"> <div id="OSC_Content" class='CenterDiv'> <div data-traceid="安卓开发专区" data-tracepid="page_pv" style="display: none"></div> <div class="container"> <div class="os_adr_left"> <div class="top_content clearfix"> <div class="block cate_nav"> <div class="title"> <h4><h5 class="adr_related_title Android_title"><a href="/android" title="Android 专区"></a></h5></h4> </div> <div class="block-content"> <ul id="cate_menu"> <li><a href="https://www.oschina.net/android/2/dev-env-setup" class="leva">开发环境搭建<span class="num"> (938)</span></a> <ul> <li><a href="https://www.oschina.net/android/15/sdk">Android SDK</a><span class="num"> (169)</span></li> <li><a href="https://www.oschina.net/android/14/eclipse-adt">Eclipse ADT</a><span class="num"> (161)</span></li> <li><a href="https://www.oschina.net/android/16/avd">模拟器 AVD</a><span class="num"> (208)</span></li> <li><a href="https://www.oschina.net/android/17/ddms">调试器 DDMS</a><span class="num"> (80)</span></li> <li><a href="https://www.oschina.net/android/88/test">测试</a><span class="num"> (63)</span></li> <li><a href="https://www.oschina.net/android/89/log">日志/Logcat</a><span class="num"> (51)</span></li> <li><a href="https://www.oschina.net/android/111/adb">ADB</a><span class="num"> (104)</span></li> <li><a href="https://www.oschina.net/android/105/android-market">Android Market</a><span class="num"> (30)</span></li> <li><a href="https://www.oschina.net/android/143/other-dev-env">非Eclipse/Java开发环境</a><span class="num"> (10)</span></li> </ul> </li> <li><a href="https://www.oschina.net/android/3/android-dev-base" class="leva">Android开发基础<span class="num"> (1770)</span></a> <ul> <li><a href="https://www.oschina.net/android/213/asynctask">Task/AsyncTask</a><span class="num"> (62)</span></li> <li><a href="https://www.oschina.net/android/315/android-examples">开发实例</a><span class="num"> (105)</span></li> <li><a href="https://www.oschina.net/android/19/structure">Android 项目结构</a><span class="num"> (41)</span></li> <li><a href="https://www.oschina.net/android/20/lifecycle">生命周期/运行原理</a><span class="num"> (94)</span></li> <li><a href="https://www.oschina.net/android/117/examples">程序示例</a><span class="num"> (17)</span></li> <li><a href="https://www.oschina.net/android/85/resource">程序资源/Resource</a><span class="num"> (99)</span></li> <li><a href="https://www.oschina.net/android/65/android-activity">Activity</a><span class="num"> (236)</span></li> <li><a href="https://www.oschina.net/android/63/view">View</a><span class="num"> (41)</span></li> <li><a href="https://www.oschina.net/android/81/intent">Intent</a><span class="num"> (119)</span></li> <li><a href="https://www.oschina.net/android/90/service">Service</a><span class="num"> (122)</span></li> <li><a href="https://www.oschina.net/android/78/handler-and-thread">Handler/线程</a><span class="num"> (111)</span></li> <li><a href="https://www.oschina.net/android/212/contentresolver">ContentResolver</a><span class="num"> (8)</span></li> <li><a href="https://www.oschina.net/android/18/manifest">Manifest/Permission</a><span class="num"> (72)</span></li> <li><a href="https://www.oschina.net/android/96/file-process">文件处理</a><span class="num"> (31)</span></li> <li><a href="https://www.oschina.net/android/130/xml-html-json">XML/HTML/JSON</a><span class="num"> (87)</span></li> <li><a href="https://www.oschina.net/android/125/attrs-xml">attrs.xml</a><span class="num"> (4)</span></li> <li><a href="https://www.oschina.net/android/118/broadcastrecevicer">BroadCastRecevicer</a><span class="num"> (53)</span></li> <li><a href="https://www.oschina.net/android/98/input">按键/键盘输入/输入法</a><span class="num"> (88)</span></li> <li><a href="https://www.oschina.net/android/93/messaging">进程间通信/AIDL/Message</a><span class="num"> (91)</span></li> <li><a href="https://www.oschina.net/android/101/app-deploy-ship">签名/打包/部署/发布</a><span class="num"> (126)</span></li> </ul> </li> <li><a href="https://www.oschina.net/android/4/android-dev-ui" class="leva">用户界面<span class="num"> (2737)</span></a> <ul> <li><a href="https://www.oschina.net/android/304/AlarmManager">AlarmManager</a><span class="num"> (5)</span></li> <li><a href="https://www.oschina.net/android/317/android-launcher">Launcher</a><span class="num"> (57)</span></li> <li><a href="https://www.oschina.net/android/320/gesture">手势操作</a><span class="num"> (26)</span></li> <li><a href="https://www.oschina.net/android/321/android-picker">选择器(Picker)</a><span class="num"> (12)</span></li> <li><a href="https://www.oschina.net/android/26/edittext">文本编辑/EditText</a><span class="num"> (84)</span></li> <li><a href="https://www.oschina.net/android/30/button">按钮/Button</a><span class="num"> (59)</span></li> <li><a href="https://www.oschina.net/android/25/listview">ListView</a><span class="num"> (369)</span></li> <li><a href="https://www.oschina.net/android/203/checkbox">CheckBox/复选框</a><span class="num"> (25)</span></li> <li><a href="https://www.oschina.net/android/24/textview">TextView</a><span class="num"> (102)</span></li> <li><a href="https://www.oschina.net/android/23/layout">布局/Layout</a><span class="num"> (188)</span></li> <li><a href="https://www.oschina.net/android/204/surfaceview">SurfaceView</a><span class="num"> (71)</span></li> <li><a href="https://www.oschina.net/android/31/menu">菜单/Menu</a><span class="num"> (78)</span></li> <li><a href="https://www.oschina.net/android/32/dialog">Dialog/PopupWindow</a><span class="num"> (112)</span></li> <li><a href="https://www.oschina.net/android/67/imageview">ImageView</a><span class="num"> (64)</span></li> <li><a href="https://www.oschina.net/android/84/android-ui-toast">Toast</a><span class="num"> (27)</span></li> <li><a href="https://www.oschina.net/android/82/scroller">Scroller/SeekBar/RatingBar</a><span class="num"> (36)</span></li> <li><a href="https://www.oschina.net/android/87/tab">Tab/TabHost</a><span class="num"> (79)</span></li> <li><a href="https://www.oschina.net/android/92/progressbar">进度栏/ProgressBar</a><span class="num"> (29)</span></li> <li><a href="https://www.oschina.net/android/94/scrollview">ScrollView</a><span class="num"> (44)</span></li> <li><a href="https://www.oschina.net/android/97/gridview">GridView</a><span class="num"> (105)</span></li> <li><a href="https://www.oschina.net/android/102/gallery">Gallery</a><span class="num"> (57)</span></li> <li><a href="https://www.oschina.net/android/56/widget">Widget</a><span class="num"> (54)</span></li> <li><a href="https://www.oschina.net/android/33/notification">Notification</a><span class="num"> (36)</span></li> <li><a href="https://www.oschina.net/android/43/webview-webkit">WebView/WebKit</a><span class="num"> (196)</span></li> <li><a href="https://www.oschina.net/android/108/viewflipper">ViewFlipper/ViewPager</a><span class="num"> (103)</span></li> <li><a href="https://www.oschina.net/android/72/adapter">Adapter</a><span class="num"> (33)</span></li> <li><a href="https://www.oschina.net/android/86/sliding-drawer">SlidingDrawer</a><span class="num"> (19)</span></li> <li><a href="https://www.oschina.net/android/116/ui-special-effects">界面特效</a><span class="num"> (90)</span></li> <li><a href="https://www.oschina.net/android/95/font-multi-language">字体/多语言</a><span class="num"> (30)</span></li> <li><a href="https://www.oschina.net/android/22/event-process">事件处理</a><span class="num"> (87)</span></li> <li><a href="https://www.oschina.net/android/106/theme">Style/主题/Theme</a><span class="num"> (43)</span></li> <li><a href="https://www.oschina.net/android/139/spinner">下拉列表/Spinner</a><span class="num"> (50)</span></li> <li><a href="https://www.oschina.net/android/178/splash">Splash/启动界面</a><span class="num"> (4)</span></li> <li><a href="https://www.oschina.net/android/177/fragment">Fragment/片段</a><span class="num"> (97)</span></li> <li><a href="https://www.oschina.net/android/202/actionbar">Action Bar</a><span class="num"> (36)</span></li> <li><a href="https://www.oschina.net/android/199/touch-screen">触摸屏操作</a><span class="num"> (59)</span></li> </ul> </li> <li><a href="https://www.oschina.net/android/5/android-dev-storage" class="leva">数据存储<span class="num"> (424)</span></a> <ul> <li><a href="https://www.oschina.net/android/305/medialib">媒体库</a><span class="num"> (13)</span></li> <li><a href="https://www.oschina.net/android/36/files-sdcard">文件存储/SD卡</a><span class="num"> (150)</span></li> <li><a href="https://www.oschina.net/android/38/sqlite">数据库/SQLite</a><span class="num"> (144)</span></li> <li><a href="https://www.oschina.net/android/40/preferences">Preferences</a><span class="num"> (61)</span></li> <li><a href="https://www.oschina.net/android/39/content-provider">Content Provider</a><span class="num"> (51)</span></li> </ul> </li> <li><a href="https://www.oschina.net/android/6/android-dev-netio" class="leva">网络通信<span class="num"> (573)</span></a> <ul> <li><a href="https://www.oschina.net/android/41/http">HTTP</a><span class="num"> (140)</span></li> <li><a href="https://www.oschina.net/android/42/email">Email</a><span class="num"> (13)</span></li> <li><a href="https://www.oschina.net/android/44/Socket">Socket</a><span class="num"> (63)</span></li> <li><a href="https://www.oschina.net/android/66/nfc">近场通信/NFC</a><span class="num"> (4)</span></li> <li><a href="https://www.oschina.net/android/80/wifi-3g">WIFI/3G</a><span class="num"> (126)</span></li> <li><a href="https://www.oschina.net/android/91/red-infra-blue-tooth">红外/蓝牙</a><span class="num"> (75)</span></li> <li><a href="https://www.oschina.net/android/99/c2dm">消息推送/C2DM</a><span class="num"> (35)</span></li> <li><a href="https://www.oschina.net/android/198/webservice">Web服务/SOAP/RPC</a><span class="num"> (39)</span></li> </ul> </li> <li><a href="https://www.oschina.net/android/7/android-dev-media" class="leva">多媒体<span class="num"> (365)</span></a> <ul> <li><a href="https://www.oschina.net/android/45/audio">音频/Audio</a><span class="num"> (78)</span></li> <li><a href="https://www.oschina.net/android/46/video">视频/Video</a><span class="num"> (74)</span></li> <li><a href="https://www.oschina.net/android/47/sound-record">录音</a><span class="num"> (27)</span></li> <li><a href="https://www.oschina.net/android/48/camera">摄像头/Camera</a><span class="num"> (110)</span></li> <li><a href="https://www.oschina.net/android/50/quarter-bell">闹钟</a><span class="num"> (2)</span></li> <li><a href="https://www.oschina.net/android/132/tts">语音识别/文本朗读</a><span class="num"> (28)</span></li> <li><a href="https://www.oschina.net/android/137/mediastore">MediaStore</a><span class="num"> (11)</span></li> </ul> </li> <li><a href="https://www.oschina.net/android/8/android-dev-graphics" class="leva">图形图像<span class="num"> (596)</span></a> <ul> <li><a href="https://www.oschina.net/android/61/opengl">OpenGL/3D</a><span class="num"> (66)</span></li> <li><a href="https://www.oschina.net/android/62/canvas">Canvas/Bitmap</a><span class="num"> (124)</span></li> <li><a href="https://www.oschina.net/android/64/animation">GIF/动画</a><span class="num"> (74)</span></li> <li><a href="https://www.oschina.net/android/73/photo-effects">图像处理/特效</a><span class="num"> (175)</span></li> <li><a href="https://www.oschina.net/android/113/resolution">像素/屏幕/分辨率</a><span class="num"> (135)</span></li> </ul> </li> <li><a href="https://www.oschina.net/android/131/android-advanced" class="leva">Android 高级篇<span class="num"> (913)</span></a> <ul> <li><a href="https://www.oschina.net/android/140/uncomplier">编译/反编译</a><span class="num"> (65)</span></li> <li><a href="https://www.oschina.net/android/205/android-cipher">Android加密解密</a><span class="num"> (12)</span></li> <li><a href="https://www.oschina.net/android/224/ophone">OPhone</a><span class="num"> (12)</span></li> <li><a href="https://www.oschina.net/android/104/web-platform">Web应用开发平台</a><span class="num"> (99)</span></li> <li><a href="https://www.oschina.net/android/133/security">Android安全</a><span class="num"> (3)</span></li> <li><a href="https://www.oschina.net/android/135/app-optimize">程序优化</a><span class="num"> (65)</span></li> <li><a href="https://www.oschina.net/android/138/apk-info">APK程序信息</a><span class="num"> (87)</span></li> <li><a href="https://www.oschina.net/android/10/android-dev-ndk-jni">NDK/JNI</a><span class="num"> (172)</span></li> <li><a href="https://www.oschina.net/android/100/android-dev-sys">Android 框架/底层</a><span class="num"> (165)</span></li> <li><a href="https://www.oschina.net/android/123/compile">源码下载/编译</a><span class="num"> (143)</span></li> <li><a href="https://www.oschina.net/android/112/transplant">程序移植</a><span class="num"> (43)</span></li> </ul> </li> <li><a href="https://www.oschina.net/android/11/android-dev-games" class="leva">游戏开发<span class="num"> (100)</span></a> <ul> <li><a href="https://www.oschina.net/android/121/game-engine">游戏引擎</a><span class="num"> (22)</span></li> <li><a href="https://www.oschina.net/android/122/game-samples">游戏示例/源码</a><span class="num"> (42)</span></li> </ul> </li> <li><a href="https://www.oschina.net/android/9/android-dev-specials" class="leva">设备功能<span class="num"> (515)</span></a> <ul> <li><a href="https://www.oschina.net/android/51/gps">GPS/LBS/定位</a><span class="num"> (108)</span></li> <li><a href="https://www.oschina.net/android/52/sensors">传感器</a><span class="num"> (35)</span></li> <li><a href="https://www.oschina.net/android/53/calls">电话 API</a><span class="num"> (73)</span></li> <li><a href="https://www.oschina.net/android/54/sms-mms">短信/彩信/SMS/MMS</a><span class="num"> (103)</span></li> <li><a href="https://www.oschina.net/android/114/contacts">联系人/Contacts</a><span class="num"> (40)</span></li> <li><a href="https://www.oschina.net/android/115/device-info">设备信息</a><span class="num"> (118)</span></li> <li><a href="https://www.oschina.net/android/201/android-driver">Android驱动开发</a><span class="num"> (24)</span></li> </ul> </li> <li><a href="https://www.oschina.net/android/68/android-dev-3rdparty" class="leva">第三方集成<span class="num"> (158)</span></a> <ul> <li><a href="https://www.oschina.net/android/69/weibo">微博</a><span class="num"> (34)</span></li> <li><a href="https://www.oschina.net/android/70/oauth">OAuth</a><span class="num"> (13)</span></li> <li><a href="https://www.oschina.net/android/76/google-services-api">Google 服务/API</a><span class="num"> (58)</span></li> <li><a href="https://www.oschina.net/android/136/alipay">支付宝</a><span class="num"> (3)</span></li> <li><a href="https://www.oschina.net/android/307/baidu-map">百度地图集成</a><span class="num"> (39)</span></li> </ul> </li> <li><a href="https://www.oschina.net/android/77/android-dev-others" class="leva">其他<span class="num"> (671)</span></a> <ul> <li><a href="https://www.oschina.net/android/13/android-dev-usage">Android 使用/软件</a><span class="num"> (116)</span></li> <li><a href="https://www.oschina.net/android/124/rom-unlock">ROM制作/刷机/解锁</a><span class="num"> (98)</span></li> <li><a href="https://www.oschina.net/android/129/phone-hardware">Android 硬件</a><span class="num"> (49)</span></li> <li><a href="https://www.oschina.net/android/119/mis">杂谈</a><span class="num"> (152)</span></li> </ul> </li> </ul> </div> </div> <div class="block hotnews_info"> <div class="title"> <h4>Android 最新资讯</h4><a class="more" href="/search?q=android&scope=news">更多资讯&raquo;</a> </div> <div class="block-content"> <ul> <li> <h3><span class='date'>04/23</span><a href="https://www.oschina.net/news/346083/beeorder-25-4-22-released" target="_blank">微信小程序点餐助手发布 beeOrder V25.4.22</a></h3> <p class="detail">1. 在原来点餐页面作为首页基础上,增加了新首页,整体UI更简洁; 2. 读取用户详情接口逻辑优化,统一在 app.js 里读用户信息; 3. 支付除了微信支...</p> </li> <li> <h3><span class='date'>04/16</span><a href="https://www.oschina.net/news/344879/zulip-server-10-2-released" target="_blank">Zulip Server 10.2 发布,开源团队协作工具</a></h3> <p class="detail">Zulip 是一个开源团队协作工具,一款专为实时和异步对话而设计的现代团队聊天应用程序,支持快速搜索、拖放文件上传、图像预览、组私人消息、可听通...</p> </li> <li> <h3><span class='date'>04/14</span><a href="https://www.oschina.net/news/344419/google-lays-hundreds-employees-android-pixel-group" target="_blank">谷歌裁撤数百名 Android 及 Pixel 部门员工</a></h3> <p class="detail">据 The Information 援引知情人士消息报道,谷歌已在「平台与设备」部门展开新一轮裁员,涉及数百名员工。 今年 1 月,谷歌已为受影响员工提供自愿...</p> </li> <li> <h3><span class='date'>04/14</span><a href="https://www.oschina.net/news/344383/smart-admin-3-19-released" target="_blank">:fire::fire::fire:高质量 SmartAdmin 重磅更新 V3.19</a></h3> <p class="detail">SmartAdmin「高质量代码、简洁、高效、安全」的快速开发平台   v3.19 版本 重磅更新 发布,更新如下: 【新增】启动时邮箱测试连接关闭 【新增】...</p> </li> <li> <h3><span class='date'>04/10</span><a href="https://www.oschina.net/news/343847/smart-admin-3-18-released" target="_blank">:fire::fire::fire:高质量 SmartAdmin 重磅更新 V3.18</a></h3> <p class="detail">SmartAdmin「高质量代码、简洁、高效、安全」的快速开发平台   v3.17 版本 重磅更新 发布,更新如下: 【新增】新增消息管理 【新增】完善企业d...</p> </li> </ul> </div> </div> </div> <div class="adr_related clearfix"> <div class="block adr_col2"> <div class="title"> <h4>最新 Android 提问</h4> <a class="more" href="/android/1/android?type=2&sort=time">更多提问&raquo;</a> </div> <div class="block-content"> <ul> <li> <span class='stat'>0回/107阅</span> <span class="title"><a href="https://www.oschina.net/question/1184604_8595465" target="_blank" title="求助:使用zxing 生成gs1-dm码的问题">求助:使用zxing 生成gs1-dm码的问题...</a></span> </li> <li> <span class='stat'>2回/1654阅</span> <span class="title"><a href="https://www.oschina.net/question/4102619_2316291" target="_blank" title="new OkHttpClient(); 这一步就报错 kotlin.TypeCastException?OKhttp3怎么解决">new OkHttpClient(); 这一步就报错 kotl...</a></span> </li> <li> <span class='stat'>0回/1511阅</span> <span class="title"><a href="https://www.oschina.net/question/1758463_2189889" target="_blank" title="Android Itext 对pdf签名">Android Itext 对pdf签名</a></span> </li> <li> <span class='stat'>4回/4903阅</span> <span class="title"><a href="https://www.oschina.net/question/1986738_226645" target="_blank" title=" U3D + KBE Demo环境搭建过程详细记录 "> U3D + KBE Demo环境搭建过程详细记录 ...</a></span> </li> <li> <span class='stat'>3回/3699阅</span> <span class="title"><a href="https://www.oschina.net/question/2317365_225590" target="_blank" title="怎么将获取的MJPEG编码视频流保存为avi或别的视频格式文件">怎么将获取的MJPEG编码视频流保存为avi...</a></span> </li> <li> <span class='stat'>3回/6773阅</span> <span class="title"><a href="https://www.oschina.net/question/873551_212243" target="_blank" title="Android局域网通信,socket连接时总是报错 java.net.SocketException: getsockopt failed: EBADF (Bad file number)">Android局域网通信,socket连接时总是报...</a></span> </li> <li> <span class='stat'>3回/9657阅</span> <span class="title"><a href="https://www.oschina.net/question/228080_158746" target="_blank" title="AlertDialog.Builder方法中的setPositiveButton不能用,有无替代?">AlertDialog.Builder方法中的setPositi...</a></span> </li> <li> <span class='stat'>5回/18k阅</span> <span class="title"><a href="https://www.oschina.net/question/105836_85825" target="_blank" title="afinal 上传文件服务端接受参数为空">afinal 上传文件服务端接受参数为空</a></span> </li> <li> <span class='stat'>1回/359阅</span> <span class="title"><a href="https://www.oschina.net/question/615071_62575" target="_blank" title="Android手机从服务器上下载软件到指定地方">Android手机从服务器上下载软件到指定地...</a></span> </li> <li> <span class='stat'>3回/1199阅</span> <span class="title"><a href="https://www.oschina.net/question/229726_37720" target="_blank" title="startActivity启动其他apk的avtivity后,如何回传给原来的apk一个标志?">startActivity启动其他apk的avtivity后,...</a></span> </li> <li> <span class='stat'>6回/20k阅</span> <span class="title"><a href="https://www.oschina.net/question/98281_13764" target="_blank" title="为什么打不开http://developer.android.com/, 而http://www.a">为什么打不开http://developer.android....</a></span> </li> </ul> </div> </div> <div class="block adr_col2 last"> <div class="title"> <h4>最新 Android 分享</h4> <a class="more" href="/android/1/android?type=2&sort=time">更多分享&raquo;</a> </div> <div class="block-content"> <ul> <li> <span class='stat'>0回/1176阅</span> <span class="title"> <a href="https://www.oschina.net/question/737747_2194833" target="_blank" title="为什么说基于TCP的移动端IM仍然需要心跳保活?">为什么说基于TCP的移动端IM仍然需要心跳...</a> </span> </li> <li> <span class='stat'>3回/5845阅</span> <span class="title"> <a href="https://www.oschina.net/question/2412616_2184985" target="_blank" title=" 基于Android Studio的内存泄漏检测与解决全攻略"> 基于Android Studio的内存泄漏检测与解...</a> </span> </li> <li> <span class='stat'>0回/2514阅</span> <span class="title"> <a href="https://www.oschina.net/question/2391698_239408" target="_blank" title="新ROM发布,HPH tvbox ubuntu双系统 ,Firefly变成完全的电视盒子">新ROM发布,HPH tvbox ubuntu双系统 ,F...</a> </span> </li> <li> <span class='stat'>21回/41k阅</span> <span class="title"> <a href="https://www.oschina.net/question/28_29088" target="_blank" title="Android 框架简介">Android 框架简介</a> </span> </li> </ul> </div> </div> <div class="block adr_col2"> <div class="title"> <h4>Android 代码分享</h4> <a class="more" href="/android/1/android?type=5&sort=time">更多代码分享&raquo;</a> </div> <div class="block-content"> <ul> <li> <span class='stat'>3回/7178阅</span> <span class="title"> <a href="https://www.oschina.net/code/snippet_2298483_45105" target="_blank" title="含EditText的Activity隐藏软键盘">含EditText的Activity隐藏软键盘...</a> </span> </li> <li> <span class='stat'>12回/14k阅</span> <span class="title"> <a href="https://www.oschina.net/code/snippet_1031952_25117" target="_blank" title="在android中使用achartengine来绘制各种图表">在android中使用achartengine来绘制各种...</a> </span> </li> <li> <span class='stat'>22回/14k阅</span> <span class="title"> <a href="https://www.oschina.net/code/snippet_781404_22344" target="_blank" title="android中的ListView与ScrollView冲突保留ScrollView滚动">android中的ListView与ScrollView冲突保...</a> </span> </li> <li> <span class='stat'>34回/25k阅</span> <span class="title"> <a href="https://www.oschina.net/code/snippet_227618_19441" target="_blank" title="实现IOS圆角风格的列表ListView">实现IOS圆角风格的列表ListView</a> </span> </li> <li> <span class='stat'>176回/33k阅</span> <span class="title"> <a href="https://www.oschina.net/code/snippet_729469_19177" target="_blank" title="android吹一吹功能的实现">android吹一吹功能的实现</a> </span> </li> <li> <span class='stat'>18回/20k阅</span> <span class="title"> <a href="https://www.oschina.net/code/snippet_729412_17473" target="_blank" title="微博客户端">微博客户端</a> </span> </li> <li> <span class='stat'>79回/96k阅</span> <span class="title"> <a href="https://www.oschina.net/code/snippet_576880_17217" target="_blank" title="我的第一个Android程序-计算器">我的第一个Android程序-计算器</a> </span> </li> <li> <span class='stat'>23回/36k阅</span> <span class="title"> <a href="https://www.oschina.net/code/snippet_107931_17160" target="_blank" title="android平台手电筒开发源代码">android平台手电筒开发源代码</a> </span> </li> <li> <span class='stat'>12回/1106阅</span> <span class="title"> <a href="https://www.oschina.net/code/snippet_861692_17136" target="_blank" title="Table——基于SharedPreferences的“封装”数据表。 ">Table——基于SharedPreferences的“封装...</a> </span> </li> <li> <span class='stat'>1回/6184阅</span> <span class="title"> <a href="https://www.oschina.net/code/snippet_589124_16789" target="_blank" title="Android AIDL 实现应用间数据交换(包括Parcelable数据)">Android AIDL 实现应用间数据交换(包括P...</a> </span> </li> </ul> </div> </div> <div class="block adr_col2 last"> <div class="title"> <h4>最新 Android 博客</h4> <a class="more" href="/android/1/android?type=3&sort=time">更多博客&raquo;</a> </div> <div class="block-content"> <ul> <li> <span class='stat'>11回/5213阅</span> <span class="title"> <a href="https://my.oschina.net/yaowen424/blog/532598" target="_blank" title="用Android的imageVew显示网络和本地的图片">用Android的imageVew显示网络和本地的图...</a> </span> </li> <li> <span class='stat'>1回/6474阅</span> <span class="title"> <a href="https://my.oschina.net/reborn87/blog/508396" target="_blank" title="关于Fragment的fragmentTransaction.add()无法添加成功问题">关于Fragment的fragmentTransaction.add...</a> </span> </li> <li> <span class='stat'>7回/7309阅</span> <span class="title"> <a href="https://my.oschina.net/hxbbd/blog/498829" target="_blank" title="Android切换主题(换肤),支持在线直接替换整个布局">Android切换主题(换肤),支持在线直接替...</a> </span> </li> <li> <span class='stat'>1回/4728阅</span> <span class="title"> <a href="https://my.oschina.net/u/2404790/blog/497655" target="_blank" title="Android软键盘遮挡的四种解决方案">Android软键盘遮挡的四种解决方案</a> </span> </li> <li> <span class='stat'>0回/1371阅</span> <span class="title"> <a href="https://my.oschina.net/u/2404790/blog/497653" target="_blank" title="android软键盘的显示后隐藏">android软键盘的显示后隐藏</a> </span> </li> <li> <span class='stat'>1回/3448阅</span> <span class="title"> <a href="https://my.oschina.net/u/2277819/blog/491208" target="_blank" title="两个fragment 同时跳转另外一个fargment ,返回对应的fragment 的解决方法">两个fragment 同时跳转另外一个fargmen...</a> </span> </li> <li> <span class='stat'>7回/3606阅</span> <span class="title"> <a href="https://my.oschina.net/sikilao/blog/488331" target="_blank" title="Android蓝牙聊天程序的扩展开发(基于Google Sample,类QQ设计)">Android蓝牙聊天程序的扩展开发(基于G...</a> </span> </li> <li> <span class='stat'>1回/5205阅</span> <span class="title"> <a href="https://my.oschina.net/u/1995545/blog/485146" target="_blank" title="动态显示和隐藏状态栏(包括底部虚拟按键)">动态显示和隐藏状态栏(包括底部虚拟按键)</a> </span> </li> <li> <span class='stat'>40回/45k阅</span> <span class="title"> <a href="https://my.oschina.net/u/2323218/blog/393372" target="_blank" title="android apk 防止反编译技术第一篇-加壳技术">android apk 防止反编译技术第一篇-加壳...</a> </span> </li> <li> <span class='stat'>1回/4803阅</span> <span class="title"> <a href="https://my.oschina.net/vvcumt/blog/388185" target="_blank" title="Android 转场动画 windowAnimation和ActivityAnimation的区别">Android 转场动画 windowAnimation和Act...</a> </span> </li> </ul> </div> </div> </div> </div> <div class="os_adr_right"> <div class="adr_interactive clearfix"> <a href="/question/ask?catalog=1" class="question"><em>找不到我想要的答案?</em><strong>我要提问</strong></a> <a href="/question/ask?catalog=2" class="question Share"><em>让更多人分享你的经验?</em><strong>我要分享</strong></a> <a href="https://job.oschina.net/search/android" class="question" style="width:300px;"><em>渴望一份充分体现自己价值的工作?</em><strong>我要找工作</strong></a> </div> <div class="block adr_soft"> <div class="title"> <ul><li class="on" id="PARm0" onmouseover="PARMenu(0);">Android 软件推荐 </li><li class="out" id="PARm1" onmouseover="PARMenu(1);">Android 推荐文章 </li></ul> </div> <div class="block-content clearfix"> <dl class="recommend_blcok"> <dd class="recommend0" id="recommend0"> <ol> <li class="clearfix first"> <p class="pic"><a href="https://www.oschina.net/p/eclipse+adt"><span> <img src="/img/logo/adt.gif?t=1670143215000" alt="Eclipse ADT logo" title="Eclipse ADT logo"/> </span></a></p> <div class="info"> <h6><a href="https://www.oschina.net/p/eclipse+adt">Eclipse ADT</a></h6> <p class="detail">Eclipse ADT 是 Eclipse 平台下用来开发 Android 应用程序的插件。 在线安装地址:https://d...</p> </div> </li> <li class="clearfix"> <p class="pic"><a href="https://www.oschina.net/p/rezerwar"><span> <img src="/img/logo/default.png?t=1670143215000"/> </span></a></p> <div class="info"> <h6><a href="https://www.oschina.net/p/rezerwar">rezerwar</a></h6> <p class="detail">益智游戏</p> </div> </li> <li class="clearfix"> <p class="pic"><a href="https://www.oschina.net/p/droiddraw"><span> <img src="/img/logo/droiddraw.gif?t=1670143215000" alt="DroidDraw logo" title="DroidDraw logo"/> </span></a></p> <div class="info"> <h6><a href="https://www.oschina.net/p/droiddraw">DroidDraw</a></h6> <p class="detail">Android 组件界面设计工具</p> </div> </li> <li class="clearfix"> <p class="pic"><a href="https://www.oschina.net/p/necessitas"><span> <img src="/img/logo/necessitas.gif?t=1670143215000" alt="Necessitas logo" title="Necessitas logo"/> </span></a></p> <div class="info"> <h6><a href="https://www.oschina.net/p/necessitas">Necessitas</a></h6> <p class="detail">Android平台的QT实现</p> </div> </li> <li class="clearfix"> <p class="pic"><a href="https://www.oschina.net/p/phonegap"><span> <img src="/img/logo/phonegap.gif?t=1670143215000" alt="PhoneGap logo" title="PhoneGap logo"/> </span></a></p> <div class="info"> <h6><a href="https://www.oschina.net/p/phonegap">PhoneGap</a></h6> <p class="detail">手机 Web 应用开发平台</p> </div> </li> </ol> <a href="/project/tag/189/android?sort=time" class="more">更多Android相关软件&raquo;</a> </dd> <dd class="recommen1" style="display:none" id="recommend1"> <ol> <li class="clearfix first"> <a href="http://my.oschina.net/plumsoft/blog/29283" target="_blank">Eclipse3.7中搭建Android开发环境</a> <span class="Author">双子座</span> </li> <li class="clearfix first"> <a href="http://www.oschina.net/question/12_1515" target="_blank">编写 Android 触摸屏手势识别程序</a><span class="Author">红薯</span> </li> <li class="clearfix first"> <a href="http://www.oschina.net/question/12_10624" target="_blank"> Android 开发中使用 SQLite 数据库</a> <span class="Author">红薯</span> </li> <li class="clearfix first"> <a href="http://www.oschina.net/code/snippet_163910_6069" target="_blank">Android拍照、录像、录音代码范例</a> <span class="Author">无鸯</span> </li> <li class="clearfix first"> <a href="http://www.oschina.net/question/163910_28671" target="_blank">剖析 SurfaceView, Callback, SurfaceHolder!!</a> <span class="Author">无鸯</span> </li> <li class="clearfix first"> <a href="http://www.oschina.net/question/12_679" target="_blank">Android 平台上编程实现 GPS 定位</a> <span class="Author">红薯</span> </li> <li class="clearfix first"> <a href="http://www.oschina.net/question/12_1593" target="_blank">深入探讨 Android 传感器</a> <span class="Author">红薯</span> </li> <li class="clearfix first"> <a href="http://www.oschina.net/question/4873_24644" target="_blank">Android 线程模型和 AsyncTask</a> <span class="Author">华宰</span> </li> <li class="clearfix first"> <a href="http://www.oschina.net/question/195301_31710" target="_blank">史上最强NDK入门项目实战</a> <span class="Author">阿酷</span> </li> <li class="clearfix first"> <a href="http://www.oschina.net/question/54100_30501"> 使用 Ant 打包 Android 应用</a> <span class="Author">鉴客</span> </li> </ol></dd> </dl> <script type="text/javascript"> function GetObj(objName){ if(document.getElementById){ return eval('document.getElementById("' + objName + '")'); }else if(document.layers){ return eval("document.layers['" + objName +"']"); }else{ return eval('document.all.' + objName); } } function PARMenu(index,flag){ for(var i=0;i<2;i++){/* max-4 */ if(GetObj("recommend"+i)&&GetObj("PARm"+i)){ GetObj("recommend"+i).style.display = 'none'; GetObj("PARm"+i).className = "out"; } } if(GetObj("recommend"+index)&&GetObj("PARm"+index)){ GetObj("recommend"+index).style.display = 'block'; GetObj("PARm"+index).className = "on"; } } </script> </div> </div> <div class="block adr_expert"> <div class="title"> <h4>Android专家推荐</h4> </div> <div class="block-content clearfix"> <ol> <li class="clearfix"> <p class="pic"><a href="https://my.oschina.net/innost" target="_blank"><span><img src="https://static.oschina.net/uploads/user/91/183763_50.jpg?t=1367585288000" align="absmiddle" alt="邓凡平" title="邓凡平" class="SmallPortrait" user="183763"/></span></a></p> <div class="info"> <h6 class="title"><a href="https://my.oschina.net/innost" target="_blank">邓凡平</a></h6> <span class="detail">Hello, My name is 邓凡平. My ...</span> </div> </li> <li class="clearfix"> <p class="pic"><a href="https://my.oschina.net/zengsai" target="_blank"><span><img src="https://oscimg.oschina.net/oscnet/up-ddbb5a3af15d3679ab1df7e4c84fb6f0.jpg!/both/50x50" align="absmiddle" alt="曾赛" title="曾赛" class="SmallPortrait" user="10896"/></span></a></p> <div class="info"> <h6 class="title"><a href="https://my.oschina.net/zengsai" target="_blank">曾赛</a></h6> <span class="detail">爱这个社区,就让它:火起来!</span> </div> </li> <li class="clearfix"> <p class="pic"><a href="https://my.oschina.net/miaozl" target="_blank"><span><img src="https://static.oschina.net/uploads/user/105/211144_50.jpg" align="absmiddle" alt="苗忠良" title="苗忠良" class="SmallPortrait" user="211144"/></span></a></p> <div class="info"> <h6 class="title"><a href="https://my.oschina.net/miaozl" target="_blank">苗忠良</a></h6> <span class="detail">从事在线教育创业,拥有20余项发...</span> </div> </li> <li class="clearfix"> <p class="pic"><a href="https://my.oschina.net/shyluo" target="_blank"><span><img src="https://static.oschina.net/uploads/user/462/924490_50.jpeg?t=1483956750000" align="absmiddle" alt="罗升阳" title="罗升阳" class="SmallPortrait" user="924490"/></span></a></p> <div class="info"> <h6 class="title"><a href="https://my.oschina.net/shyluo" target="_blank">罗升阳</a></h6> <span class="detail">《Android系统源代码情景分析》...</span> </div> </li> <li class="clearfix"> <p class="pic"><a href="https://my.oschina.net/liux" target="_blank"><span><img src="https://static.oschina.net/uploads/user/78/157182_50.jpg" align="absmiddle" alt="迷途d书童" title="迷途d书童" class="SmallPortrait" user="157182"/></span></a></p> <div class="info"> <h6 class="title"><a href="https://my.oschina.net/liux" target="_blank">迷途d书童</a></h6> <span class="detail">每天都分享一点</span> </div> </li> </ol> </div> </div> <div class="block adr_jobs"> <div class="title"> <h4>Android 招聘信息</h4><a class="more" href="https://job.oschina.net/search/android">更多招聘&raquo;</a> </div> <div class="block-content"> <ul> </ul> </div> </div> </div> <div id="adr_books" class="block slide-content"> <div class="title"> <h4>Android 图书总汇</h4><a class="more" href="/android/books">更多图书&raquo;</a> </div> <div class="block-content"> <div class="warp"> <ul class="JQ-slide-content clearfix"> <li> <dl> <dt class="pic"><a href="https://www.oschina.net/android/book/1115"><img src="https://static.oschina.net/uploads/img/201305/21070737_3wy9.jpg" alt="Java编程思想(第4版)(第9届Jolt生产效率大奖、第13届Jolt震撼大奖获奖图书)(经典图书最新版本)"/></a></dt> <dt class="name"><a href="https://www.oschina.net/android/book/1115">Java编程思想(第4版)(第9届Jolt生产效率大奖、第13届Jolt震撼大奖获奖图书)(经典图书最新版本)</a></dt> <dd class="detail">机械工业出版社</dd> </dl> </li> <li> <dl> <dt class="pic"><a href="https://www.oschina.net/android/book/1114"><img src="https://static.oschina.net/uploads/img/201305/21070737_X4SS.jpg" alt="Java编程思想(英文影印版.第4版) (全球程序员必备图书《Java编程思想》的最新版本)"/></a></dt> <dt class="name"><a href="https://www.oschina.net/android/book/1114">Java编程思想(英文影印版.第4版) (全球程序员必备图书《Java编程思想》的最新版本)</a></dt> <dd class="detail">机械工业出版社</dd> </dl> </li> <li> <dl> <dt class="pic"><a href="https://www.oschina.net/android/book/1113"><img src="https://static.oschina.net/uploads/img/201305/21070737_fAyO.jpg" alt="Java 5 游戏编程"/></a></dt> <dt class="name"><a href="https://www.oschina.net/android/book/1113">Java 5 游戏编程</a></dt> <dd class="detail">机械工业出版社</dd> </dl> </li> <li> <dl> <dt class="pic"><a href="https://www.oschina.net/android/book/1112"><img src="https://static.oschina.net/uploads/img/201305/21070737_2gyz.jpg" alt="Java面向对象编程(蓝皮)"/></a></dt> <dt class="name"><a href="https://www.oschina.net/android/book/1112">Java面向对象编程(蓝皮)</a></dt> <dd class="detail">电子工业出版社</dd> </dl> </li> <li> <dl> <dt class="pic"><a href="https://www.oschina.net/android/book/1111"><img src="https://static.oschina.net/uploads/img/201305/21070737_QR49.jpg" alt="数据结构与算法:Java语言版(第2版)【按需印刷】"/></a></dt> <dt class="name"><a href="https://www.oschina.net/android/book/1111">数据结构与算法:Java语言版(第2版)【按需印刷】</a></dt> <dd class="detail">机械工业出版社</dd> </dl> </li> <li> <dl> <dt class="pic"><a href="https://www.oschina.net/android/book/1110"><img src="https://static.oschina.net/uploads/img/201305/21070423_0v0a.jpg" alt="Linux编程白皮书【按需印刷】"/></a></dt> <dt class="name"><a href="https://www.oschina.net/android/book/1110">Linux编程白皮书【按需印刷】</a></dt> <dd class="detail">机械工业出版社</dd> </dl> </li> </ul> </div> </div> </div> </div> <div class='clear'></div> </div> </div> <div class="sc sc-tool-backtop hide"> <span class="icon ic-back-top box vertical"> <svg style="margin: auto;" width="19px" height="19px" viewBox="0 0 19 19" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink"> <!-- Generator: Sketch 3.8.3 (29802) - http://www.bohemiancoding.com/sketch --> <title>top</title> <desc>Created with Sketch.</desc> <defs></defs> <g id="Page-1" stroke="none" stroke-width="1" fill="none" fill-rule="evenodd"> <g id="回到顶部" transform="translate(-1342.000000, -1007.000000)" fill="#9C9C9C"> <g id="top" transform="translate(1342.000000, 1007.000000)"> <g id="Group" transform="translate(0.034817, 0.034817)"> <path d="M9.31638754,3.41230862 L0.658755149,11.7803907 L5.57221681,11.7803907 L5.52932916,18.6327751 L13.0821194,18.6327751 L13.0821194,11.7589149 L18.1243933,11.6945301 L9.31638754,3.41230862 L9.31638754,3.41230862 Z M0,4.4408921e-16 L18.6327751,4.4408921e-16 L18.6327751,2.74709153 L0,2.74709153 L0,4.4408921e-16 L0,4.4408921e-16 L0,4.4408921e-16 Z" id="Shape"></path> </g> </g> </g> </g> </svg> </span> <span class="sc-tool-name">顶部</span> </div> </section> <footer class="ant-layout-footer footer"> <div class="footer"> <div class="container"> <div class="logo"> <div class="box-center"> <img src="/img/images/LOGO.svg" alt="" style="width: 262px; height: 91px;" /> </div> </div> <div class="title"> <div class="overline"></div> <h4>OSCHINA社区</h4> <div class="list"> <a class="item" href="https://www.oschina.net/home/aboutosc" target="_blank"> 关于我们 </a> <a class="item" href="https://www.oschina.net/home/aboutosc" target="_blank"> 帮助中心 </a> <a class="item" href="https://www.oschina.net/home/aboutosc#partners" target="_blank"> 商务合作 </a> <a class="item" href="https://www.oschina.net/openapi" target="_blank"> Open API </a> </div> </div> <div class="title br"> <div class="overline"></div> <h4>在线工具</h4> <div class="list"> <a class="item" href="https://copycat.gitee.com/?utm_source=oschina&amp;utm_medium=link-bottom&amp;utm_campaign=copycat" target="_blank"> CopyCat-代码克隆检测 </a> <a class="item" href="https://tool.oschina.net" target="_blank"> 实用在线工具 </a> <a class="item">开源/AI软件库</a> <a class="item">Awesome 软件</a> </div> </div> <div class="title br"> <div class="overline"></div> <h4>攻略</h4> <div class="list"> <a class="item">造物发布</a> <a class="item">新闻投递</a> <a class="item">软件投递</a> <a class="item" href="https://www.oschina.net/question/2918182_2319406" target="_blank"> 项目运营 </a> </div> </div> <div class="title"> <h4>OSC开源社区APP</h4> <div class="scan-qr-code"> <div class="box"> <div class="ant-image css-quj94o"> <img alt="微信公众号" width="90" class="ant-image-img" src="/img/images/wechat_qrcode.webp"> </div> <span>Android / iOS</span> </div> </div> </div> </div> <div class="miit"> <div class="left"> <span>©OSCHINA(OSChina.NET)</span> <span>工信部</span> <span>开源软件推进联盟</span> <span>指定官方社区</span> <span>社区规范</span> </div> <a class="right"> <span><span class="right-none">北京奥思研工智能科技有限公司版权所有</span> <a href="https://beian.miit.gov.cn/" style="color:#000000;margin-left: 10px;font-weight: 600" target="_blank">京ICP备2025119063号</a></span> </a> </div> </div> </footer> <script type="text/javascript"> function escapeHtml(unsafe) { // 检查 unsafe 是否为 null 或 undefined if (unsafe == null) { return ''; } // 确保转换为字符串 unsafe = String(unsafe); return unsafe .replace(/&/g, "&amp;") .replace(/</g, "&lt;") .replace(/>/g, "&gt;") .replace(/"/g, "&quot;") .replace(/'/g, "&#039;"); } $('.media-matrix').hover(function(){ $('.media-matrix-mask').show() },function(){ $('.media-matrix-mask').hide() }) $('.osc-app').hover(function(){ $('.osc-app-mask').show() },function(){ $('.osc-app-mask').hide() }) $('.oper-user').hover(function(){ $('.oper-user-box').show() },function(){ $('.oper-user-box').hide() }) $(document).on('click','#userMess',function(e){ $("#user_box").show(); }) $(document).on('click','.ant-drawer-mask',function(e){ $("#user_box").hide(); }) $(document).on('click','.nav-bar-h5',function(e){ $("#navBarH5Menu").show(); e.stopPropagation(); }) $(document).on('click', function(e){ if($("#navBarH5Menu").is(":visible")){ $("#navBarH5Menu").hide(); } if($("#user_popover").is(":visible")){ $("#user_popover").hide(); } }) $(document).on('click','#user_popover .ant-tabs-tab',function(e){ if( $(this).hasClass('ant-tabs-tab-active')){ return false; }else{ $(this).siblings('.ant-tabs-tab').removeClass('ant-tabs-tab-active') $(this).addClass('ant-tabs-tab-active') let textValue = $(this).find('span').text(); $('.ant_tabs_content').hide(); if(textValue == '评论'){ getHandleComment(); $('#user_comment').show(); }else if(textValue == '点赞'){ getHandleLke(); $('#user_like').show(); }else if(textValue == '私信'){ //findAllMsgCount(); $('#user_content').show(); }else if(textValue == '@我'){ getMessageMe(); $('#user_my').show(); } } e.stopPropagation(); }) $(document).on('click','#message',function(e){ getHandleComment(); $("#user_popover").show(); e.stopPropagation(); }) $(function(){ getHnadleTopMenu(); getHandleMenu(); }); window.onload = function(){ getHandleToken(); getPrivateMsg(); } //获取token function getHandleToken(){ let time_data = Date.parse(new Date())/1000; let url_formal = "https://www.oschina.net/ApiSso/mobileToken" let queryParem = {timestamp:time_data}; $.ajax({ url: url_formal, method: "get", dataType: "json", data: queryParem, success: function (res) { } }) }; //获取web_v2_header_top菜单接口 function getHnadleTopMenu(){ let url_formal = "https://www.oschina.net/action/ajax/get_tool_ad?ident=web_v2_header_top" $.ajax({ url: url_formal, method: "get", dataType: "json", success: function (result) { let header_html = JSON.parse(result.html); let nav_BarTabs = header_html.navBarTabs; let nav_mediaMatrix = header_html.mediaMatrix; let nav_app = header_html.app; let nav_devOps = header_html.devOps; let html_navBarTabs = ''; let html_mediaMatrix = ''; let html_app = ''; let html_devOps = ''; //头部navBarTabs导航 for(let i=0; i<nav_BarTabs.length;i++){ if(nav_BarTabs[i].target){ html_navBarTabs += '<a href="'+nav_BarTabs[i].href+'" class="left-item" target="'+nav_BarTabs[i].target+'" style="'+nav_BarTabs[i].style+'">'+nav_BarTabs[i].text+'</a>' }else{ html_navBarTabs += '<a href="'+nav_BarTabs[i].href+'" class="left-item" target="_blank" style="'+nav_BarTabs[i].style+'">'+nav_BarTabs[i].text+'</a>' } } $('#nav_top_BarTabs').html(html_navBarTabs); //DevOps研发效能 for(let i=0; i<nav_devOps.length; i++){ html_devOps += '<a class="dev-ops-item" href="'+nav_devOps[i].href+'" target="_blank">'; html_devOps += ' <div class="dev-ops-img">'; html_devOps += '<img src="'+nav_devOps[i].imgUrl+'" alt="'+nav_devOps[i].text+'" />'; html_devOps += '</div>'; html_devOps += '<div class="dev-ops-title-des">'; html_devOps += '<div class="dev-ops-title">'+nav_devOps[i].text+'</div>'; html_devOps += '<div class="dev-ops-des">'+nav_devOps[i].description+'</div>'; html_devOps += '</div>'; html_devOps += '</a>'; } $('#devops_box').html(html_devOps); //头部媒体矩阵 for(let i=0; i<nav_mediaMatrix.length; i++){ html_mediaMatrix += '<div class="media-matrix-item">'; html_mediaMatrix += '<div class="item-img">'; html_mediaMatrix += '<img src="'+nav_mediaMatrix[i].imgUrl+'" alt="'+nav_mediaMatrix[i].title+'">'; html_mediaMatrix += '</div>'; html_mediaMatrix += '<div class="item-title">'+nav_mediaMatrix[i].title+'</div>'; html_mediaMatrix += '<div class="item-description">'+nav_mediaMatrix[i].description+'</div>'; html_mediaMatrix += '</div>'; } $('#media-box-mask').html(html_mediaMatrix); //头部开源中国APP html_app += '<div class="app-img">'; html_app += '开源中国社区APP,探索开源与AI的边界'; html_app += '</div>'; for(let i=0; i<nav_app.qrCode.length; i++){ html_app += '<div class="media-matrix-item">'; html_app += '<div class="item-img">'; html_app += '<img src="'+nav_app.qrCode[i].imgUrl+'" alt="'+nav_app.qrCode[i].title+'">'; html_app += '</div>'; html_app += '<div class="item-description">'+nav_app.qrCode[i].title+'</div>'; html_app += '</div>'; } $('#osc-app-box').html(html_app); } }); } //获取web_v2_header_bottom菜单接口 function getHandleMenu(){ let url_formal = "https://www.oschina.net/action/ajax/get_tool_ad?ident=web_v2_header_bottom" let html_menu_h5=""; $.ajax({ url: url_formal, method: "get", dataType: "json", success: function (result) { let html_menu=""; let header_menu = JSON.parse(result.html); let menu_html = header_menu.navBarTabs for(let i=0; i< menu_html.length; i++){ if(menu_html[i].showHotIcon){ html_menu += '<a href="'+menu_html[i].href+'" class="nav-bar-tag" target="'+menu_html[i].target+'" style="'+menu_html[i].style+'">'+menu_html[i].text+'🔥</a>' html_menu_h5 += '<div class="menu_h5_item"><a href="'+menu_html[i].href+'" class="nav-bar-tag" target="'+menu_html[i].target+'" style="'+menu_html[i].style+'">'+menu_html[i].text+'🔥</a></div>' }else{ html_menu += '<a href="'+menu_html[i].href+'" class="nav-bar-tag" target="'+menu_html[i].target+'" style="'+menu_html[i].style+'">'+menu_html[i].text+'</a>' html_menu_h5 += '<div class="menu_h5_item"><a href="'+menu_html[i].href+'" class="nav-bar-tag" target="'+menu_html[i].target+'" style="'+menu_html[i].style+'">'+menu_html[i].text+'</a></div>' } } $("#nav-bar-menu").html(html_menu); $("#navBarH5Menu .nav-bar-h5-item").html(html_menu_h5); } }); } //退出登录接口 function getHandleLogout(){ let url_formal = "https://www.oschina.net/user/logout" let user_code = {"session":""} $.ajax({ url: url_formal, method: "POST", dataType: "json", data: user_code, success: function (result) { $("#user_box").hide(); } }); } //拼接header头像连接赋值 function getAvatarUrl(){ let user_avatar = "$g_user.LargePortrait()"; let user_url; if(user_avatar){ if(user_avatar.indexOf("up")!== -1){ let url_formal = "https://www.oschina.net/oscnet/" user_url = url_formal + "$g_user.LargePortrait()" }else{ let url_formal = "https://www.oschina.net/uploads/user/" user_url = url_formal + "$g_user.LargePortrait()" } }else{ if("https://www.oschina.net/" == "http://www.oschina.com/"){ user_url = "http://www.oschina.com/new-osc/img/portrait.gif" }else if("https://www.oschina.net/" == "http://www.oschina.osc/"){ user_url = "http://www.oschina.osc/new-osc/img/portrait.gif" }else{ user_url = "https://www.oschina.net/new-osc/img/portrait.gif" } } let user_name = "${g_user.name}" // $("#userMess_avatarLogo").html('<img src="'+user_url+'" width="34" height="34" alt="'+user_name+'" title="'+user_name+'">') // $("#user_avatarLogo").html('<img src="'+user_url+'" width="40" height="40" alt="'+user_name+'" title="'+user_name+'">') } function getImgAvatarLoad(){ let user_name = "${g_user.name}" $("#userMess_avatarLogo img").on("load",function(){ }).on('error', function(){ let user_url; if("https://www.oschina.net/" == "http://www.oschina.com/"){ user_url = "http://www.oschina.com/new-osc/img/portrait.gif" }else if("https://www.oschina.net/" == "http://www.oschina.osc/"){ user_url = "http://www.oschina.osc/new-osc/img/portrait.gif" }else{ user_url = "https://www.oschina.net/new-osc/img/portrait.gif" } $("#userMess_avatarLogo").html('<img src="'+user_url+'" width="34" height="34" alt="'+user_name+'" title="'+user_name+'">') $("#user_avatarLogo").html('<img src="'+user_url+'" width="40" height="40" alt="'+user_name+'" title="'+user_name+'">') }) } //获取私信数量 function getPrivateMsg(){ let url_formal; if("https://www.oschina.net/" == "http://www.oschina.com/"){ url_formal = "http://apiv1.oschina.com/oschinapi/message/remind/all/count" url_user_id=" http://my.oschina.com/u_beta/" }else if("https://www.oschina.net/" == "http://www.oschina.osc/"){ url_formal = "http://apiv1.oschina.osc/oschinapi/message/remind/all/count" url_user_id=" http://my.oschina.osc/u_beta/" }else{ url_formal = "https://apiv1.oschina.net/oschinapi/message/remind/all/count" url_user_id=" https://my.oschina.net/u_beta/" } let user_id = ""; let user_code = ""; $.ajax({ url: url_formal, method: "post", dataType: "json", xhrFields: { withCredentials: true }, crossDomain: true, success: function (res) { if(res.code == '200'){ let messageTypeCount = getMessageCounts(res.result.messageTypes); if(messageTypeCount.allCount == 0){ $('#user_content').html("<div class='user_mess_nodata'></div>") }else{ $("#message .notice_count").html(messageTypeCount.allCount); $("#message .notice_count").show(); if(messageTypeCount.counts.mentionCount > 0){ $('#user_my_num').html(messageTypeCount.counts.mentionCount); $('#user_my_num').show(); } if(messageTypeCount.counts.commentCount > 0){ $('#user_comment_num').html(messageTypeCount.counts.commentCount); $('#user_comment_num').show(); } if(messageTypeCount.counts.likeCount > 0){ $('#user_like_num').html(messageTypeCount.counts.likeCount); $('#user_like_num').show(); } if(messageTypeCount.counts.privateMsgCount > 0){ let user_html = ''; user_html += "<div class='user_message'>有 <span>"+messageTypeCount.counts.privateMsgCount+"</span> 个用户私信了您!!</div>" user_html += "<div class='mess_btnbox'><a href='"+url_user_id+""+user_id+"?key=message' class='mess_btn_more'>查看更多</a></div>" $('#user_content').html(user_html) $('#user_content_num').html(messageTypeCount.counts.privateMsgCount); $('#user_content_num').show(); }else{ $('#user_content').html("<div class='user_mess_nodata'></div>") } } } } }) } function getMessageCounts(messageTypes) { const counts = { mentionCount: 0, commentCount: 0 }; let allCount = 0; messageTypes.forEach(item => { if (item.messageType === 2) { counts.likeCount = item.count; allCount += item.count; } else if (item.messageType === 8) { counts.commentCount = item.count; allCount += item.count; } else if (item.messageType === 1) { counts.atMeCount = item.count; allCount += item.count; } else if (item.messageType === 9) { counts.privateMsgCount = item.count; allCount += item.count; } }); return { counts, allCount }; } //@我 function getMessageMe(){ let url_formal; let url_user_formal; let url_user_id; let url_user_blog; if("https://www.oschina.net/" == "http://www.oschina.com/"){ url_formal = "http://apiv1.oschina.com/oschinapi/message/content/at" url_user_formal = "http://www.oschina.com/" url_user_id=" http://my.oschina.com/u_beta/" url_user_blog = "http://my.oschina.com/" }else if("https://www.oschina.net/" == "http://www.oschina.osc/"){ url_formal = "http://apiv1.oschina.osc/oschinapi/message/content/at" url_user_formal = "http://www.oschina.osc/" url_user_id=" http://my.oschina.osc/u_beta/" url_user_blog = "http://my.oschina.osc/" }else{ url_formal = "https://apiv1.oschina.net/oschinapi/message/content/at" url_user_formal = "https://www.oschina.net/" url_user_id=" https://my.oschina.net/u_beta/" url_user_blog = "http://my.oschina.net/" } let user_id = ""; let queryParem = {pageNum:1,pageSize:5} $.ajax({ url: url_formal, method: "post", dataType: "json", xhrFields: { withCredentials: true }, crossDomain: true, data:queryParem, success: function (res) { let html_me = ''; if(res.code == 200){ if(res.result.length > 0){ let json_array = res.result; for(let i=0; i<json_array.length; i++){ let url_comment; if(json_array[i].objType == 3){ url_comment = url_user_blog+"u/"+json_array[i].userVo.id+"/blog_beta/"+json_array[i].linkObjId }else if(json_array[i].objType == 18){ url_comment = url_user_blog+"u/"+json_array[i].userVo.id+"/blog_beta/"+json_array[i].linkObjId+"#comment" }else if(json_array[i].objType == 4){ if(json_array[i].ident){ url_comment = url_user_formal+"news_beta/"+json_array[i].linkObjId+'/'+json_array[i].ident }else{ url_comment = url_user_formal+"news_beta/"+json_array[i].linkObjId } }else if(json_array[i].objType == 16){ if(json_array[i].ident){ url_comment = url_user_formal+"news_beta/"+json_array[i].linkObjId+'/'+json_array[i].ident+"#comment" }else{ url_comment = url_user_formal+"news_beta/"+json_array[i].linkObjId+"#comment" } }else if(json_array[i].objType == 40){ url_comment = url_user_formal+"aiCreation/details/"+json_array[i].linkObjId }else if(json_array[i].objType == 100){ url_comment = url_user_formal+"oscTweet/"+json_array[i].linkObjId }else if(json_array[i].objType == 101){ url_comment = url_user_formal+"oscTweet/"+json_array[i].linkObjId }else{ console.warn("类型错误") } html_me += '<div class="message-item">'; if(json_array[i].state == 1){ html_me += '<div class="message-item-info">'; }else{ html_me += '<div class="message-item-info unread">'; } // Sanitize user input let safeUserName = escapeHtml(json_array[i].userVo.name); let safeContent = escapeHtml(json_array[i].content); html_me += '<a class="message-item-user" href="'+url_user_id+''+json_array[i].userVo.id+'" target="_blank"><span></span>'+safeUserName+'</a>'; html_me += ' &nbsp @我 &nbsp'; html_me += '<a class="message-item-content" href="'+url_comment+'" target="_blank">'+safeContent+'</a>'; html_me += '</div>'; html_me += '<div class="message-item-time">'+escapeHtml(json_array[i].createTime)+'</div>'; html_me += '</div>' } html_me += '<div class="mess_btnbox"><a href="'+url_user_id+''+user_id+'?key=tweet" class="mess_btn_more">查看更多</a></div>' $('#user_my').html(html_me) }else{ $('#user_my').html("<div class='user_mess_nodata'></div>") } }else{ console.log("出错了!!!") } } }) } //评论的消息 function getHandleComment(){ let url_formal; let url_user_formal; if("https://www.oschina.net/" == "http://www.oschina.com/"){ url_formal = "http://apiv1.oschina.com/oschinapi/message/content/comment" url_user_formal = "http://www.oschina.com/" url_user_id=" http://my.oschina.com/u_beta/" url_user_blog = "http://my.oschina.com/" }else if("https://www.oschina.net/" == "http://www.oschina.osc/"){ url_formal = "http://apiv1.oschina.osc/oschinapi/message/content/comment" url_user_formal = "http://www.oschina.osc/" url_user_id=" http://my.oschina.osc/u_beta/" url_user_blog = "http://my.oschina.osc/" }else{ url_formal = "https://apiv1.oschina.net/oschinapi/message/content/comment" url_user_formal = "https://www.oschina.net/" url_user_id=" https://my.oschina.net/u_beta/" url_user_blog = "http://my.oschina.net/" } let user_id = ""; let queryParem = {pageNum:1,pageSize:5} $.ajax({ url: url_formal, method: "post", dataType: "json", xhrFields: { withCredentials: true }, crossDomain: true, data:queryParem, success: function (res) { let html_comment = ''; if(res.code == 200){ if(res.result.length > 0){ let json_array = res.result; for(let i=0; i<json_array.length; i++){ let url_comment; if(json_array[i].objType == 3){ url_comment = url_user_blog+"u/"+json_array[i].userVo.id+"/blog_beta/"+json_array[i].linkObjId }else if(json_array[i].objType == 18){ url_comment = url_user_blog+"u/"+json_array[i].userVo.id+"/blog_beta/"+json_array[i].linkObjId+"#comment" }else if(json_array[i].objType == 4){ if(json_array[i].ident){ url_comment = url_user_formal+"news_beta/"+json_array[i].linkObjId+'/'+json_array[i].ident }else{ url_comment = url_user_formal+"news_beta/"+json_array[i].linkObjId } }else if(json_array[i].objType == 16){ if(json_array[i].ident){ url_comment = url_user_formal+"news_beta/"+json_array[i].linkObjId+'/'+json_array[i].ident+"#comment" }else{ url_comment = url_user_formal+"news_beta/"+json_array[i].linkObjId+"#comment" } }else if(json_array[i].objType == 40){ url_comment = url_user_formal+"aiCreation/details/"+json_array[i].linkObjId }else if(json_array[i].objType == 100){ url_comment = url_user_formal+"oscTweet/"+json_array[i].linkObjId }else if(json_array[i].objType == 101){ url_comment = url_user_formal+"oscTweet/"+json_array[i].linkObjId }else{ console.warn("类型错误") } html_comment += '<div class="message-item">'; if(json_array[i].state == 1){ html_comment += '<div class="message-item-info">'; }else{ html_comment += '<div class="message-item-info unread">'; } // Sanitize user input let safeUserName = escapeHtml(json_array[i].userVo.name); let safeContent = escapeHtml(json_array[i].content); html_comment += '<a class="message-item-user" href="'+url_user_id+''+json_array[i].userVo.id+'" target="_blank"><span></span>'+safeUserName+'</a>'; html_comment += ' &nbsp 评论了 &nbsp'; html_comment += '<a class="message-item-content" href="'+url_comment+'" target="_blank">'+safeContent+'</a>'; html_comment += '</div>'; html_comment += '<div class="message-item-time">'+escapeHtml(json_array[i].createTime)+'</div>'; html_comment += '</div>' } html_comment += '<div class="mess_btnbox"><a href="'+url_user_id+''+user_id+'?key=comment" class="mess_btn_more">查看更多</a></div>' $('#user_comment').html(html_comment) }else{ $('#user_comment').html("<div class='user_mess_nodata'></div>") } }else{ console.log("出错了!!!") } } }) } //点赞的消息 function getHandleLke(){ let url_formal; let url_user_formal; if("https://www.oschina.net/" == "http://www.oschina.com/"){ url_formal = "http://apiv1.oschina.com/oschinapi/message/content/like" url_user_formal = "http://www.oschina.com/" url_user_id=" http://my.oschina.com/u_beta/" url_user_blog = "http://my.oschina.com/" }else if("https://www.oschina.net/" == "http://www.oschina.osc/"){ url_formal = "http://apiv1.oschina.osc/oschinapi/message/content/like" url_user_formal = "http://www.oschina.osc/" url_user_id=" http://my.oschina.osc/u_beta/" url_user_blog = "http://my.oschina.osc/" }else{ url_formal = "https://apiv1.oschina.net/oschinapi/message/content/like" url_user_formal = "https://www.oschina.net/" url_user_id=" https://my.oschina.net/u_beta/" url_user_blog = "http://my.oschina.net/" } let queryParem = {pageNum:1,pageSize:5} $.ajax({ url: url_formal, method: "post", dataType: "json", xhrFields: { withCredentials: true }, crossDomain: true, data:queryParem, success: function (res) { let html_like = ''; if(res.code == 200){ if(res.result.length > 0){ let json_array = res.result; for(let i=0; i<json_array.length; i++){ let url_comment; if(json_array[i].objType == 3){ url_comment = url_user_blog+"u/"+json_array[i].userVo.id+"/blog_beta/"+json_array[i].linkObjId }else if(json_array[i].objType == 18){ url_comment = url_user_blog+"u/"+json_array[i].userVo.id+"/blog_beta/"+json_array[i].linkObjId+"#comment" }else if(json_array[i].objType == 4){ if(json_array[i].ident){ url_comment = url_user_formal+"news_beta/"+json_array[i].linkObjId+'/'+json_array[i].ident }else{ url_comment = url_user_formal+"news_beta/"+json_array[i].linkObjId } }else if(json_array[i].objType == 16){ if(json_array[i].ident){ url_comment = url_user_formal+"news_beta/"+json_array[i].linkObjId+'/'+json_array[i].ident+"#comment" }else{ url_comment = url_user_formal+"news_beta/"+json_array[i].linkObjId+"#comment" } }else if(json_array[i].objType == 40){ url_comment = url_user_formal+"aiCreation/details/"+json_array[i].linkObjId }else if(json_array[i].objType == 100){ url_comment = url_user_formal+"oscTweet/"+json_array[i].linkObjId }else if(json_array[i].objType == 101){ url_comment = url_user_formal+"oscTweet/"+json_array[i].linkObjId }else{ console.warn("类型错误") } html_like += '<div class="message-item">'; if(json_array[i].state == 1){ html_like += '<div class="message-item-info">'; }else{ html_like += '<div class="message-item-info unread">'; } // Sanitize user input let safeUserName = escapeHtml(json_array[i].userVo.name); let safeContent = escapeHtml(json_array[i].content); html_like += '<a class="message-item-user" href="'+url_user_id+''+json_array[i].userVo.id+'" target="_blank"><span></span>'+safeUserName+'</a>'; html_like += ' &nbsp 点赞了 &nbsp'; html_like += '<a class="message-item-content" href="'+url_comment+'" target="_blank">'+safeContent+'</a>'; html_like += '</div>'; html_like += '<div class="message-item-time">'+escapeHtml(json_array[i].createTime)+'</div>'; html_like += '</div>' } $('#user_like').html(html_like) }else{ $('#user_like').html("<div class='user_mess_nodata'></div>") } }else{ console.log("出错了!!!") } } }) } //获取未读数量接口 function findAllMsgCount(){ let url_formal = "https://www.oschina.net/msg/findAllMsgCount" let user_code = ""; let user_id = ""; let user_data = { "user_code":user_code, "userId":user_id } $.ajax({ url: url_formal, method: "post", dataType: "json", data: user_data, success: function (result) { //let html_msg = ''; if(result.message == "success"){ let msg_count = result.result.totalMsgCount; if(msg_count != 0){ //html_msg += '<div>'+msg_count+'</div>' //html_msg += '<div class="mess_btnbox"><a href="'+url_user_id+''+json_array[0].userVo.id+'?key=message" class="mess_btn_more">查看更多</a></div>' $("#message .notice_count").html(msg_count); $("#message .notice_count").css("display","block") }else{ $("#message .notice_count").css("display","none") } } } }); } // getAvatarUrl(); // getImgAvatarLoad(); //页面滚动时顶部动态显示隐藏 $(function(){ let winHeight = $(document).scrollTop(); $(window).scroll(function(){ if(scrollY > 70){ $(".top-prefix").hide(); }else{ $(".top-prefix").show(); } }) }) //创作基金弹窗 // 添加创作基金弹窗相关事件 $(function(){ // 点击创作基金显示弹窗 $('.ad-bjyh').on('click', function(){ $('.beijyh-modal-wrap').css('display', 'flex').fadeIn(300); }); // 点击蒙版关闭弹窗 $('.beijyh-modal-wrap').on('click', function(e){ if($(e.target).hasClass('beijyh-modal-wrap')) { $(this).fadeOut(300); } }); // 点击关闭按钮关闭弹窗 $('.beijyh-modal-box-close').on('click', function(){ $('.beijyh-modal-wrap').fadeOut(300); }); }); </script> <script type="text/javascript"> (function (ww, dt) { ww.__gac = { domain: 'www.oschina.net' }; if(!(/\/marketing\/ad-slice/.test(location.href))){ var script = dt.createElement('script'); script.setAttribute('type', 'text/javascript'); script.setAttribute('src', '//www.oschina.net/public/javascripts/cjl/ga.js?t=20160926'); dt.body.appendChild(script); } } (window, window.document)); </script></body> </html> <!-- Generated by OsChina.NET (init:1[ms],page:237[ms],ip:43.163.109.85) -->

Pages: 1 2 3 4 5 6 7 8 9 10