xuenhao(imageloder xlistview)

//activity_main.xml

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:id="@+id/activity_main"
android:layout_width="match_parent"
android:orientation="vertical"
android:layout_height="match_parent"
tools:context="cn.bawei.com.newyuekao.MainActivity">
<FrameLayout
android:id="@+id/fragment"
android:layout_width="match_parent"
android:layout_weight="1"
android:layout_height="match_parent"></FrameLayout>

<android.support.design.widget.TabLayout
android:id="@+id/tablayout"
android:layout_width="match_parent"
android:layout_weight="6"
app:tabSelectedTextColor="#333093"
app:tabIndicatorColor="#333093"
android:layout_height="match_parent">
</android.support.design.widget.TabLayout>
</LinearLayout>



//content.xml
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:orientation="vertical" android:layout_width="match_parent"
android:layout_height="match_parent">
<RelativeLayout
android:layout_width="match_parent"
android:layout_height="200dp">

<TextView
android:text="TextView"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentTop="true"
android:layout_alignParentLeft="true"
android:layout_alignParentStart="true"
android:textSize="25sp"
android:layout_marginLeft="52dp"
android:layout_marginStart="52dp"
android:layout_marginTop="33dp"
android:id="@+id/text" />

<ImageView
android:layout_width="150dp"
android:layout_height="150dp"
app:srcCompat="@mipmap/ic_launcher"
android:id="@+id/imageView"
android:layout_alignParentTop="true"
android:layout_alignParentRight="true"
android:layout_alignParentEnd="true" />
</RelativeLayout>

</LinearLayout>


//content2.xml

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical" android:layout_width="match_parent"
android:layout_height="match_parent">
<RelativeLayout
android:layout_width="match_parent"
android:layout_height="200dp">

<TextView
android:text="TextView"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentTop="true"
android:layout_alignParentLeft="true"
android:layout_alignParentStart="true"
android:layout_marginLeft="94dp"
android:layout_marginStart="94dp"
android:layout_marginTop="69dp"
android:textSize="20sp"
android:id="@+id/text1" />
</RelativeLayout>

</LinearLayout>


//fragment01.xml

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:orientation="vertical"
android:layout_width="match_parent"
android:layout_height="match_parent">
<android.support.design.widget.TabLayout
android:id="@+id/tablayout1"
android:layout_weight="8"
android:layout_width="match_parent"
android:layout_height="match_parent"></android.support.design.widget.TabLayout>

<android.support.v4.view.ViewPager
android:id="@+id/viewpager"
android:layout_width="match_parent"
android:layout_weight="1"
android:layout_height="match_parent"></android.support.v4.view.ViewPager>


</LinearLayout>


//fragment01_1.xml
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical" android:layout_width="match_parent"
android:layout_height="match_parent">
<com.youth.banner.Banner
android:id="@+id/banner"
android:layout_weight="2"
android:layout_width="match_parent"
android:layout_height="match_parent"></com.youth.banner.Banner>

<TextView
android:id="@+id/textVvvv"
android:layout_width="match_parent"
android:text="111111"
android:layout_height="wrap_content" />
<me.maxwin.view.XListView
android:id="@+id/xlisview"
android:layout_width="match_parent"
android:layout_weight="1"
android:layout_height="match_parent"></me.maxwin.view.XListView>


</LinearLayout>

//frament02.xml
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical" android:layout_width="match_parent"
android:layout_height="match_parent">

<TextView
android:text="222222222"
android:layout_width="match_parent"
android:layout_centerInParent="true"
android:layout_height="wrap_content"
android:id="@+id/textView" />
</RelativeLayout>

//fragment03.xml
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical" android:layout_width="match_parent"
android:layout_height="match_parent">

<TextView
android:text="3333333"
android:layout_width="match_parent"
android:layout_centerInParent="true"
android:layout_height="wrap_content"
android:id="@+id/textView" />
</RelativeLayout>


//fragment04.xml

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical" android:layout_width="match_parent"
android:layout_height="match_parent">

<TextView
android:text="444444444"
android:layout_width="match_parent"
android:layout_centerInParent="true"
android:layout_height="wrap_content"
android:id="@+id/textView" />
</RelativeLayout>



//mainactivity.java

public class MainActivity extends FragmentActivity {

private TabLayout tabLayout;
private Fragment01 fragment01;
private Fragment02 fragment02;
private Fragment03 fragment03;
private Fragment04 fragment04;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);

tabLayout = (TabLayout) findViewById(R.id.tablayout);

//给tablayout设置一下item
tabLayout.addTab(tabLayout.newTab().setText("技术").setIcon(R.mipmap.ic_launcher));
tabLayout.addTab(tabLayout.newTab().setText("资讯").setIcon(R.mipmap.ic_launcher));
tabLayout.addTab(tabLayout.newTab().setText("学园").setIcon(R.mipmap.ic_launcher));
tabLayout.addTab(tabLayout.newTab().setText("我的").setIcon(R.mipmap.ic_launcher));

//实例化fragment
fragment01 = new Fragment01();
fragment02 = new Fragment02();
fragment03 = new Fragment03();
fragment04 = new Fragment04();

//默认先让第一个显示
getSupportFragmentManager()
.beginTransaction()
.add(R.id.fragment,fragment01)
.commit();
getSupportFragmentManager()
.beginTransaction()
.add(R.id.fragment,fragment02)
.commit();
getSupportFragmentManager()
.beginTransaction()
.add(R.id.fragment,fragment03)
.commit();
getSupportFragmentManager()
.beginTransaction()
.add(R.id.fragment,fragment04)
.commit();

//显示第一个fragment其他都隐藏
getSupportFragmentManager().beginTransaction().show(fragment01).commit();
getSupportFragmentManager().beginTransaction().hide(fragment02).commit();
getSupportFragmentManager().beginTransaction().hide(fragment03).commit();
getSupportFragmentManager().beginTransaction().hide(fragment04).commit();

//设置监听
tabLayout.setOnTabSelectedListener(new TabLayout.OnTabSelectedListener() {
@Override
public void onTabSelected(TabLayout.Tab tab) {
if (tab.getText().equals("技术")){
//如果tab的标题是技术就显示第一个
getSupportFragmentManager().beginTransaction().show(fragment01).commit();
getSupportFragmentManager().beginTransaction().hide(fragment02).commit();
getSupportFragmentManager().beginTransaction().hide(fragment03).commit();
getSupportFragmentManager().beginTransaction().hide(fragment04).commit();
}else if (tab.getText().equals("资讯")){//同理可得
getSupportFragmentManager().beginTransaction().show(fragment02).commit();
getSupportFragmentManager().beginTransaction().hide(fragment01).commit();
getSupportFragmentManager().beginTransaction().hide(fragment03).commit();
getSupportFragmentManager().beginTransaction().hide(fragment04).commit();
}else if (tab.getText().equals("学园")){
getSupportFragmentManager().beginTransaction().show(fragment03).commit();
getSupportFragmentManager().beginTransaction().hide(fragment01).commit();
getSupportFragmentManager().beginTransaction().hide(fragment02).commit();
getSupportFragmentManager().beginTransaction().hide(fragment04).commit();
}else{
getSupportFragmentManager().beginTransaction().show(fragment04).commit();
getSupportFragmentManager().beginTransaction().hide(fragment01).commit();
getSupportFragmentManager().beginTransaction().hide(fragment02).commit();
getSupportFragmentManager().beginTransaction().hide(fragment03).commit();
}

}

@Override
public void onTabUnselected(TabLayout.Tab tab) {

}

@Override
public void onTabReselected(TabLayout.Tab tab) {

}
});






}
}



//GlideImageLoader.java

public class GlideImageLoader extends ImageLoader{
@Override
public void displayImage(Context context, Object path, ImageView imageView) {
Glide.with(context).load(path).into(imageView);
}
}


//MyAdapter.java


public class MyAdapter extends BaseAdapter {
Context context;
List<Listbean.DataBean.ComicsBean> list;
final int TYPE_1 = 0;
final int TYPE_2 = 1;

public MyAdapter(Context context,List<Listbean.DataBean.ComicsBean> list) {
this.context = context;
this.list = list;

}

@Override
public int getCount() {
return list.size();
}

@Override
public Object getItem(int position) {
return list.get(position);
}

@Override
public long getItemId(int position) {
return position;
}

@Override
public int getViewTypeCount() {
return 2;
}

@Override
public int getItemViewType(int position) {
int i = position % 2;
switch (i){
case 1:return TYPE_1;
default: return TYPE_2;
}
}

@Override
public View getView(int position, View convertView, ViewGroup parent) {
ViewHolder holder=null;
int type = getItemViewType(position);
if(convertView==null){
if (type==TYPE_1){
convertView=View.inflate(context, R.layout.content,null);
holder = new ViewHolder();
holder.text = (TextView) convertView.findViewById(R.id.text);
holder.imageView = (ImageView) convertView.findViewById(R.id.imageView);
}else{
convertView=View.inflate(context, R.layout.conten2,null);
holder = new ViewHolder();
holder.text1 = (TextView) convertView.findViewById(R.id.text1);
}
convertView.setTag(holder);
}else{
holder=(ViewHolder)convertView.getTag();
}
if (type==TYPE_1){
holder.text.setText("TYPE_1"+list.get(position).getTitle());
Glide.with(context).load(list.get(position).getCover_image_url()).into(holder.imageView);
}else{
holder.text1.setText("TYPE_2"+list.get(position).getTitle());
}
return convertView;
}

class ViewHolder{
TextView text,text1;
ImageView imageView;

}
}




//bean包(3个bean类)


//images.java( 1 第一个 解析出来数据 轮播图)



//Listbean.java( 2 第二个 解析出来的数据 bean)



//TitleBean.java ( 3 第三个 )

public class TitleBean extends DataSupport {
String title;

@Override
public String toString() {
return "TitleBean{" +
"title='" + title + '\'' +
'}';
}

public TitleBean(String title) {
this.title = title;
}

public String getTitle() {

return title;
}

public void setTitle(String title) {
this.title = title;
}
}


//fragment 包(跟四个fragment.xml 布局相照应)

//fragment01.java(第一个frafment)

public class Fragment01 extends Fragment {

private TabLayout tabLayout;
private ViewPager viewPager;
@Nullable
@Override
public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
View view = inflater.inflate(R.layout.fragment01,container,false);
tabLayout = (TabLayout) view.findViewById(R.id.tablayout1);
viewPager = (ViewPager) view.findViewById(R.id.viewpager);

tabLayout.addTab(tabLayout.newTab().setText("推荐"));
tabLayout.addTab(tabLayout.newTab().setText("电子商务"));
tabLayout.addTab(tabLayout.newTab().setText("互联网金融"));
tabLayout.addTab(tabLayout.newTab().setText("物联网"));

viewPager.setAdapter(new FragmentPagerAdapter(getActivity().getSupportFragmentManager()) {

@Override
public int getCount() {
return 4;
}

@Override
public Fragment getItem(int position) {
Fragment fragment =null;
fragment = new Fragment01_1();
Bundle bundle = new Bundle();
bundle.putInt("name",position);
fragment.setArguments(bundle);
return fragment;
}
});
tabLayout.setupWithViewPager(viewPager);
tabLayout.getTabAt(0).setText("推荐");
tabLayout.getTabAt(1).setText("电子商务");
tabLayout.getTabAt(2).setText("互联网金融");
tabLayout.getTabAt(3).setText("物联网");

return view;
}
}


//fragment01_1.java

public class Fragment01_1 extends Fragment implements XListView.IXListViewListener{
private Banner banner;
private String urlpath = "http://api.kkmh.com/v1/topic_new/discovery_list?gender=0&sa_event=eyJwcm9qZWN0Ijoia3VhaWthbl9hcHAiLCJ0aW1lIjoxNDg3ODM5MDM5MzE1LCJwcm9wZXJ0aWVzIjp7IkhvbWVwYWdlVGFiTmFtZSI6IueDremXqCIsIlZDb21tdW5pdHlUYWJOYW1lIjoi54Ot6ZeoIiwiJG9zX3ZlcnNpb24iOiI0LjIuMiIsIkdlbmRlclR5cGUiOiLlpbPniYgiLCJGcm9tRmluZENhdGVnb3J5VGFiTmFtZSI6IuWFqOmDqCIsIklzQXV0b0xvYWQiOmZhbHNlLCIkbGliX3ZlcnNpb24iOiIxLjYuMzQiLCIkbmV0d29ya190eXBlIjoiV0lGSSIsIiR3aWZpIjp0cnVlLCIkbWFudWZhY3R1cmVyIjoic2Ftc3VuZyIsIkZyb21GaW5kVGFiTmFtZSI6IuaOqOiNkCIsIiRzY3JlZW5faGVpZ2h0Ijo1NzYsIkNhdGVnb3J5Ijoi5peg5rOV6I635Y-WIiwiSG9tZXBhZ2VVcGRhdGVEYXRlIjowLCJQcm9wZXJ0eUV2ZW50IjoiUmVhZEZpbmRQYWdlIiwiRmluZFRhYk5hbWUiOiLmjqjojZAiLCJhYnRlc3RfZ3JvdXAiOjQ2LCIkc2NyZWVuX3dpZHRoIjoxMDI0LCJGaW5kQ2F0ZWdvcnlUYWJOYW1lIjoi5YWo6YOoIiwiJG9zIjoiQW5kcm9pZCIsIlRyaWdnZXJQYWdlIjoiSG9tZVBhZ2UiLCIkY2FycmllciI6IkNNQ0MiLCIkbW9kZWwiOiJHVC1QNTIxMCIsIiRhcHBfdmVyc2lvbiI6IjMuOC4xIn0sInR5cGUiOiJ0cmFjayIsImRpc3RpbmN0X2lkIjoiQTo5MDUxMDQyNzYzNzU1MTA5Iiwib3JpZ2luYWxfaWQiOiJBOjkwNTEwNDI3NjM3NTUxMDkiLCJldmVudCI6IlJlYWRGaW5kUGFnZSJ9";
private String listurl = "http://api.kkmh.com/v1/daily/comic_lists/0?since=0&gender=0&sa_event=eyJwcm9qZWN0Ijoia3VhaWthbl9hcHAiLCJ0aW1lIjoxNDg3ODI4ODU4NjAwLCJwcm9wZXJ0aWVzIjp7IkhvbWVwYWdlVGFiTmFtZSI6IueDremXqCIsIlZDb21tdW5pdHlUYWJOYW1lIjoi54Ot6ZeoIiwiJG9zX3ZlcnNpb24iOiI0LjIuMiIsIkdlbmRlclR5cGUiOiLlpbPniYgiLCJGcm9tSG9tZXBhZ2VUYWJOYW1lIjoi54Ot6ZeoIiwiJGxpYl92ZXJzaW9uIjoiMS42LjM0IiwiJG5ldHdvcmtfdHlwZSI6IldJRkkiLCIkd2lmaSI6dHJ1ZSwiJG1hbnVmYWN0dXJlciI6InNhbXN1bmciLCJGcm9tSG9tZXBhZ2VVcGRhdGVEYXRlIjowLCIkc2NyZWVuX2hlaWdodCI6NTc2LCJIb21lcGFnZVVwZGF0ZURhdGUiOjAsIlByb3BlcnR5RXZlbnQiOiJSZWFkSG9tZVBhZ2UiLCJGaW5kVGFiTmFtZSI6IuaOqOiNkCIsImFidGVzdF9ncm91cCI6NDYsIiRzY3JlZW5fd2lkdGgiOjEwMjQsIiRvcyI6IkFuZHJvaWQiLCJUcmlnZ2VyUGFnZSI6IkhvbWVQYWdlIiwiJGNhcnJpZXIiOiJDTUNDIiwiJG1vZGVsIjoiR1QtUDUyMTAiLCIkYXBwX3ZlcnNpb24iOiIzLjguMSJ9LCJ0eXBlIjoidHJhY2siLCJkaXN0aW5jdF9pZCI6IkE6OTA1MTA0Mjc2Mzc1NTEwOSIsIm9yaWdpbmFsX2lkIjoiQTo5MDUxMDQyNzYzNzU1MTA5IiwiZXZlbnQiOiJSZWFkSG9tZVBhZ2UifQ%3D%3D";
private XListView xListView;
private List<String> images;
private List<String> titles;
private MyAdapter adapter;
private List<Listbean.DataBean.ComicsBean> list ;
private TextView text;
public Handler handler = new Handler(){
@Override
public void handleMessage(Message msg) {
Gson gson = new Gson();
if (msg.what==0){
Images img = gson.fromJson(msg.obj.toString(), Images.class);
List<Images.DataBean.InfosBean> infos = img.getData().getInfos();
List<Images.DataBean.InfosBean.BannersBean> banners = infos.get(0).getBanners();
for (Images.DataBean.InfosBean.BannersBean bean:banners){
images.add(bean.getPic());
titles.add(bean.getTarget_title());
new TitleBean(bean.getTarget_title()).save();
}
banner.setImages(images);
banner.setBannerTitles(titles);
banner.start();
}else{
Listbean listbean = gson.fromJson(msg.obj.toString(), Listbean.class);
List<Listbean.DataBean.ComicsBean> comics = listbean.getData().getComics();
list.addAll(comics);
adapter.notifyDataSetChanged();
}
}
};
@Nullable
@Override
public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
View view = inflater.inflate(R.layout.fragment01_1,container,false);

images = new ArrayList<>();
titles = new ArrayList<>();
list = new ArrayList<>();
text = (TextView) view.findViewById(R.id.textVvvv);
xListView = (XListView) view.findViewById(R.id.xlisview);
banner = (Banner) view.findViewById(R.id.banner);
//设置图片加载器
banner.setImageLoader(new GlideImageLoader());
//设置样式
banner.setBannerStyle(BannerConfig.CIRCLE_INDICATOR_TITLE);
//设置适配器
adapter = new MyAdapter(getActivity(),list);
xListView.setAdapter(adapter);
xListView.setPullLoadEnable(true);
xListView.setXListViewListener(this);

//获取的上一次bundle
Bundle bundle = getArguments();
int name = bundle.getInt("name");
switch (name){
case 0:banner.setVisibility(View.VISIBLE);
xListView.setVisibility(View.VISIBLE);
text.setVisibility(View.GONE);
break;
default:banner.setVisibility(View.GONE);
xListView.setVisibility(View.GONE);
text.setVisibility(View.VISIBLE);
break;
}
text.setText(name+"");
//轮播图的数据
new Thread(){
@Override
public void run() {
String s = UrlUtils.geturlPath(urlpath);
Message msg = Message.obtain();
msg.obj = s;
msg.what =0;
handler.sendMessage(msg);
}
}.start();
//xlistview的数据
new Thread(){
@Override
public void run() {
loaddata();
}

}.start();
return view;
}
private void loaddata() {
String s = UrlUtils.geturlPath(listurl);
Message msg = Message.obtain();
msg.obj = s;
msg.what =1;
handler.sendMessage(msg);
}

/**
* 停止xlistview的加载和更新
*/
private void stopp(){
xListView.stopLoadMore();
xListView.stopRefresh();
xListView.setRefreshTime("刚才");
}

/**
* 刷新信息
*/
@Override
public void onRefresh() {
new Thread(){
@Override
public void run() {
try {
sleep(2000);//2s后刷新数据
} catch (InterruptedException e) {
e.printStackTrace();
}
//先清除list里的数据
list.clear();
//重新请求数据
loaddata();
getActivity().runOnUiThread(new Runnable() {
@Override
public void run() {
stopp();
}
});
}
}.start();

}

/**
* 加载更多 因为接口问题 2s后就停止
*/
@Override
public void onLoadMore() {
new Thread(){
@Override
public void run() {
try {
sleep(2000);
} catch (InterruptedException e) {
e.printStackTrace();
}
getActivity().runOnUiThread(new Runnable() {
@Override
public void run() {
stopp();
}
});
}
}.start();

}
}



//fragment02.java

public class Fragment02 extends Fragment {

@Nullable
@Override
public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
View view = inflater.inflate(R.layout.fragment02,container,false);
return view;
}
}



//fragment03.java

public class Fragment03 extends Fragment {

@Nullable
@Override
public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
View view = inflater.inflate(R.layout.fragment03,container,false);
return view;
}
}



//fragment04.java

public class Fragment04 extends Fragment {

@Nullable
@Override
public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
View view = inflater.inflate(R.layout.fragment04,container,false);
return view;
}
}


//urlutils.java(工具类)

public class UrlUtils {
public static String geturlPath(String urlPath) {
try {
URL url = new URL(urlPath);
HttpURLConnection conn =(HttpURLConnection)url.openConnection();
conn.connect();

if(conn.getResponseCode()==200){
InputStream in = conn.getInputStream();
byte [] buff =new byte[1024];
int len =-1;
StringBuffer sb=new StringBuffer();
while ((len=in.read(buff))!=-1){
sb.append(new String(buff,0,len,"utf-8"));
}
Log.e("base", "loadData: "+sb.toString());
in.close();
return sb.toString();
}
conn.disconnect();
} catch (Exception e) {
Log.e("base", "catch----------: ");
e.printStackTrace();
}
return null;
}
}




  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
城市应急指挥系统是智慧城市建设的重要组成部分,旨在提高城市对突发事件的预防和处置能力。系统背景源于自然灾害和事故灾难频发,如汶川地震和日本大地震等,这些事件造成了巨大的人员伤亡和财产损失。随着城市化进程的加快,应急信息化建设面临信息资源分散、管理标准不统一等问题,需要通过统筹管理和技术创新来解决。 系统的设计思路是通过先进的技术手段,如物联网、射频识别、卫星定位等,构建一个具有强大信息感知和通信能力的网络和平台。这将促进不同部门和层次之间的信息共享、交流和整合,提高城市资源的利用效率,满足城市对各种信息的获取和使用需求。在“十二五”期间,应急信息化工作将依托这些技术,实现动态监控、风险管理、预警以及统一指挥调度。 应急指挥系统的建设目标是实现快速有效的应对各种突发事件,保障人民生命财产安全,减少社会危害和经济损失。系统将包括预测预警、模拟演练、辅助决策、态势分析等功能,以及应急值守、预案管理、GIS应用等基本应用。此外,还包括支撑平台的建设,如接警中心、视频会议、统一通信等基础设施。 系统的实施将涉及到应急网络建设、应急指挥、视频监控、卫星通信等多个方面。通过高度集成的系统,建立统一的信息接收和处理平台,实现多渠道接入和融合指挥调度。此外,还包括应急指挥中心基础平台建设、固定和移动应急指挥通信系统建设,以及应急队伍建设,确保能够迅速响应并有效处置各类突发事件。 项目的意义在于,它不仅是提升灾害监测预报水平和预警能力的重要科技支撑,也是实现预防和减轻重大灾害和事故损失的关键。通过实施城市应急指挥系统,可以加强社会管理和公共服务,构建和谐社会,为打造平安城市提供坚实的基础。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值