Horizontal+异步+pullTorefresh+viewPager+侧滑(XListView)

//侧拉(Xlistview)和和导航滑动
public class MainActivity extends AppCompatActivity implements View.OnClickListener,XListView.IXListViewListener{
    private HorizontalScrollView hs;
    private LinearLayout show;
    private ViewPager vp;
    private String[] titles;
    private ArrayList<TextView> list;
    private XListView xlv;
    private List<Bean2.DataBean.ComicsBean> comics;
    private ArrayList<User2> list2;
    private ViewHolder vh;
    private View view;
    private Mydatd2 mydatd2;
    private Handler handler=new Handler(){
        @Override
        public void handleMessage(Message msg) {
            super.handleMessage(msg);
            mydatd2.notifyDataSetChanged();
            close();
        }
    };
    //关闭xlistview执行的上拉下拉
    private void close() {
        xlv.stopLoadMore();
        xlv.stopRefresh();
        xlv.setRefreshTime("2017-09-17");
    }
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        hs = (HorizontalScrollView) findViewById(R.id.hs);
        show = (LinearLayout) findViewById(R.id.showtitle);
        vp = (ViewPager) findViewById(R.id.vp);
        //xlistview
        xlv = (XListView) findViewById(R.id.xlv);
        xlv.setPullLoadEnable(true);
        xlv.setPullRefreshEnable(true);
        xlv.setXListViewListener(this);
        new Thread(){
            private StringBuilder builder;
            @Override
            public void run() {
                super.run();
                try {
                    URL url = new URL("http://api.kkmh.com/v1/daily/comic_lists/0?since=0&gender=0&sa_event=eyJwcm9qZWN0Ijoia3VhaWthbl9hcHAiLCJ0aW1lIjoxNDg3NzQyMjQwNjE1LCJwcm9wZXJ0aWVzIjp7IkhvbWVwYWdlVGFiTmFtZSI6IueDremXqCIsIlZDb21tdW5pdHlUYWJOYW1lIjoi54Ot6ZeoIiwiJG9zX3ZlcnNpb24iOiI0LjQuMiIsIkdlbmRlclR5cGUiOiLlpbPniYgiLCJGcm9tSG9tZXBhZ2VUYWJOYW1lIjoi54Ot6ZeoIiwiJGxpYl92ZXJzaW9uIjoiMS42LjEzIiwiJG5ldHdvcmtfdHlwZSI6IldJRkkiLCIkd2lmaSI6dHJ1ZSwiJG1hbnVmYWN0dXJlciI6ImJpZ25veCIsIkZyb21Ib21lcGFnZVVwZGF0ZURhdGUiOjAsIiRzY3JlZW5faGVpZ2h0IjoxMjgwLCJIb21lcGFnZVVwZGF0ZURhdGUiOjAsIlByb3BlcnR5RXZlbnQiOiJSZWFkSG9tZVBhZ2UiLCJGaW5kVGFiTmFtZSI6IuaOqOiNkCIsImFidGVzdF9ncm91cCI6MTEsIiRzY3JlZW5fd2lkdGgiOjcyMCwiJG9zIjoiQW5kcm9pZCIsIlRyaWdnZXJQYWdlIjoiSG9tZVBhZ2UiLCIkY2FycmllciI6IkNoaW5hIE1vYmlsZSIsIiRtb2RlbCI6IlZQaG9uZSIsIiRhcHBfdmVyc2lvbiI6IjMuNi4yIn0sInR5cGUiOiJ0cmFjayIsImRpc3RpbmN0X2lkIjoiQTo2YWRkYzdhZTQ1MjUwMzY1Iiwib3JpZ2luYWxfaWQiOiJBOjZhZGRjN2FlNDUyNTAzNjUiLCJldmVudCI6IlJlYWRIb21lUGFnZSJ9");
                    try {
                        URLConnection connection = url.openConnection();
                        InputStream inputStream = connection.getInputStream();
                        BufferedReader reader = new BufferedReader(new InputStreamReader(inputStream));
                        builder = new StringBuilder();
                        String tem="";
                        while((tem=reader.readLine())!=null){
                            builder.append(tem);
                        }
                        Log.e("========读取到的数据=======", builder.toString());

                    } catch (IOException e) {
                        e.printStackTrace();
                    }
                } catch (MalformedURLException e) {
                    e.printStackTrace();
                }
                runOnUiThread(new Runnable() {

                    @Override
                    public void run() {
                        list2 = new ArrayList<>();
                        Gson gson = new Gson();
                        Bean2 bean2 = gson.fromJson(builder.toString(), Bean2.class);
                        comics = bean2.getData().getComics();
                        for(int j=0;j<comics.size();j++){
                            String title = comics.get(j).getTitle();
                            Bean2.DataBean.ComicsBean.TopicBean topic = comics.get(j).getTopic();
                            String cover_image_url = topic.getCover_image_url();
                            list2.add(new User2(title,cover_image_url));
                        }
                        mydatd2 = new Mydatd2();
                        xlv.setAdapter(mydatd2);
                    }
                });
            }
        }.start();

        titles = new String[]{"头条", "社会", "国内", "国际", "娱乐", "体育", "军事", "科技", "财经", "时尚"};
        list = new ArrayList<>();
        for(int i=0;i<titles.length;i++){
            TextView view = new TextView(this);
            view.setText(titles[i]);
            view.setTextSize(20);
            if(i==0){
                view.setTextColor(Color.RED);
            }else{
                view.setTextColor(Color.BLACK);

            }
            view.setOnClickListener(this);
            view.setId(i+1000);
            //设置textview控件的宽高
            LinearLayout.LayoutParams params = new LinearLayout.LayoutParams(ViewGroup.LayoutParams.WRAP_CONTENT, ViewGroup.LayoutParams.WRAP_CONTENT);
            params.setMargins(20,10,20,10);//设置内边距
            show.addView(view,params);//textview控件添加到滚动控件里面的LinearLayout布局
            list.add(view);//添加到集合
        }
        //开始做viewPager
        vp.setAdapter(new FragmentPagerAdapter(getSupportFragmentManager()) {
            @Override
            public Fragment getItem(int position) {
                if(position==0){
                    fragment2 fragment2 = new fragment2();
                    return fragment2;
                }
                return fragment.getin(list.get(position).getText().toString());
            }

            @Override
            public int getCount() {
                return titles.length;
            }
        });
        vp.setOnPageChangeListener(new ViewPager.OnPageChangeListener() {
            @Override
            public void onPageScrolled(int position, float positionOffset, int positionOffsetPixels) {

            }

            @Override
            public void onPageSelected(int position) {
                for(int i=0;i<list.size();i++){
                    if(position==i){
                        list.get(i).setTextColor(Color.RED);

                    }else{
                        list.get(i).setTextColor(Color.BLACK);

                    }
                }
                TextView textView = list.get(position);
                int width = textView.getWidth();//获取宽度
                //计算该滑到哪里
                hs.scrollTo((width+20)*position,0);//viewpager滑动时与滚动控件想配合一起滑动

            }

            @Override
            public void onPageScrollStateChanged(int state) {

            }
        });
    }

    @Override
    public void onClick(View view) {
        int id = view.getId();
        vp.setCurrentItem(id-1000);


    }


    @Override
    public void onRefresh() {
        handler.postDelayed(new Runnable() {
            @Override
            public void run() {
                list2.add(0,new User2("怪物恋人","http://f2.kkmh.com/image/170915/a56o0vmx8.webp-w640"));
            }
        },3000);
        handler.sendEmptyMessageDelayed(0,3000);

    }

    @Override
    public void onLoadMore() {
        handler.postDelayed(new Runnable() {
            @Override
            public void run() {
                list2.add(new User2("怪物恋人","http://f2.kkmh.com/image/170915/a56o0vmx8.webp-w640"));
                handler.sendEmptyMessage(0);
            }
        },3000);

    }
    class Mydatd2 extends BaseAdapter{

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

        @Override
        public Object getItem(int i) {
            return list2.get(i);
        }

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

        @Override
        public View getView(int i, View view, ViewGroup viewGroup) {
            if(view==null){
                vh = new ViewHolder();
                 view = View.inflate(MainActivity.this, R.layout.xlistviewtext, null);
                vh.name = (TextView) view.findViewById(R.id.name);
                vh.img = (ImageView) view.findViewById(R.id.img);
                view.setTag(vh);

            }else{
                vh= (ViewHolder) view.getTag();

            }
            vh.name.setText(list2.get(i).name);
            ImageLoader.getInstance().displayImage(list2.get(i).imgg, vh.img);
            return view;
        }
    }

     class ViewHolder {
         TextView name;
         ImageView img;
    }
}

/**
 * Created by HQ on 2017/9/20.
 * 接参传参
 *
public class fragment extends Fragment {
    @Nullable
    @Override
    public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {

        Bundle arguments = getArguments();
        String sss = arguments.getString("sss");
        TextView textView = new TextView(getActivity());
        textView.setText(sss);
        return textView;
    }
    public static Fragment getin(String titles){
        fragment fragment0 = new fragment();
        Bundle bundle = new Bundle();
        bundle.putString("sss",titles);
        fragment0.setArguments(bundle);
        return fragment0;
    }
}
/**
 * Created by HQ on 2017/9/20.
 * 实现pullToRefresh的上拉下拉,和无限轮播加原点
 */
public class fragment2 extends Fragment {
    private PullToRefreshListView pt;
    private StringBuilder builder;
    int i = 1;
    private ptdata ptdata;
    private List<Bean.NewslistBean> newslist;
    List<User> list = new ArrayList<User>();
    private ViewHolder vh;
    private ViewPager vp;
    private LinearLayout ll;
    private View view;
    private ArrayList<ImageView> imagelist;
    private ImageView view1;

    Handler handler = new Handler() {
        @Override
        public void handleMessage(Message msg) {
            super.handleMessage(msg);
            int i = vp.getCurrentItem() + 1;
            vp.setCurrentItem(i);
            handler.sendEmptyMessageDelayed(0, 2000);
        }
    };


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

    @Override
    public void onActivityCreated(@Nullable Bundle savedInstanceState) {
        super.onActivityCreated(savedInstanceState);
        pt = (PullToRefreshListView) view.findViewById(R.id.pt);

        //绘制viewPager子布局
        View view = View.inflate(getActivity(), R.layout.vp, null);
        //获取控件
        vp = (ViewPager) view.findViewById(R.id.vp);
        ll = (LinearLayout) view.findViewById(R.id.ll);
        //添加头布局
         ListView listView = pt.getRefreshableView();
        listView.addHeaderView(view);
        pt.setMode(PullToRefreshBase.Mode.BOTH);

        //适配器
        ptdata = new ptdata();
        pt.setAdapter(ptdata);
        handler.sendEmptyMessageDelayed(0, 2000);

        //异步线程操作
        new Mysanysk().execute("https://api.tianapi.com/wxnew/?key=8d6e3228d25298f13af4fc40ce6c9679&num=10");
        //pt监听
        //上拉下拉
        pt.setOnRefreshListener(new PullToRefreshBase.OnRefreshListener2<ListView>() {
            @Override
            public void onPullDownToRefresh(PullToRefreshBase<ListView> refreshView) {
                i = 1;
                new Mysanysk().execute("https://api.tianapi.com/wxnew/?key=8d6e3228d25298f13af4fc40ce6c9679&num=10");
            }

            @Override
            public void onPullUpToRefresh(PullToRefreshBase<ListView> refreshView) {
                i++;
                new Mysanysk().execute("https://api.tianapi.com/wxnew/?key=8d6e3228d25298f13af4fc40ce6c9679&num=10" + i);

            }
        });
        vp.addOnPageChangeListener(new ViewPager.OnPageChangeListener() {
            @Override
            public void onPageScrolled(int position, float positionOffset, int positionOffsetPixels) {

            }

            @Override
            public void onPageSelected(int position) {

                for (int i = 0; i < imagelist.size(); i++) {
                    if (position % newslist.size() == i) {
                        imagelist.get(position % newslist.size()).setImageResource(R.drawable.dot_focuable);
                    } else {
                        imagelist.get(i).setImageResource(R.drawable.dot_normal);
                    }
                }

            }

            @Override
            public void onPageScrollStateChanged(int state) {

            }
        });


    }

    //加点
    private void nodata() {
        ll.removeAllViews();
        imagelist = new ArrayList<ImageView>();
        if (imagelist != null) {
            imagelist.clear();
        }
        for (int i = 0; i < newslist.size(); i++) {
            view1 = new ImageView(getActivity());
            if (i == vp.getCurrentItem()) {
                view1.setImageResource(R.drawable.dot_focuable);
            } else {
                view1.setImageResource(R.drawable.dot_normal);
            }
            LinearLayout.LayoutParams params = new LinearLayout.LayoutParams(20, 20);
            params.setMargins(10, 0, 10, 0);
            imagelist.add(view1);
            ll.addView(view1, params);
        }

    }
    //第一步
    //异步

    class Mysanysk extends AsyncTask<String, Void, String> {
        //读取数据
        @Override
        protected String doInBackground(String... strings) {
            try {
                URL url = new URL(strings[0]);
                try {
                    URLConnection connection = url.openConnection();
                    InputStream stream = connection.getInputStream();
                    BufferedReader reader = new BufferedReader(new InputStreamReader(stream));
                    builder = new StringBuilder();
                    String tem = "";
                    while ((tem = reader.readLine()) != null) {
                        builder.append(tem);
                    }
                } catch (IOException e) {
                    e.printStackTrace();
                }
            } catch (MalformedURLException e) {
                e.printStackTrace();
            }

            Log.e("=======读取到的数据==========", builder.toString());
            return builder.toString();
        }
        //解析数据
        @Override
        protected void onPostExecute(String s) {
            super.onPostExecute(s);
            Gson gson = new Gson();
            Bean bean = gson.fromJson(builder.toString(), Bean.class);
            newslist = bean.getNewslist();
            for (int i = 0; i < newslist.size(); i++) {
                String picUrl = newslist.get(i).getPicUrl();
                String title = newslist.get(i).getTitle();
                list.add(new User(title, picUrl));
            }
            vp.setAdapter(new vpdata());
            nodata();
            ptdata.notifyDataSetChanged();
            pt.onRefreshComplete();
        }
    }
    //pt的适配器
    class ptdata extends BaseAdapter {

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

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

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

        @Override
        public View getView(int i, View view, ViewGroup viewGroup) {
            if (view == null) {
                vh = new ViewHolder();
                view = View.inflate(getActivity(), R.layout.textview, null);
                vh.name = (TextView) view.findViewById(R.id.name);
                vh.img = (ImageView) view.findViewById(R.id.img);
                view.setTag(vh);


            } else {
                vh = (ViewHolder) view.getTag();

            }
            vh.name.setText(list.get(i).name);
            ImageLoader.getInstance().displayImage(list.get(i).url, vh.img);
            return view;
        }
    }


    class ViewHolder {
        TextView name;
        ImageView img;
    }

    //vp的适配器
    class vpdata extends PagerAdapter {
        private View view;

        @Override
        public int getCount() {
            return Integer.MAX_VALUE;
        }

        @Override
        public boolean isViewFromObject(View view, Object object) {
            return view == object;
        }

        @Override
        public void destroyItem(ViewGroup container, int position, Object object) {
            container.removeView((View) object);
            //super.destroyItem(container, position, object);
        }

        @Override
        public Object instantiateItem(ViewGroup container, int position) {
            String picUrl = newslist.get(position % newslist.size()).getPicUrl();
            view = View.inflate(getActivity(), R.layout.vptextview, null);
            ImageView img = (ImageView) view.findViewById(R.id.img2);
            ImageLoader.getInstance().displayImage(picUrl, img);
            container.addView(view);
            return view;
        }
    }
}

//Bean类
public class User {
    public String name;
    public String url;

    public User(String name, String url) {
        this.name = name;
        this.url = url;
    }

    @Override
    public String toString() {
        return "User{" +
                "name='" + name + '\'' +
                ", url='" + url + '\'' +
                '}';
    }
}

public class Appi extends Application {
    @Override
    public void onCreate() {
        super.onCreate();
        ImageLoaderConfiguration build = new ImageLoaderConfiguration.Builder(this).build();
        ImageLoader.getInstance().init(build);
    }
}
//主布局
<?xml version="1.0" encoding="utf-8"?>
<android.support.v4.widget.DrawerLayout
    android:id="@+id/dl"
    xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent"
    android:layout_height="match_parent" tools:context="bbb.bwie.com.zonghelx.MainActivity">
   <LinearLayout
       android:orientation="vertical"
       android:layout_width="match_parent"
       android:layout_height="match_parent">
       <ImageView
           android:id="@+id/img"
           android:layout_width="wrap_content"
           android:layout_height="wrap_content"
           android:background="@mipmap/ic_launcher_round"
           />
    <HorizontalScrollView
        android:id="@+id/hs"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_marginTop="30dip"
        >
        <LinearLayout
            android:id="@+id/showtitle"
            android:orientation="horizontal"
            android:layout_width="match_parent"
            android:layout_height="wrap_content">
        </LinearLayout>
    </HorizontalScrollView>
       <android.support.v4.view.ViewPager
           android:id="@+id/vp"
           android:layout_width="match_parent"
           android:layout_height="match_parent">
       </android.support.v4.view.ViewPager>
   </LinearLayout>
    <LinearLayout
        android:id="@+id/aaaa"
        android:orientation="horizontal"
        android:background="@mipmap/ic_launcher_round"
        android:layout_gravity="left"
        android:choiceMode="singleChoice"
        android:layout_width="match_parent"
        android:layout_height="match_parent">
<bbb.bwie.com.zonghelx.XListView
    android:id="@+id/xlv"
    android:layout_width="match_parent"
    android:layout_height="match_parent">

</bbb.bwie.com.zonghelx.XListView>

 </LinearLayout></android.support.v4.widget.DrawerLayout>
//xlistview展示的布局
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:orientation="vertical" android:layout_width="match_parent"
    android:layout_height="match_parent">

    <TextView
        android:id="@+id/name"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content" />

    <ImageView
        android:id="@+id/img"
        android:layout_width="match_parent"
        android:layout_height="wrap_content" />

</LinearLayout>
//PullToRefreshListView布局
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:orientation="vertical" android:layout_width="match_parent"
    android:layout_height="match_parent">
    <com.handmark.pulltorefresh.library.PullToRefreshListView
        android:id="@+id/pt"
        android:layout_width="match_parent"
        android:layout_height="match_parent">

    </com.handmark.pulltorefresh.library.PullToRefreshListView>

</LinearLayout>
//viewPager布局
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:orientation="vertical" android:layout_width="match_parent"
    android:layout_height="match_parent">
    <android.support.v4.view.ViewPager
        android:layout_width="match_parent"
        android:layout_height="300dp"
        android:id="@+id/vp"
        ></android.support.v4.view.ViewPager>
    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:id="@+id/ll"
        android:orientation="horizontal"
        ></LinearLayout>

</LinearLayout>
//pullTorefresh子布局
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:orientation="vertical" android:layout_width="match_parent"
    android:layout_height="match_parent">
    <ImageView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:id="@+id/img"
        />
    <TextView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:id="@+id/name"
        />
</LinearLayout>
//图片子布局
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:orientation="vertical" android:layout_width="match_parent"
    android:layout_height="match_parent">

    <ImageView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:id="@+id/img2"
        />
</LinearLayout>
(备注:导入Xlistview依赖和pullTorefresh的依赖,依赖是自己封装的,加权限)
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Go语言(也称为Golang)是由Google开发的一种静态强类型、编译型的编程语言。它旨在成为一门简单、高效、安全和并发的编程语言,特别适用于构建高性能的服务器和分布式系统。以下是Go语言的一些主要特点和优势: 简洁性:Go语言的语法简单直观,易于学习和使用。它避免了复杂的语法特性,如继承、重载等,转而采用组合和接口来实现代码的复用和扩展。 高性能:Go语言具有出色的性能,可以媲美C和C++。它使用静态类型系统和编译型语言的优势,能够生成高效的机器码。 并发性:Go语言内置了对并发的支持,通过轻量级的goroutine和channel机制,可以轻松实现并发编程。这使得Go语言在构建高性能的服务器和分布式系统时具有天然的优势。 安全性:Go语言具有强大的类型系统和内存管理机制,能够减少运行时错误和内存泄漏等问题。它还支持编译时检查,可以在编译阶段就发现潜在的问题。 标准库:Go语言的标准库非常丰富,包含了大量的实用功能和工具,如网络编程、文件操作、加密解密等。这使得开发者可以更加专注于业务逻辑的实现,而无需花费太多时间在底层功能的实现上。 跨平台:Go语言支持多种操作系统和平台,包括Windows、Linux、macOS等。它使用统一的构建系统(如Go Modules),可以轻松地跨平台编译和运行代码。 开源和社区支持:Go语言是开源的,具有庞大的社区支持和丰富的资源。开发者可以通过社区获取帮助、分享经验和学习资料。 总之,Go语言是一种简单、高效、安全、并发的编程语言,特别适用于构建高性能的服务器和分布式系统。如果你正在寻找一种易于学习和使用的编程语言,并且需要处理大量的并发请求和数据,那么Go语言可能是一个不错的选择。
Go语言(也称为Golang)是由Google开发的一种静态强类型、编译型的编程语言。它旨在成为一门简单、高效、安全和并发的编程语言,特别适用于构建高性能的服务器和分布式系统。以下是Go语言的一些主要特点和优势: 简洁性:Go语言的语法简单直观,易于学习和使用。它避免了复杂的语法特性,如继承、重载等,转而采用组合和接口来实现代码的复用和扩展。 高性能:Go语言具有出色的性能,可以媲美C和C++。它使用静态类型系统和编译型语言的优势,能够生成高效的机器码。 并发性:Go语言内置了对并发的支持,通过轻量级的goroutine和channel机制,可以轻松实现并发编程。这使得Go语言在构建高性能的服务器和分布式系统时具有天然的优势。 安全性:Go语言具有强大的类型系统和内存管理机制,能够减少运行时错误和内存泄漏等问题。它还支持编译时检查,可以在编译阶段就发现潜在的问题。 标准库:Go语言的标准库非常丰富,包含了大量的实用功能和工具,如网络编程、文件操作、加密解密等。这使得开发者可以更加专注于业务逻辑的实现,而无需花费太多时间在底层功能的实现上。 跨平台:Go语言支持多种操作系统和平台,包括Windows、Linux、macOS等。它使用统一的构建系统(如Go Modules),可以轻松地跨平台编译和运行代码。 开源和社区支持:Go语言是开源的,具有庞大的社区支持和丰富的资源。开发者可以通过社区获取帮助、分享经验和学习资料。 总之,Go语言是一种简单、高效、安全、并发的编程语言,特别适用于构建高性能的服务器和分布式系统。如果你正在寻找一种易于学习和使用的编程语言,并且需要处理大量的并发请求和数据,那么Go语言可能是一个不错的选择。
Go语言(也称为Golang)是由Google开发的一种静态强类型、编译型的编程语言。它旨在成为一门简单、高效、安全和并发的编程语言,特别适用于构建高性能的服务器和分布式系统。以下是Go语言的一些主要特点和优势: 简洁性:Go语言的语法简单直观,易于学习和使用。它避免了复杂的语法特性,如继承、重载等,转而采用组合和接口来实现代码的复用和扩展。 高性能:Go语言具有出色的性能,可以媲美C和C++。它使用静态类型系统和编译型语言的优势,能够生成高效的机器码。 并发性:Go语言内置了对并发的支持,通过轻量级的goroutine和channel机制,可以轻松实现并发编程。这使得Go语言在构建高性能的服务器和分布式系统时具有天然的优势。 安全性:Go语言具有强大的类型系统和内存管理机制,能够减少运行时错误和内存泄漏等问题。它还支持编译时检查,可以在编译阶段就发现潜在的问题。 标准库:Go语言的标准库非常丰富,包含了大量的实用功能和工具,如网络编程、文件操作、加密解密等。这使得开发者可以更加专注于业务逻辑的实现,而无需花费太多时间在底层功能的实现上。 跨平台:Go语言支持多种操作系统和平台,包括Windows、Linux、macOS等。它使用统一的构建系统(如Go Modules),可以轻松地跨平台编译和运行代码。 开源和社区支持:Go语言是开源的,具有庞大的社区支持和丰富的资源。开发者可以通过社区获取帮助、分享经验和学习资料。 总之,Go语言是一种简单、高效、安全、并发的编程语言,特别适用于构建高性能的服务器和分布式系统。如果你正在寻找一种易于学习和使用的编程语言,并且需要处理大量的并发请求和数据,那么Go语言可能是一个不错的选择。
Go语言(也称为Golang)是由Google开发的一种静态强类型、编译型的编程语言。它旨在成为一门简单、高效、安全和并发的编程语言,特别适用于构建高性能的服务器和分布式系统。以下是Go语言的一些主要特点和优势: 简洁性:Go语言的语法简单直观,易于学习和使用。它避免了复杂的语法特性,如继承、重载等,转而采用组合和接口来实现代码的复用和扩展。 高性能:Go语言具有出色的性能,可以媲美C和C++。它使用静态类型系统和编译型语言的优势,能够生成高效的机器码。 并发性:Go语言内置了对并发的支持,通过轻量级的goroutine和channel机制,可以轻松实现并发编程。这使得Go语言在构建高性能的服务器和分布式系统时具有天然的优势。 安全性:Go语言具有强大的类型系统和内存管理机制,能够减少运行时错误和内存泄漏等问题。它还支持编译时检查,可以在编译阶段就发现潜在的问题。 标准库:Go语言的标准库非常丰富,包含了大量的实用功能和工具,如网络编程、文件操作、加密解密等。这使得开发者可以更加专注于业务逻辑的实现,而无需花费太多时间在底层功能的实现上。 跨平台:Go语言支持多种操作系统和平台,包括Windows、Linux、macOS等。它使用统一的构建系统(如Go Modules),可以轻松地跨平台编译和运行代码。 开源和社区支持:Go语言是开源的,具有庞大的社区支持和丰富的资源。开发者可以通过社区获取帮助、分享经验和学习资料。 总之,Go语言是一种简单、高效、安全、并发的编程语言,特别适用于构建高性能的服务器和分布式系统。如果你正在寻找一种易于学习和使用的编程语言,并且需要处理大量的并发请求和数据,那么Go语言可能是一个不错的选择。
Go语言(也称为Golang)是由Google开发的一种静态强类型、编译型的编程语言。它旨在成为一门简单、高效、安全和并发的编程语言,特别适用于构建高性能的服务器和分布式系统。以下是Go语言的一些主要特点和优势: 简洁性:Go语言的语法简单直观,易于学习和使用。它避免了复杂的语法特性,如继承、重载等,转而采用组合和接口来实现代码的复用和扩展。 高性能:Go语言具有出色的性能,可以媲美C和C++。它使用静态类型系统和编译型语言的优势,能够生成高效的机器码。 并发性:Go语言内置了对并发的支持,通过轻量级的goroutine和channel机制,可以轻松实现并发编程。这使得Go语言在构建高性能的服务器和分布式系统时具有天然的优势。 安全性:Go语言具有强大的类型系统和内存管理机制,能够减少运行时错误和内存泄漏等问题。它还支持编译时检查,可以在编译阶段就发现潜在的问题。 标准库:Go语言的标准库非常丰富,包含了大量的实用功能和工具,如网络编程、文件操作、加密解密等。这使得开发者可以更加专注于业务逻辑的实现,而无需花费太多时间在底层功能的实现上。 跨平台:Go语言支持多种操作系统和平台,包括Windows、Linux、macOS等。它使用统一的构建系统(如Go Modules),可以轻松地跨平台编译和运行代码。 开源和社区支持:Go语言是开源的,具有庞大的社区支持和丰富的资源。开发者可以通过社区获取帮助、分享经验和学习资料。 总之,Go语言是一种简单、高效、安全、并发的编程语言,特别适用于构建高性能的服务器和分布式系统。如果你正在寻找一种易于学习和使用的编程语言,并且需要处理大量的并发请求和数据,那么Go语言可能是一个不错的选择。
以下是一个使用Android Studio编写轮播图的示例代码: 1.首先,在你的布局文件中添加一个ViewPager和一个指示器(例如使用ViewPagerIndicator库),用于显示轮播图和当前轮播图的位置。 ```xml <androidx.viewpager.widget.ViewPager android:id="@+id/view_pager" android:layout_width="match_parent" android:layout_height="200dp"/> <com.viewpagerindicator.CirclePageIndicator android:id="@+id/indicator" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_gravity="center_horizontal" android:padding="10dp"/> ``` 2.在你的Activity或Fragment中,设置ViewPager的Adapter,并将ViewPager和指示器绑定在一起。 ```java // 获取ViewPager和指示器 ViewPager viewPager = findViewById(R.id.view_pager); CirclePageIndicator indicator = findViewById(R.id.indicator); // 设置ViewPager的Adapter MyPagerAdapter adapter = new MyPagerAdapter(getSupportFragmentManager()); viewPager.setAdapter(adapter); // 将ViewPager和指示器绑定在一起 indicator.setViewPager(viewPager); ``` 3.创建一个PagerAdapter,用于管理ViewPager中的页面。 ```java public class MyPagerAdapter extends FragmentPagerAdapter { private static final int NUM_PAGES = 3; public MyPagerAdapter(FragmentManager fm) { super(fm); } @Override public Fragment getItem(int position) { // 根据位置返回不同的Fragment switch (position) { case 0: return new Fragment1(); case 1: return new Fragment2(); case 2: return new Fragment3(); default: return null; } } @Override public int getCount() { return NUM_PAGES; } } ``` 4.创建三个Fragment,用于显示不同的轮播图。 ```java public class Fragment1 extends Fragment { @Nullable @Override public View onCreateView(@NonNull LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) { // 创建一个ImageView,并设置图片资源 ImageView imageView = new ImageView(getContext()); imageView.setImageResource(R.drawable.image1); return imageView; } } public class Fragment2 extends Fragment { @Nullable @Override public View onCreateView(@NonNull LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) { // 创建一个ImageView,并设置图片资源 ImageView imageView = new ImageView(getContext()); imageView.setImageResource(R.drawable.image2); return imageView; } } public class Fragment3 extends Fragment { @Nullable @Override public View onCreateView(@NonNull LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) { // 创建一个ImageView,并设置图片资源 ImageView imageView = new ImageView(getContext()); imageView.setImageResource(R.drawable.image3); return imageView; } } ```

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值