侧拉+轮播+刷新

来源:互联网 发布:国家旅游局公务员 知乎 编辑:程序博客网 时间:2024/06/06 00:48

xml


<uses-permission android:name="android.permission.INTERNET"></uses-permission><uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"></uses-permission>

<?xml version="1.0" encoding="utf-8"?><android.support.v4.widget.DrawerLayout    xmlns:android="http://schemas.android.com/apk/res/android"    android:layout_width="match_parent"    android:layout_height="match_parent"    android:id="@+id/drawer">    <LinearLayout        android:layout_width="match_parent"        android:layout_height="match_parent"        android:orientation="vertical"        android:id="@+id/lin_content">        <FrameLayout            android:layout_width="match_parent"            android:layout_height="0dp"            android:layout_weight="9"            android:id="@+id/frame">        </FrameLayout>        <RadioGroup            android:layout_width="match_parent"            android:layout_height="0dp"            android:layout_weight="1"            android:id="@+id/rg"            android:orientation="horizontal">            <RadioButton                android:id="@+id/rb1"                android:layout_width="0dp"                android:layout_weight="1"                android:layout_height="match_parent"                android:text="首页"                android:button="@null"                android:layout_gravity="center"                android:gravity="center"                android:textColor="#f00"/>            <RadioButton                android:id="@+id/rb2"                android:layout_width="0dp"                android:layout_weight="1"                android:layout_height="match_parent"                android:text="分类"                android:button="@null"                android:layout_gravity="center"                android:gravity="center"/>            <RadioButton                android:id="@+id/rb3"                android:layout_width="0dp"                android:layout_weight="1"                android:layout_height="match_parent"                android:text="发现"                android:button="@null"                android:layout_gravity="center"                android:gravity="center"/>            <RadioButton                android:id="@+id/rb4"                android:layout_width="0dp"                android:layout_weight="1"                android:layout_height="match_parent"                android:text="购物车"                android:button="@null"                android:layout_gravity="center"                android:gravity="center"/>            <RadioButton                android:id="@+id/rb5"                android:layout_width="0dp"                android:layout_weight="1"                android:layout_height="match_parent"                android:text="我的"                android:button="@null"                android:layout_gravity="center"                android:gravity="center"/>        </RadioGroup>    </LinearLayout>    <LinearLayout        android:layout_width="320dp"        android:layout_height="match_parent"        android:orientation="vertical"        android:layout_gravity="start"        android:id="@+id/menu"        android:background="#f0f">        <ImageView            android:layout_width="100dp"            android:layout_height="100dp"            android:src="@mipmap/ic_launcher"            android:layout_gravity="center" />        <TextView            android:layout_width="wrap_content"            android:layout_height="50dp"            android:text="个人设置"            android:layout_gravity="center"            android:gravity="center"/>        <TextView            android:layout_width="wrap_content"            android:layout_height="50dp"            android:text="缓存"            android:layout_gravity="center"            android:gravity="center"/>        <TextView            android:layout_width="wrap_content"            android:layout_height="50dp"            android:text="夜间模式"            android:layout_gravity="center"            android:gravity="center"/>        <TextView            android:layout_width="wrap_content"            android:layout_height="50dp"            android:text="配置"            android:layout_gravity="center"            android:gravity="center"/>    </LinearLayout></android.support.v4.widget.DrawerLayout>


<?xml version="1.0" encoding="utf-8"?><com.handmark.pulltorefresh.library.PullToRefreshScrollView    xmlns:android="http://schemas.android.com/apk/res/android"    android:layout_width="match_parent"    android:layout_height="match_parent"    xmlns:ptr="http://schemas.android.com/apk/res-auto"    ptr:ptrDrawable="@drawable/default_ptr_flip"    ptr:ptrAnimationStyle="flip"    ptr:ptrHeaderBackground="#383838"    ptr:ptrHeaderTextColor="#FFFFFF"    android:id="@+id/psv"    android:orientation="vertical">    <LinearLayout        android:layout_width="match_parent"        android:layout_height="match_parent"        android:orientation="vertical">        <com.youth.banner.Banner            android:layout_width="match_parent"            android:layout_height="200dp"            android:id="@+id/banner">        </com.youth.banner.Banner>        <com.example.monthtest1.MyGridView            android:id="@+id/gv"            android:layout_width="match_parent"            android:layout_height="match_parent"            android:numColumns="2">        </com.example.monthtest1.MyGridView>    </LinearLayout></com.handmark.pulltorefresh.library.PullToRefreshScrollView>



<?xml version="1.0" encoding="utf-8"?><LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"    android:layout_width="match_parent"    android:layout_height="match_parent"    android:orientation="vertical">    <ImageView        android:id="@+id/img"        android:layout_width="100dp"        android:layout_height="100dp"/>    <TextView        android:layout_width="wrap_content"        android:layout_height="wrap_content"        android:id="@+id/title"/></LinearLayout>

NetStateUtil

import android.app.AlertDialog;import android.content.Context;import android.content.DialogInterface;import android.content.Intent;import android.net.ConnectivityManager;import android.net.NetworkInfo;public class NetStateUtil {    public static boolean isConn(Context context) {        boolean bisConnFlag = false;        ConnectivityManager conManager = (ConnectivityManager) context.getSystemService(Context.CONNECTIVITY_SERVICE);        NetworkInfo network = conManager.getActiveNetworkInfo();        if (network != null) {            bisConnFlag = conManager.getActiveNetworkInfo().isAvailable();        }        return bisConnFlag;    }    public static void showNoNetWorkDlg(final Context context) {        AlertDialog.Builder builder = new AlertDialog.Builder(context);        builder.setIcon(R.mipmap.ic_launcher)         //                .setTitle(R.string.app_name)            //                .setMessage("当前无网络").setPositiveButton("设置", new DialogInterface.OnClickListener() {            @Override            public void onClick(DialogInterface dialog, int which) {                // 跳转到系统的网络设置界面                Intent intent = null;                // 先判断当前系统版本                if (android.os.Build.VERSION.SDK_INT > 10) {  // 3.0以上                    intent = new Intent(android.provider.Settings.ACTION_WIRELESS_SETTINGS);                } else {                    intent = new Intent();                    intent.setClassName("com.android.settings", "com.android.settings.WirelessSettings");                }                context.startActivity(intent);            }        }).setNegativeButton("知道了", null).show();    }}


MainActivity

import android.graphics.Color;import android.support.annotation.IdRes;import android.support.v4.widget.DrawerLayout;import android.support.v7.app.AppCompatActivity;import android.os.Bundle;import android.util.Log;import android.view.View;import android.widget.ImageView;import android.widget.LinearLayout;import android.widget.RadioButton;import android.widget.RadioGroup;import android.widget.Toast;public class MainActivity extends AppCompatActivity {    private DrawerLayout drawer;    private LinearLayout menu;    private RadioGroup rg;    private RadioButton rb1;    private RadioButton rb2;    private RadioButton rb3;    private RadioButton rb4;    private RadioButton rb5;    @Override    protected void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        setContentView(R.layout.activity_main);        drawer = (DrawerLayout) findViewById(R.id.drawer);        menu = (LinearLayout) findViewById(R.id.menu);        rg = (RadioGroup) findViewById(R.id.rg);        rb1 = (RadioButton) findViewById(R.id.rb1);        rb2 = (RadioButton) findViewById(R.id.rb2);        rb3 = (RadioButton) findViewById(R.id.rb3);        rb4 = (RadioButton) findViewById(R.id.rb4);        rb5 = (RadioButton) findViewById(R.id.rb5);        getSupportFragmentManager().beginTransaction().replace(R.id.frame,new F1()).commit();        rg.setOnCheckedChangeListener(new RadioGroup.OnCheckedChangeListener() {            @Override            public void onCheckedChanged(RadioGroup radioGroup, @IdRes int i) {                switch (i){                    case R.id.rb1:                        getSupportFragmentManager().beginTransaction().replace(R.id.frame,new F1()).commit();                        rb1.setTextColor(Color.RED);                        rb2.setTextColor(Color.BLACK);                        rb3.setTextColor(Color.BLACK);                        rb4.setTextColor(Color.BLACK);                        rb5.setTextColor(Color.BLACK);                        break;                    case R.id.rb2:                        getSupportFragmentManager().beginTransaction().replace(R.id.frame,new F2()).commit();                        rb2.setTextColor(Color.RED);                        rb1.setTextColor(Color.BLACK);                        rb3.setTextColor(Color.BLACK);                        rb4.setTextColor(Color.BLACK);                        rb5.setTextColor(Color.BLACK);                        break;                }            }        });        drawer.setDrawerListener(new DrawerLayout.DrawerListener() {            @Override            public void onDrawerSlide(View drawerView, float slideOffset) {            }            @Override            public void onDrawerOpened(View drawerView) {                Toast.makeText(MainActivity.this, "侧拉菜单已打开", Toast.LENGTH_SHORT).show();                //Log.i("TAG", "侧拉菜单打开了");            }            @Override            public void onDrawerClosed(View drawerView) {                Toast.makeText(MainActivity.this, "侧拉菜单已关闭", Toast.LENGTH_SHORT).show();                //Log.i("TAG", "侧拉菜单关闭了");            }            @Override            public void onDrawerStateChanged(int newState) {            }        });        boolean conn = NetStateUtil.isConn(MainActivity.this);        if(conn){            Toast.makeText(this,"已经联网了",Toast.LENGTH_SHORT).show();        }else {            Toast.makeText(this,"没联网,请连接网络",Toast.LENGTH_SHORT).show();        }        menu.setOnClickListener(new View.OnClickListener() {           @Override           public void onClick(View view) {                drawer.closeDrawer(menu);           }       });    }}

F1

import android.os.Bundle;import android.support.annotation.Nullable;import android.support.v4.app.Fragment;import android.util.Log;import android.view.LayoutInflater;import android.view.View;import android.view.ViewGroup;import android.widget.GridView;import android.widget.ScrollView;import android.widget.Toast;import com.google.gson.Gson;import com.handmark.pulltorefresh.library.ILoadingLayout;import com.handmark.pulltorefresh.library.PullToRefreshBase;import com.handmark.pulltorefresh.library.PullToRefreshScrollView;import com.youth.banner.Banner;import java.util.ArrayList;import java.util.List;public class F1 extends Fragment{    private GridView gv;    private Banner banner;    private PullToRefreshScrollView psv;    private int pageIndex=1;    private int opertype=1;    private MyAdapter adapter;    private List<Result.NewslistBean> list=new ArrayList<>();    private String url="http://api.tianapi.com/guonei/?key=796e2be73bfe960de4e11807f5bef861&num=10";    @Nullable    @Override    public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {        View v = inflater.inflate(R.layout.f1, container,false);        psv = (PullToRefreshScrollView) v.findViewById(R.id.psv);        banner = (Banner) v.findViewById(R.id.banner);        gv = (GridView) v.findViewById(R.id.gv);        return v;    }    @Override    public void onActivityCreated(@Nullable Bundle savedInstanceState) {        super.onActivityCreated(savedInstanceState);        //Toast.makeText(getActivity(),"haohaoxuexi",Toast.LENGTH_SHORT).show();        initBanner();        requestData();        intitPullToRefresh();    }    private void setAdapter(){        if(adapter==null){            adapter = new MyAdapter(list, getActivity());            gv.setAdapter(adapter);        }else {            adapter.notifyDataSetChanged();        }    }    public void requestData(){        MyAsynTask myAsynTask=new MyAsynTask(new MyAsynTask.Icallbacks() {            @Override            public void updateUiByjson(String jsonstr) {                Gson gson=new Gson();                Result result = gson.fromJson(jsonstr, Result.class);                if(opertype==1){                    list.clear();                    list.addAll(0,result.getNewslist());                    Log.d("zzz","********"+list.get(0).getTitle());                }else {                    list.addAll(result.getNewslist());                }                setAdapter();                psv.postDelayed(new Runnable() {                    @Override                    public void run() {                        psv.onRefreshComplete();                    }                },500);            }        });        myAsynTask.execute(url);    }    public void intitPullToRefresh(){        psv.setMode(PullToRefreshBase.Mode.BOTH);        ILoadingLayout startLayout = psv.getLoadingLayoutProxy(true, false);        startLayout.setPullLabel("下拉刷新");        startLayout.setRefreshingLabel("正在刷新");        startLayout.setReleaseLabel("放开刷新");        ILoadingLayout endLayout = psv.getLoadingLayoutProxy(false, true);        endLayout.setPullLabel("上拉刷新");        endLayout.setRefreshingLabel("正在刷新");        endLayout.setReleaseLabel("放开刷新");        psv.setOnRefreshListener(new PullToRefreshBase.OnRefreshListener2<ScrollView>() {            @Override            public void onPullDownToRefresh(PullToRefreshBase<ScrollView> pullToRefreshBase) {                pageIndex=1;                opertype=1;                requestData();            }            @Override            public void onPullUpToRefresh(PullToRefreshBase<ScrollView> pullToRefreshBase) {                pageIndex++;                opertype=2;                requestData();            }        });    }    public void initBanner(){        List<String> urls=new ArrayList<>();        urls.add("http://pic8.nipic.com/20100701/5290458_114840036316_2.jpg");        urls.add("http://pic2.nipic.com/20090424/1468853_230119053_2.jpg");        urls.add("http://img3.3lian.com/2013/s1/20/d/57.jpg");        urls.add("http://pic39.nipic.com/20140226/18071023_164300608000_2.jpg");        urls.add("http://a0.att.hudong.com/15/08/300218769736132194086202411_950.jpg");        banner.setImageLoader(new MyBannerLoader());//添加自定义的图片加载器        banner.setImages(urls);//设置图片资源        banner.start();    }}


MyAdapter

import android.content.Context;import android.graphics.Bitmap;import android.view.View;import android.view.ViewGroup;import android.widget.BaseAdapter;import android.widget.ImageView;import android.widget.TextView;import com.nostra13.universalimageloader.core.DisplayImageOptions;import com.nostra13.universalimageloader.core.ImageLoader;import com.nostra13.universalimageloader.core.display.RoundedBitmapDisplayer;import com.nostra13.universalimageloader.utils.L;import java.util.List;public class MyAdapter extends BaseAdapter{    private List<Result.NewslistBean> list;    private Context context;    private DisplayImageOptions optionsoptions;    public MyAdapter(List<Result.NewslistBean> list, Context context) {        this.list = list;        this.context = context;            optionsoptions= new DisplayImageOptions.Builder()                .cacheInMemory(true)//使用内存缓存                .cacheOnDisk(true)//使用磁盘缓存                .bitmapConfig(Bitmap.Config.RGB_565)//设置图片格式                .showImageOnLoading(R.mipmap.ic_launcher)//设置正在下载的图片                .showImageForEmptyUri(R.mipmap.ic_launcher)//url为空或请求的资源不存在时                .showImageOnFail(R.mipmap.ic_launcher)//下载失败时显示的图片                .displayer(new RoundedBitmapDisplayer(30))//设置圆角,参数代表度数                .build();    }    @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) {        ViewHolder vh;        if(view==null){            vh = new ViewHolder();            view = View.inflate(context, R.layout.item, null);            vh.img=view.findViewById(R.id.img);            vh.title=view.findViewById(R.id.title);            view.setTag(vh);        }else {            vh = (ViewHolder) view.getTag();        }        vh.title.setText(list.get(i).getTitle());        String picUrl = list.get(i).getPicUrl();        ImageLoader.getInstance().displayImage(picUrl,vh.img,optionsoptions);        return view;    }    class ViewHolder{        ImageView img;        TextView title;    }}

MyApplication

import android.app.Application;import com.nostra13.universalimageloader.cache.disc.impl.UnlimitedDiscCache;import com.nostra13.universalimageloader.cache.disc.naming.Md5FileNameGenerator;import com.nostra13.universalimageloader.core.ImageLoader;import com.nostra13.universalimageloader.core.ImageLoaderConfiguration;import java.io.File;public class MyApplication extends Application{    @Override    public void onCreate() {        super.onCreate();        File cacheFile = getExternalCacheDir();        ImageLoaderConfiguration config = new ImageLoaderConfiguration.Builder(this)                .memoryCacheExtraOptions(480, 800)//缓存图片最大的长和宽                .threadPoolSize(2)//线程池的数量                .threadPriority(4)                .memoryCacheSize(2 * 1024 * 1024)//设置内存缓存区大小                .diskCacheSize(20 * 1024 * 1024)//设置sd卡缓存区大小                .diskCache(new UnlimitedDiscCache(cacheFile))//自定义缓存目录                .writeDebugLogs()//打印日志内容                .diskCacheFileNameGenerator(new Md5FileNameGenerator())//给缓存的文件名进行md5加密处理                .build();        ImageLoader.getInstance().init(config);    }}

MyAsynTask

import android.os.AsyncTask;import android.util.Log;import java.io.ByteArrayOutputStream;import java.io.InputStream;import java.net.HttpURLConnection;import java.net.MalformedURLException;import java.net.URL;import java.net.URLConnection;public class MyAsynTask extends AsyncTask<String,Void,String>{    private Icallbacks icallbacks;    public MyAsynTask(Icallbacks icallbacks) {        this.icallbacks = icallbacks;    }    @Override    protected String doInBackground(String... strings) {        try {            URL url=new URL(strings[0]);            HttpURLConnection connection = (HttpURLConnection) url.openConnection();            connection.setRequestMethod("GET");            connection.setReadTimeout(2000);            connection.setConnectTimeout(2000);            int code = connection.getResponseCode();            if(code==200){                InputStream inputStream = connection.getInputStream();                ByteArrayOutputStream bos=new ByteArrayOutputStream();                byte[] bytes=new byte[1024];                int len=0;                while ((len=inputStream.read(bytes))!=-1){                    bos.write(bytes,0,len);                }                String string = bos.toString();                Log.d("zzz","string"+string);                bos.close();                return string;            }        } catch (Exception e) {            e.printStackTrace();        }        return null;    }    @Override    protected void onPostExecute(String s) {        super.onPostExecute(s);        icallbacks.updateUiByjson(s);    }    public interface Icallbacks{        void updateUiByjson(String jsonstr);    }}

MyBannerLoader

import android.content.Context;import android.widget.ImageView;import com.youth.banner.loader.ImageLoader;public class MyBannerLoader extends ImageLoader{    @Override    public void displayImage(Context context, Object path, ImageView imageView) {        com.nostra13.universalimageloader.core.ImageLoader.getInstance().displayImage(path.toString(),imageView);    }}

MyGridView

import android.content.Context;import android.util.AttributeSet;import android.widget.GridView;public class MyGridView extends GridView{    public MyGridView(Context context) {        super(context);    }    public MyGridView(Context context, AttributeSet attrs) {        super(context, attrs);    }    public MyGridView(Context context, AttributeSet attrs, int defStyleAttr) {        super(context, attrs, defStyleAttr);    }    @Override    protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) {        int expandSpec = MeasureSpec.makeMeasureSpec(Integer.MAX_VALUE >> 2,                MeasureSpec.AT_MOST);        super.onMeasure(widthMeasureSpec, expandSpec);    }}



阅读全文
0 0
原创粉丝点击