Mainactivity
package com.example.yue01.activity;
import android.content.Intent;
import android.os.Handler;
import android.os.Message;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.widget.TextView;
import com.example.yue01.R;
public class MainActivity extends AppCompatActivity {
private TextView tv;
private int time = 3;
private Handler handler = new Handler(){
@Override
public void handleMessage(Message msg) {
super.handleMessage(msg);
time --;
if (time <= 0){
Intent intent = new Intent(MainActivity.this, Main2Activity.class);
startActivity(intent);
finish();
}else {
tv.setText(time + \"秒\");
handler.sendEmptyMessageDelayed(1,1000);
}
}
};
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
tv = findViewById(R.id.tv);
handler.sendEmptyMessageDelayed(1,1000);
}
@Override
protected void onDestroy() {
super.onDestroy();
}
}
Main2activity
package com.example.yue01.activity;
import android.os.Bundle;
import android.support.v4.app.Fragment;
import android.support.v4.app.FragmentActivity;
import android.support.v4.app.FragmentPagerAdapter;
import android.support.v4.view.ViewPager;
import android.support.v4.widget.DrawerLayout;
import android.view.View;
import android.widget.Button;
import android.widget.RadioButton;
import android.widget.RadioGroup;
import com.example.yue01.R;
import com.example.yue01.fragment.FragmentOne;
import com.example.yue01.fragment.FragmentThree;
import com.example.yue01.fragment.FragmentTwo;
import java.util.ArrayList;
public class Main2Activity extends FragmentActivity implements View. Listener {
private ViewPager viewPager;
private DrawerLayout drawer;
private RadioButton but1;
private RadioButton but2;
private RadioButton but3;
private RadioGroup group;
private Button butb;
private Button butbu;
private Button butbt;
private ArrayList<Fragment> list_fragment;
private FragmentOne fragmentOne;
private FragmentTwo fragmentTwo;
private FragmentThree fragmentThree;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main2);
initView();
list_fragment = new ArrayList<>();
fragmentOne = new FragmentOne();
fragmentTwo = new FragmentTwo();
fragmentThree = new FragmentThree();
list_fragment.add(fragmentOne);
list_fragment.add(fragmentTwo);
list_fragment.add(fragmentThree);
viewPager.setAdapter(new FragmentPagerAdapter(getSupportFragmentManager()) {
@Override
public Fragment getItem(int i) {
return list_fragment.get(i);
}
@Override
public int getCount() {
return list_fragment.size();
}
});
group.setOnCheckedChangeListener(new RadioGroup.OnCheckedChangeListener() {
@Override
public void onCheckedChanged(RadioGroup group, int checkedId) {
switch (checkedId){
case R.id.but1:
viewPager.setCurrentItem(0);
break;
case R.id.but2:
viewPager.setCurrentItem(1);
break;
case R.id.but3:
viewPager.setCurrentItem(2);
break;
}
}
});
viewPager.setOnPageChangeListener(new ViewPager.OnPageChangeListener() {
@Override
public void onPageScrolled(int i, float v, int i1) {
}
@Override
public void onPageSelected(int i) {
switch (i){
case 0:
group.check(R.id.but1);
break;
case 1:
group.check(R.id.but2);
break;
case 2:
group.check(R.id.but3);
break;
}
}
@Override
public void onPageScrollStateChanged(int i) {
}
});
}
private void initView() {
viewPager = (ViewPager) findViewById(R.id.viewPager);
but1 = (RadioButton) findViewById(R.id.but1);
but2 = (RadioButton) findViewById(R.id.but2);
but3 = (RadioButton) findViewById(R.id.but3);
group = (RadioGroup) findViewById(R.id.group);
butb = (Button) findViewById(R.id.butb);
butbu = (Button) findViewById(R.id.butbu);
butbt = (Button) findViewById(R.id.butbt);
drawer = findViewById(R.id.drawer);
butb.set Listener(this);
butbu.set Listener(this);
butbt.set Listener(this);
}
@Override
public void (View v) {
switch (v.getId()) {
case R.id.butb:
viewPager.setCurrentItem(0);
drawer.closeDrawers();
break;
case R.id.butbu:
viewPager.setCurrentItem(1);
drawer.closeDrawers();
break;
case R.id.butbt:
viewPager.setCurrentItem(2);
drawer.closeDrawers();
break;
}
}
}
Fragmentone
package com.example.yue01.fragment;
import android.os.Bundle;
import android.support.annotation.NonNull;
import android.support.annotation.Nullable;
import android.support.design.widget.TabLayout;
import android.support.v4.app.Fragment;
import android.support.v4.view.ViewPager;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import com.example.yue01.R;
import com.example.yue01.fragmentone.FragmentA;
import com.example.yue01.fragmentone.FragmentB;
import com.example.yue01.fragmentone.FragmentC;
import java.util.ArrayList;
public class FragmentOne extends Fragment {
private TabLayout tab;
private ViewPager viewPager01;
private ArrayList<Fragment> fragment;
private Madapter_tb madapter_tb;
@Nullable
@Override
public View onCreateView(@NonNull LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
View view = inflater.inflate(R.layout.fragment1, container, false);
tab = (TabLayout) view.findViewById(R.id.tab);
viewPager01 = (ViewPager) view.findViewById(R.id.viewPager01);
fragment = new ArrayList<>();
fragment.add(new FragmentA());
fragment.add(new FragmentB());
fragment.add(new FragmentC());
madapter_tb = new Madapter_tb(getChildFragmentManager());
madapter_tb.setData(fragment);
tab.setupWithViewPager(viewPager01);
viewPager01.setAdapter(madapter_tb);
return view;
}
}
FragmentA
package com.example.yue01.fragmentone;
import android.os.AsyncTask;
import android.os.Bundle;
import android.support.annotation.NonNull;
import android.support.annotation.Nullable;
import android.support.v4.app.Fragment;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.ListView;
import android.widget.Toast;
import com.example.yue01.R;
import com.example.yue01.gson.GsonBean;
import com.example.yue01.httpurlconnection.HttpUrl;
import com.example.yue01.shujuku.UserDao;
import com.example.yue01.wang.wangluo;
import com.google.gson.Gson;
import com.handmark.pulltorefresh.library.PullToRefresh ;
import com.handmark.pulltorefresh.library.PullToRefreshListView;
import java.util.ArrayList;
import java.util.List;
public class FragmentA extends Fragment {
private PullToRefreshListView lv_pull;
private List<GsonBean.DataBean> list=new ArrayList<>();
private String url = \"http://www.xieast.com/api/news/news.php?count=10&page=\";
private int page = 1;
private Madapter_lv madapter_lv;
private UserDao userDao;
@Nullable
@Override
public View onCreateView(@NonNull LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
View view = inflater.inflate(R.layout.fragmenta,container,false);
lv_pull = view.findViewById(R.id.lv_pull);
lv_pull.setMode(PullToRefresh .Mode.BOTH);
userDao = new UserDao(getActivity());
madapter_lv = new Madapter_lv(getActivity());
lv_pull.setAdapter(madapter_lv);
initData(1);
setLinstenner();
return view;
}
private void setLinstenner() {
lv_pull.setOnRefreshListener(new PullToRefresh .OnRefreshListener2<ListView>() {
@Override
public void onPullDownToRefresh(PullToRefresh <ListView> refreshView) {
page = 1;
list.clear();
new MyTask().execute(url+page);
}
@Override
public void onPullUpToRefresh(PullToRefresh <ListView> refreshView) {
new MyTask().execute(url+(++page));
}
});
}
private void initData(int page) {
if (wangluo.has(getActivity())==false){
list = userDao.select();
madapter_lv.setList(list);
Toast.makeText(getActivity(),\"没网\",Toast.LENGTH_SHORT).show();
}else if (wangluo.has(getActivity())==true){
new MyTask().execute(url+page);
}
}
class MyTask extends AsyncTask<String,Void,List<GsonBean.DataBean>>{
@Override
protected List<GsonBean.DataBean> doInBackground(String... strings) {
String s = null;
try {
s = HttpUrl.get(strings[0]);
GsonBean gsonBean = new Gson().fromJson(s, GsonBean.class);
userDao.delete();
for (int i=0; i<gsonBean.getData().size(); i++){
userDao.add(gsonBean.getData().get(i).get (),
gsonBean.getData().get(i).getThumbnail_pic_s(),
gsonBean.getData().get(i).getThumbnail_pic_s02(),
gsonBean.getData().get(i).getThumbnail_pic_s03());
}
return gsonBean.getData();
} catch (Exception e) {
e.printStackTrace();
}
return null;
}
@Override
protected void onPostExecute(List<GsonBean.DataBean> dataBeans) {
super.onPostExecute(dataBeans);
if (page==1){
madapter_lv.setList(dataBeans);
}else{
madapter_lv.addList(dataBeans);
}
madapter_lv.notifyDataSetChanged();
lv_pull.onRefreshComplete();
}
}
}
Madapter_tab
package com.example.yue01.fragment;
import android.support.annotation.Nullable;
import android.support.v4.app.Fragment;
import android.support.v4.app.FragmentManager;
import android.support.v4.app.FragmentPagerAdapter;
import java.util.ArrayList;
import java.util.List;
class Madapter_tb extends FragmentPagerAdapter {
private List<Fragment> fragments;
public void setData(ArrayList<Fragment> fragment) {
fragments = fragment;
}
public Madapter_tb(FragmentManager fm) {
super(fm);
}
@Override
public Fragment getItem(int i) {
return fragments.get(i);
}
@Override
public int getCount() {
return fragments.size();
}
@Nullable
@Override
public CharSequence getPage (int position) {
switch (position){
case 0:
return \"电影\";
case 1:
return \"电视剧\";
case 2:
return \"综艺\";
}
return null;
}
}
Madapter_lv
package com.example.yue01.fragmentone;
import android.content.Context;
import android.support.v4.app.FragmentActivity;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget. Adapter;
import android.widget.ImageView;
import android.widget.TextView;
import com.example.yue01.R;
import com.example.yue01.gson.GsonBean;
import com.example.yue01.imageloader.Config;
import com.nostra13.universalimageloader.core.DisplayImageOptions;
import com.nostra13.universalimageloader.core.ImageLoader;
import java.util.ArrayList;
import java.util.List;
class Madapter_lv extends Adapter {
private Context context;
private List<GsonBean.DataBean> list;
public Madapter_lv(Context context) {
this.context=context;
this.list=new ArrayList<>();
}
public void setList(List<GsonBean.DataBean> list){
if (list != null){
this.list = list;
}
notifyDataSetChanged();
}
public void addList(List<GsonBean.DataBean> list){
if (list != null){
this.list.addAll(list);
}
notifyDataSetChanged();
}
@Override
public int getCount() {
return list.size();
}
@Override
public GsonBean.DataBean getItem(int position) {
return list.get(position);
}
@Override
public long getItemId(int position) {
return position;
}
@Override
public int getViewTypeCount() {
return super.getViewTypeCount()+1;
}
@Override
public int getItemViewType(int position) {
GsonBean.DataBean dataBean = getItem(position);
String s1 = dataBean.getThumbnail_pic_s();
String s2 = dataBean.getThumbnail_pic_s02();
String s3 = dataBean.getThumbnail_pic_s03();
if (s2 == null && s3 == null){
return 0;
}else {
return 1;
}
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {
ViewHolder viewHolder = null;
if (convertView == null){
viewHolder = new ViewHolder();
convertView = LayoutInflater.from(context).inflate(getItemViewType(position)==0 ? R.layout.item : R.layout.item2,parent,false);
if (getItemViewType(position) == 0){
viewHolder.tv1 = convertView.findViewById(R.id.tv1);
viewHolder.tv2 = convertView.findViewById(R.id.tv2);
viewHolder.img = convertView.findViewById(R.id.img);
}else {
viewHolder.tvv = convertView.findViewById(R.id.tvv);
viewHolder.img01 = convertView.findViewById(R.id.img01);
viewHolder.img02 = convertView.findViewById(R.id.img02);
viewHolder.img03 = convertView.findViewById(R.id.img03);
}
viewHolder.tv1 = convertView.findViewById(R.id.tv1);
viewHolder.tv2 = convertView.findViewById(R.id.tv2);
viewHolder.img = convertView.findViewById(R.id.img);
convertView.setTag(viewHolder);
}else{
viewHolder = (ViewHolder) convertView.getTag();
}
if (getItemViewType(position) == 0){
ImageLoader.getInstance().displayImage(list.get(position).getThumbnail_pic_s(),viewHolder.img,Config.displayImageOptions());
viewHolder.tv1.setText(list.get(position).get ());
viewHolder.tv2.setText(list.get(position).getAuthor_name());
}else {
viewHolder.tvv.setText(list.get(position).get ());
ImageLoader.getInstance().displayImage(list.get(position).getThumbnail_pic_s(),viewHolder.img01,Config.displayImageOptions());
ImageLoader.getInstance().displayImage(list.get(position).getThumbnail_pic_s02(),viewHolder.img02,Config.displayImageOptions());
ImageLoader.getInstance().displayImage(list.get(position).getThumbnail_pic_s03(),viewHolder.img03,Config.displayImageOptions());
}
return convertView;
}
class ViewHolder{
ImageView img,img01,img02,img03;
TextView tv1,tv2,tvv;
}
}
FragmentC
package com.example.yue01.fragmentone;
import android.os.Bundle;
import android.support.annotation.NonNull;
import android.support.annotation.Nullable;
import android.support.v4.app.Fragment;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import com.example.yue01.R;
import com.recker.flybanner.FlyBanner;
import java.util.ArrayList;
public class FragmentC extends Fragment {
private FlyBanner ban;
private String[] imgurl = {
\"http://attach.bbs.miui.com/forum/201303/16/173716jzszx8vbbb0z9o4k.jpg\",
\"http://pic.58pic.com/58pic/13/16/42/18F58PIChTy_1024.jpg\",
\"http://pic.58pic.com/58pic/13/16/42/18F58PIChTy_1024.jpg\" };
@Nullable
@Override
public View onCreateView(@NonNull LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
View view = inflater.inflate(R.layout.fragmentc,container,false);
ban = view.findViewById(R.id.ban);
initload();
return view;
}
private void initload() {
ArrayList<String> list_img = new ArrayList<>();
for (int i = 0; i<imgurl.length; i++){
list_img.add(imgurl[i]);
}
ban.setImagesUrl(list_img);
}
}
HttpUrl
package com.example.yue01.httpurlconnection;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.net.HttpURLConnection;
import java.net.URL;
import java.net.URLConnection;
public class HttpUrl {
public static String get(String urlstrings) throws Exception {
URL url = new URL(urlstrings);
HttpURLConnection httpURLConnection = (HttpURLConnection) url.openConnection();
httpURLConnection.setRequestMethod(\"GET\");
httpURLConnection.setConnectTimeout(5000);
httpURLConnection.setReadTimeout(5000);
int responseCode = httpURLConnection.getResponseCode();
InputStream inputStream = httpURLConnection.getInputStream();
String steam = getInPut(inputStream);
return steam;
}
private static String getInPut(InputStream inputStream) throws IOException {
StringBuilder stringBuilder = new StringBuilder();
BufferedReader reader = new BufferedReader(new InputStreamReader(inputStream));
String time = null;
while ((time = reader.readLine()) != null){
stringBuilder.append(time);
}
return stringBuilder.toString();
}
}
Myapp
package com.example.yue01.imageloader;
import android.app.Application;
import com.nostra13.universalimageloader.core.ImageLoader;
import com.nostra13.universalimageloader.core.ImageLoaderConfiguration;
public class Myapp extends Application {
@Override
public void onCreate() {
super.onCreate();
ImageLoaderConfiguration imageLoaderConfiguration = new ImageLoaderConfiguration.Builder(this)
.memoryCacheSize(10)
.diskCacheSize(50*1024*1024)
.defaultDisplayImageOptions(Config.displayImageOptions())
.build();
ImageLoader.getInstance().init(imageLoaderConfiguration);
}
}
Config
package com.example.yue01.imageloader;
import android.graphics.Bitmap;
import com.example.yue01.R;
import com.nostra13.universalimageloader.core.DisplayImageOptions;
import com.nostra13.universalimageloader.core.ImageLoader;
import com.nostra13.universalimageloader.core.display.RoundedBitmapDisp ;
public class Config {
public static DisplayImageOptions displayImageOptions(){
DisplayImageOptions displayImageOptions = new DisplayImageOptions.Builder()
.cacheOnDisk(true)
.cacheInMemory(true)
.bitmapConfig(Bitmap.Config.RGB_565)
.showImageForEmptyUri(R.mipmap.ic_launcher)
.disp (new RoundedBitmapDisp (30))
.build();
return displayImageOptions;
}
}
SQLitetHelpter
package com.example.yue01.shujuku;
import android.content.Context;
import android.data .sqlite.SQLiteData ;
import android.data .sqlite.SQLiteOpenHelper;
import android.support.annotation.Nullable;
public class SQLiteHelpter extends SQLiteOpenHelper {
public SQLiteHelpter( Context context) {
super(context, \"User.db\", null, 1);
}
@Override
public void onCreate(SQLiteData db) {
db.execSQL(\"create table users1(id integer primary key autoincrement,\" +
\" text,\" +
\"thumbnail_pic_s text,\" +
\"thumbnail_pic_s02 text,\" +
\"thumbnail_pic_s03 text)\");
}
@Override
public void onUpgrade(SQLiteData db, int oldVersion, int newVersion) {
}
}
UserDao
package com.example.yue01.shujuku;
import android.content.ContentValues;
import android.content.Context;
import android.data .Cursor;
import android.data .sqlite.SQLiteData ;
import com.example.yue01.gson.GsonBean;
import java.util.ArrayList;
import java.util.List;
public class UserDao {
private final SQLiteData db;
private ArrayList<GsonBean.DataBean> list;
public UserDao(Context context){
SQLiteHelpter sqLiteHelpter = new SQLiteHelpter(context);
db = sqLiteHelpter.getWritableData ();
}
public void add(String ,String thumbnail_pic_s,String thumbnail_pic_s02,String thumbnail_pic_s03){
ContentValues values = new ContentValues();
values.put(\" \", );
values.put(\"thumbnail_pic_s\",thumbnail_pic_s);
values.put(\"thumbnail_pic_s02\",thumbnail_pic_s02);
values.put(\"thumbnail_pic_s03\",thumbnail_pic_s03);
db.insert(\"users1\",null,values);
}
public List<GsonBean.DataBean> select(){
Cursor query = db.query(\"users1\", null, null, null, null, null, null);
list = new ArrayList<>();
while (query.moveToNext()){
String = query.getString(query.getColumnIndex(\" \"));
String thumbnail_pic_s = query.getString(query.getColumnIndex(\"thumbnail_pic_s\"));
String thumbnail_pic_s02 = query.getString(query.getColumnIndex(\"thumbnail_pic_s02\"));
String thumbnail_pic_s03 = query.getString(query.getColumnIndex(\"thumbnail_pic_s03\"));
list.add(new GsonBean.DataBean( ,thumbnail_pic_s,thumbnail_pic_s02,thumbnail_pic_s03));
}
return list;
}
public void delete(){
db.execSQL(\"DELETE From users1\");
}
}
Wangluo
package com.example.yue01.wang;
import android.content.Context;
import android.net.ConnectivityManager;
import android.net.NetworkInfo;
public class wangluo {
public static boolean has(Context context){
ConnectivityManager connectivityManager = (ConnectivityManager) context.getSystemService(Context.CONNECTIVITY_SERVICE);
NetworkInfo activeNetworkInfo = connectivityManager.getActiveNetworkInfo();
return activeNetworkInfo != null && activeNetworkInfo.isAvailable();
}
}
Main2activity_
<? version=\"1.0\" encoding=\"utf-8\"?>
<android.support.v4.widget.DrawerLayout
android:id=\"@+id/drawer\"
ns:android=\"http://schemas.android.com/apk/res/android\"
ns:app=\"http://schemas.android.com/apk/res-auto\"
ns:tools=\"http://schemas.android.com/tools\"
android:layout_width=\"match_parent\"
android:layout_height=\"match_parent\"
android:orientation=\"vertical\"
tools:context=\".activity.Main2Activity\">
<LinearLayout
android:orientation=\"vertical\"
android:layout_width=\"match_parent\"
android:layout_height=\"wrap_content\">
<android.support.v4.view.ViewPager
android:id=\"@+id/viewPager\"
android:layout_weight=\"9\"
android:layout_width=\"match_parent\"
android:layout_height=\"0dp\"
></android.support.v4.view.ViewPager>
<RadioGroup
android:id=\"@+id/group\"
android:layout_weight=\"1\"
android:orientation=\"horizontal\"
android:layout_width=\"match_parent\"
android:layout_height=\"0dp\">
<RadioButton
android:id=\"@+id/but1\"
android:layout_weight=\"1\"
android:gravity=\"center\"
android:button=\"@null\"
android:text=\"哎\"
android:layout_width=\"match_parent\"
android:layout_height=\"match_parent\" />
<RadioButton
android:id=\"@+id/but2\"
android:layout_weight=\"1\"
android:gravity=\"center\"
android:button=\"@null\"
android:text=\"呦\"
android:layout_width=\"match_parent\"
android:layout_height=\"match_parent\" />
<RadioButton
android:id=\"@+id/but3\"
android:layout_weight=\"1\"
android:gravity=\"center\"
android:button=\"@null\"
android:text=\"喂\"
android:layout_width=\"match_parent\"
android:layout_height=\"match_parent\" />
</RadioGroup>
</LinearLayout>
<LinearLayout
android:layout_gravity=\"left\"
android:orientation=\"vertical\"
android:layout_width=\"match_parent\"
android:layout_height=\"match_parent\">
<Button
android:id=\"@+id/butb\"
android:text=\"是大法官\"
android:layout_width=\"match_parent\"
android:layout_height=\"wrap_content\" />
<Button
android:id=\"@+id/butbu\"
android:text=\"是大法官\"
android:layout_width=\"match_parent\"
android:layout_height=\"wrap_content\" />
<Button
android:id=\"@+id/butbt\"
android:text=\"是大法官\"
android:layout_width=\"match_parent\"
android:layout_height=\"wrap_content\" />
</LinearLayout>
</android.support.v4.widget.DrawerLayout>
fragment1
<? version=\"1.0\" encoding=\"utf-8\"?>
<LinearLayout
ns:android=\"http://schemas.android.com/apk/res/android\"
android:layout_width=\"match_parent\"
android:background=\"#ffccff\"
android:orientation=\"vertical\"
android:layout_height=\"match_parent\">
<android.support.design.widget.TabLayout
android:id=\"@+id/tab\"
android:layout_width=\"match_parent\"
android:layout_height=\"0dp\"
android:layout_weight=\"1\"></android.support.design.widget.TabLayout>
<android.support.v4.view.ViewPager
android:id=\"@+id/viewPager01\"
android:layout_width=\"match_parent\"
android:layout_height=\"0dp\"
android:layout_weight=\"7\"></android.support.v4.view.ViewPager>
</LinearLayout>
fragmenta
<? version=\"1.0\" encoding=\"utf-8\"?>
<LinearLayout ns:android=\"http://schemas.android.com/apk/res/android\"
android:layout_width=\"match_parent\"
android:background=\"#00ff92\"
android:layout_height=\"match_parent\">
<com.handmark.pulltorefresh.library.PullToRefreshListView
android:id=\"@+id/lv_pull\"
android:layout_width=\"match_parent\"
android:layout_height=\"match_parent\"></com.handmark.pulltorefresh.library.PullToRefreshListView>
</LinearLayout>
继续阅读与本文标签相同的文章
上一篇 :
了解用户的访问数据会不会影响网站的网站排名呢?
下一篇 :
上海圣华国际物流的仓储实现智能化管理
-
Python快递鸟API接口对接(即时查询|物流跟踪|电子面单|单号识别)
2026-05-18栏目: 教程
-
免费物流快递单号查询API接口及使用教程
2026-05-18栏目: 教程
-
【译】Hadoop发生了什么?我们该如何做?
2026-05-18栏目: 教程
-
阿里云上云企业案例周刊·第2期
2026-05-18栏目: 教程
-
虚拟机模拟部署Extended Clusters(一)基础环境准备
2026-05-18栏目: 教程
