侧滑栏&动态添加轮播图下的按钮&shape绘制按钮

来源:互联网 发布:mobi for mac 编辑:程序博客网 时间:2024/05/21 10:24
//Shape绘制形状//选中状态
<?xml version="1.0" encoding="utf-8"?><shape xmlns:android="http://schemas.android.com/apk/res/android"    android:shape="rectangle" >    <solid android:color="#ff0000" />        <corners android:radius="5dip" /></shape>
//Shape绘制形状//未选中状态
<?xml version="1.0" encoding="utf-8"?><shape xmlns:android="http://schemas.android.com/apk/res/android"    android:shape="rectangle" >    <solid android:color="#0000cc" />    <corners android:radius="5dip" /></shape>

//Layout布局
<?xml version="1.0" encoding="utf-8"?><android.support.v4.widget.DrawerLayout 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="com.bwie.pm2.MainActivity">    <LinearLayout        android:layout_width="200dp"        android:layout_height="match_parent"        android:layout_gravity="left"        android:background="#FFFF00"        android:choiceMode="singleChoice">        <ListView            android:id="@+id/lv"            android:layout_width="wrap_content"            android:layout_height="match_parent" />    </LinearLayout>    <RelativeLayout        android:layout_width="match_parent"        android:layout_height="match_parent">        <android.support.v4.view.ViewPager            android:id="@+id/vp"            android:layout_width="match_parent"            android:layout_height="200dp">        </android.support.v4.view.ViewPager>        <LinearLayout            android:id="@+id/li_dot"            android:layout_width="match_parent"            android:layout_height="wrap_content"            android:layout_marginTop="180dp"            android:orientation="horizontal"></LinearLayout>    </RelativeLayout></android.support.v4.widget.DrawerLayout>
//MainActivity
package com.bwie.pm2;import android.os.Bundle;import android.os.Handler;import android.os.Message;import android.support.v4.view.ViewPager;import android.support.v7.app.AppCompatActivity;import android.util.Log;import android.widget.ArrayAdapter;import android.widget.ImageView;import android.widget.LinearLayout;import android.widget.ListView;import com.bwie.pm2.adapter.lv_adapter;import com.bwie.pm2.adapter.vp_adapter;import com.bwie.pm2.bean.jsonbean;import com.bwie.pm2.bean.lv_bean;import com.google.gson.Gson;import java.io.BufferedReader;import java.io.IOException;import java.io.InputStream;import java.io.InputStreamReader;import java.net.HttpURLConnection;import java.net.MalformedURLException;import java.net.URL;import java.util.ArrayList;import java.util.LinkedList;import java.util.List;import java.util.Timer;import java.util.TimerTask;public class MainActivity extends AppCompatActivity {    private ListView lv;    private LinkedList<lv_bean> lv_list = new LinkedList<lv_bean>();    private ArrayAdapter<String> adapter;    private String urls = "http://api.kkmh.com/v1/daily/comic_lists/0?since=0&gender=" +            "0&sa_event=eyJwcm9qZWN0Ijoia3VhaWthbl9hcHAiLCJ0aW1lIjoxNDg3NzQyMjQwNjE1" +            "LCJwcm9wZXJ0aWVzIjp7IkhvbWVwYWdlVGFiTmFtZSI6IueDremXqCIsIlZDb21tdW5pdHl" +            "UYWJOYW1lIjoi54Ot6ZeoIiwiJG9zX3ZlcnNpb24iOiI0LjQuMiIsIkdlbmRlclR5cGUiOi" +            "LlpbPniYgiLCJGcm9tSG9tZXBhZ2VUYWJOYW1lIjoi54Ot6ZeoIiwiJGxpYl92ZXJzaW9uI" +            "joiMS42LjEzIiwiJG5ldHdvcmtfdHlwZSI6IldJRkkiLCIkd2lmaSI6dHJ1ZSwiJG1hbnVm" +            "YWN0dXJlciI6ImJpZ25veCIsIkZyb21Ib21lcGFnZVVwZGF0ZURhdGUiOjAsIiRzY3JlZW5" +            "faGVpZ2h0IjoxMjgwLCJIb21lcGFnZVVwZGF0ZURhdGUiOjAsIlByb3BlcnR5RXZlbnQiOi" +            "JSZWFkSG9tZVBhZ2UiLCJGaW5kVGFiTmFtZSI6IuaOqOiNkCIsImFidGVzdF9ncm91cCI6M" +            "TEsIiRzY3JlZW5fd2lkdGgiOjcyMCwiJG9zIjoiQW5kcm9pZCIsIlRyaWdnZXJQYWdlIjoi" +            "SG9tZVBhZ2UiLCIkY2FycmllciI6IkNoaW5hIE1vYmlsZSIsIiRtb2RlbCI6IlZQaG9uZSI" +            "sIiRhcHBfdmVyc2lvbiI6IjMuNi4yIn0sInR5cGUiOiJ0cmFjayIsImRpc3RpbmN0X2lkIj" +            "oiQTo2YWRkYzdhZTQ1MjUwMzY1Iiwib3JpZ2luYWxfaWQiOiJBOjZhZGRjN2FlNDUyNTAzN" +            "jUiLCJldmVudCI6IlJlYWRIb21lUGFnZSJ9";    private ViewPager viewpage;    private ArrayList<lv_bean> vp_list = new ArrayList<lv_bean>();    private LinearLayout li_dot;    private ArrayList<ImageView> dot_list = new ArrayList<ImageView>();    private ImageView imgView;    @Override    protected void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        setContentView(R.layout.activity_main);        initView();//初始化控件        initData();//初始化数据//        initDot();//初始化轮播图下的点        carouselImage();//轮播的方法    }    //初始化各个控件的id    private void initView() {        lv = (ListView) findViewById(R.id.lv);        viewpage = (ViewPager) findViewById(R.id.vp);        li_dot = (LinearLayout) findViewById(R.id.li_dot);    }    /*    在轮播图里面加点,使轮播图在滚动的时候,点可以随之更换     */    private void initDot() {        for (int i = 0; i < vp_list.size(); i++) {            imgView = new ImageView(MainActivity.this);            if (i == 0) {                imgView.setImageResource(R.drawable.dot_focuable);            } else {                imgView.setImageResource(R.drawable.dot_normal);            }            LinearLayout.LayoutParams params = new LinearLayout.LayoutParams(20, 20);            params.setMargins(20, 10, 10, 10);            li_dot.addView(imgView, params);            dot_list.add(imgView);        }        //viewpage的适配器        viewpage.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 < dot_list.size(); i++) {                    if (i == position % dot_list.size()) {//如果图片的当前下标等于点的当前下标,就设置图片                        dot_list.get(i).setImageResource(R.drawable.dot_focuable);                    } else {                        dot_list.get(i).setImageResource(R.drawable.dot_normal);                    }                }            }            @Override            public void onPageScrollStateChanged(int state) {            }        });    }    //计时操作,实现轮播    private void carouselImage() {        Timer timer = new Timer();        timer.schedule(new TimerTask() {            @Override            public void run() {                MainActivity.this.runOnUiThread(new Runnable() {                    @Override                    public void run() {                        int i = viewpage.getCurrentItem() + 1;                        viewpage.setCurrentItem(i);                        if (i >= vp_list.size()) {                            viewpage.setCurrentItem(0);                        }                    }                });            }        }, 2000, 3000);    }    Handler handler = new Handler() {        @Override        public void handleMessage(Message msg) {            super.handleMessage(msg);            //解析网络json串,自动解析            Gson gson = new Gson();            jsonbean jsonbean = gson.fromJson((String) msg.obj, jsonbean.class);            com.bwie.pm2.bean.jsonbean.DataBean data = jsonbean.getData();            List<com.bwie.pm2.bean.jsonbean.DataBean.ComicsBean> comics = data.getComics();            for (int i = 0; i < comics.size(); i++) {                String title_url = comics.get(i).getTitle();                String image_url = comics.get(i).getCover_image_url();                lv_list.add(new lv_bean(title_url, image_url));                vp_list.add(new lv_bean(image_url));            }            lv.setAdapter(new lv_adapter(MainActivity.this, lv_list));            viewpage.setAdapter(new vp_adapter(MainActivity.this, vp_list));            initDot();//初始化轮播图下的点        }    };    //初始化数据    private void initData() {        new Thread() {            @Override            public void run() {                super.run();                try {                    URL url = new URL(urls);                    HttpURLConnection urlConnection = (HttpURLConnection) url.openConnection();                    int responseCode = urlConnection.getResponseCode();                    //判断返回的响应码                    if (responseCode == 200) {                        InputStream inputStream = urlConnection.getInputStream();                        BufferedReader reader = new BufferedReader(new InputStreamReader(inputStream));                        StringBuilder builder = new StringBuilder();                        String stringTemp = "";                        while ((stringTemp = reader.readLine()) != null) {                            builder.append(stringTemp);                        }                        //发送线程                        Message message = new Message();                        message.obj = builder.toString();                        Log.e("asdasd", "rerere" + message.obj);                        handler.sendMessage(message);                    }                } catch (MalformedURLException e) {                    e.printStackTrace();                } catch (IOException e) {                    e.printStackTrace();                }            }        }.start();    }}
//PagerAdapter适配器
package com.bwie.day14;import android.content.Context;import android.support.v4.view.PagerAdapter;import android.view.View;import android.view.ViewGroup;import android.widget.ImageView;import com.nostra13.universalimageloader.core.ImageLoader;import java.util.ArrayList;/** * author:Created by WangZhiQiang on 2017/10/17. */public class vpadapter extends PagerAdapter {    private Context con;    private ArrayList<vpbean> list;    private View view;    public vpadapter(Context con, ArrayList<vpbean> list) {        this.con = con;        this.list = list;    }    @Override    public int getCount() {//特别注意        return Integer.MAX_VALUE;    }    @Override    public Object instantiateItem(ViewGroup container, int position) {        view = View.inflate(con, R.layout.layout_info, null);        ImageView img = (ImageView) view.findViewById(R.id.img);//特别注意list.get(position % list.size()).getImg();就可以无限轮播了        ImageLoader.getInstance().displayImage(list.get(position % list.size()).getImg(), img);        container.addView(view);        return view;    }    @Override    public void destroyItem(ViewGroup container, int position, Object object) {//        super.destroyItem(container, position, object);        container.removeView((View) object);    }    @Override    public boolean isViewFromObject(View view, Object object) {        return view == object;    }}


//MainActivity
原创粉丝点击