侧拉+轮播+刷新
来源:互联网 发布:国家旅游局公务员 知乎 编辑:程序博客网 时间: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
- 侧拉+轮播+刷新
- PullToFreshListView上拉刷新 + banner轮播+侧拉
- ionic的侧滑,无限轮播,上拉刷新下拉加载
- 侧拉+TabLayout+轮播+XListView
- 图片自动轮播+上拉加载下拉刷新+侧滑菜单+小圆点
- android 上拉下拉刷新和banner轮播广告条 Github 项推荐
- XlistView的上拉刷新下拉加载 和Fragment 和无限轮播
- XlistView上拉刷新下拉加载+轮播+添加头布局
- Android 开发中PullToRefreshScrollView上拉刷新,Banner实现无限轮播
- RecyclerView的上拉加载下拉刷新和viewpager自动有点无限轮播
- PullToRefresh下拉刷新、上拉加载更多ViewPage+Handler完成无限轮播
- viewpager+handler轮播;xlistview上下拉刷新;webView显示一个网页
- banner实现无限轮播+下拉刷新上拉加载+ 下拉时 listview 和轮播图一起刷新
- 侧拉 横向滑动tablayout 无限轮播
- 侧拉+pullToRefresh+无限轮播+tabLayout+fragment
- ionic+侧滑+轮播+刷新
- 无限轮播+pulltorefresh刷新
- 刷新页面 数组轮播
- GreenDao
- Linux命令详解
- cocos android 上传图片
- 关于untiy基础学习之路
- utils
- 侧拉+轮播+刷新
- cmd常用的操作(累积)
- SSL certificate problem: unable to get local issuer certificate
- Docker 容器镜像删除
- SQL笔记-SQL Server
- 【Scikit-Learn 中文文档 】 ApacheCN
- 阻止a标签默认行为的几种简单方法
- [转]【OpenCV入门教程之九】 非线性滤波专场:中值滤波、双边滤波
- PullToRefreshListView+Tablayout+Fragment+DrawerLayout