没有侧滑菜单的一个案例
来源:互联网 发布:kylin apache 编辑:程序博客网 时间:2024/06/07 02:40
//第一个是主布局文件
//activity_main.xml
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" tools:context="com.bawei.administrator.month10_demolianxi01.MainActivity" android:orientation="vertical"> <FrameLayout android:layout_width="match_parent" android:layout_height="0dp" android:layout_weight="9" android:id="@+id/frag"> </FrameLayout> <RadioGroup android:id="@+id/rg" android:layout_width="match_parent" android:layout_height="0dp" android:layout_weight="1" android:orientation="horizontal"> <RadioButton android:id="@+id/btn1" android:layout_width="0dp" android:layout_weight="1" android:button="@null" android:text="首页" android:gravity="center" android:layout_height="match_parent" /> <RadioButton android:id="@+id/btn2" android:layout_width="0dp" android:layout_weight="1" android:button="@null" android:text="发现" android:gravity="center" android:layout_height="match_parent" /> <RadioButton android:id="@+id/btn3" android:layout_width="0dp" android:text="下载" android:gravity="center" android:layout_height="match_parent" android:layout_weight="1" android:button="@null" /> <RadioButton android:id="@+id/btn4" android:layout_width="0dp" android:layout_weight="1" android:text="我的" android:gravity="center" android:button="@null" android:layout_height="match_parent" /> </RadioGroup></LinearLayout>//然后开始写FrameLayout里面的Fragment布局文件(只有fragment1里面有东西,所以只有一个)
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" xmlns:app="http://schemas.android.com/apk/res-auto" android:layout_height="match_parent" android:orientation="vertical"> <android.support.design.widget.TabLayout android:id="@+id/tab" android:layout_width="match_parent" android:layout_height="40dp" android:background="@android:color/holo_blue_bright" app:tabIndicatorColor="@android:color/white" app:tabSelectedTextColor="@android:color/darker_gray" app:tabTextColor="@android:color/white"></android.support.design.widget.TabLayout> <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>//MainActivity类import android.os.Bundle;import android.support.annotation.IdRes;import android.support.v4.app.Fragment;import android.support.v4.app.FragmentManager;import android.support.v4.app.FragmentTransaction;import android.support.v7.app.AppCompatActivity;import android.widget.FrameLayout;import android.widget.RadioGroup;import com.bawei.fragment.month10_demolianxi01.Fragment01;import com.bawei.fragment.month10_demolianxi01.Fragment02;import com.bawei.fragment.month10_demolianxi01.Fragment03;import com.bawei.fragment.month10_demolianxi01.Fragment04;public class MainActivity extends AppCompatActivity { private RadioGroup rg; private FrameLayout frag; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); //找到控件 rg = (RadioGroup) findViewById(R.id.rg); frag = (FrameLayout) findViewById(R.id.frag); addFragment(new Fragment01()); //RadioGroup的点击事件 rg.setOnCheckedChangeListener(new RadioGroup.OnCheckedChangeListener() { @Override public void onCheckedChanged(RadioGroup group, @IdRes int checkedId) { switch (checkedId){ case R.id.btn1: addFragment(new Fragment01()); break; case R.id.btn2: addFragment(new Fragment02()); break; case R.id.btn3: addFragment(new Fragment03()); break; case R.id.btn4: addFragment(new Fragment04()); break; } } }); } public void addFragment(Fragment f){ FragmentManager manager=getSupportFragmentManager(); FragmentTransaction fragmentTransaction = manager.beginTransaction(); fragmentTransaction.replace(R.id.frag,f); fragmentTransaction.commit(); }}//接下来写Fragment对应的类(也是只有一个,所以写一个)
//这些是导包
import android.os.Bundle;import android.support.annotation.Nullable;import android.support.design.widget.TabLayout;import android.support.v4.app.Fragment;import android.support.v4.app.FragmentManager;import android.support.v4.app.FragmentPagerAdapter;import android.support.v4.view.ViewPager;import android.view.LayoutInflater;import android.view.View;import android.view.ViewGroup;import com.bawei.administrator.month10_demolianxi01.R;/** * Created by Administrator on 2017/10/24 0024. */public class Fragment01 extends Fragment{ private TabLayout tab; private ViewPager vp; private String[] titles = new String[]{"推荐", "课程","实践", "职业路径"}; private Fragment[] fragments; @Nullable @Override public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) { View v = inflater.inflate(R.layout.fragment1,null); tab = (TabLayout) v.findViewById(R.id.tab); vp = (ViewPager) v.findViewById(R.id.vp);//这个是新建一个存放Tablayout对应的fragment的数组 fragments = new Fragment[titles.length]; fragments[0]=new Fragment1(); fragments[1]=new Fragment2(); fragments[2]=new Fragment3(); fragments[3]=new Fragment4();//ViewPager的内部适配器
vp.setAdapter(new MyFragmentAdapter(getChildFragmentManager()));//解决轮播图的小圆点刷新增多问题 vp.setOffscreenPageLimit(titles.length); tab.setupWithViewPager(vp); return v; } class MyFragmentAdapter extends FragmentPagerAdapter { @Override public CharSequence getPageTitle(int position) { return titles[position]; } public MyFragmentAdapter(FragmentManager fm) { super(fm); } @Override public Fragment getItem(int position) { return fragments[position]; } @Override public int getCount() { return titles.length; } }}//接下来写fragments数组中的第一个fragment(同样是一个)
import android.os.Bundle;import android.os.Handler;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.ListView;import android.widget.ScrollView;import com.bawei.adapter.month10_demolianxi01.MyBaseAdapter;import com.bawei.administrator.month10_demolianxi01.MImage;import com.bawei.administrator.month10_demolianxi01.R;import com.bawei.bean.month10_demolianxi01.Bean;import com.bawei.utils.month10_demolianxi01.ListScrollUtil;import com.bawei.utils.month10_demolianxi01.MyTask;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;/** * Created by Administrator on 2017/10/24 0024. */public class Fragment1 extends Fragment{ private MyBaseAdapter adap; private Banner banner; private PullToRefreshScrollView scrollView; private ListView lv; private List<String> list = new ArrayList<String>(); private List<Bean.DataScrollBean> list1 = new ArrayList<>(); private int index=1; private List<Bean.DataBean>data; private List<Bean.DataBean>listss = new ArrayList<>(); @Nullable @Override public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) { View v = inflater.inflate(R.layout.tuijian,null); banner = (Banner) v.findViewById(R.id.banner); scrollView = (PullToRefreshScrollView) v.findViewById(R.id.scroll); lv = (ListView) v.findViewById(R.id.lv); intRefreshScrollView(); //initData(); MyTask myTask = new MyTask(new MyTask.Icallbacks() { @Override public void updateicall(String str) { Gson gson = new Gson(); Bean bean = gson.fromJson(str, Bean.class); list1 = bean.getDataScroll(); for (int i = 0;i<list1.size();i++){ Log.d("zzz","http://www.93.gov.cn"+list1.get(i).getIMAGEURL()); list.add("http://www.93.gov.cn"+list1.get(i).getIMAGEURL()); } //创建一个图片加载器 banner.setImageLoader(new MImage()); //加载出集合中的图片 banner.setImages(list); //设置是否自动轮播 banner.isAutoPlay(true); //设置激动轮播的间隔时间 banner.setDelayTime(1000); //启动banner banner.start(); listss.addAll(bean.getData()); setAdapters(); } }); myTask.execute("http://www.93.gov.cn/93app/data.do?channelId=0&startNum=0"); return v; } public void setAdapters(){ if(adap==null){ adap=new MyBaseAdapter(listss,getActivity()); lv.setAdapter(adap); }else{ adap.notifyDataSetChanged(); } } public void initData(){ MyTask task=new MyTask(new MyTask.Icallbacks() { @Override public void updateicall(String str) { Gson gson=new Gson(); Bean u=gson.fromJson(str, Bean.class); data = u.getData(); listss.addAll(data); setAdapters(); } }); task.execute("http://api.expoon.com/AppNews/getNewsList/type/1/p/1"); } public void addToTop() { MyTask task = new MyTask(new MyTask.Icallbacks() { @Override public void updateicall(String str) { Gson gson = new Gson(); Bean u = gson.fromJson(str, Bean.class); data = u.getData(); listss.addAll(0,data); } }); task.execute("http://api.expoon.com/AppNews/getNewsList/type/1/p/"+index); } public void addToBottom(){ index++; MyTask task=new MyTask(new MyTask.Icallbacks() { @Override public void updateicall(String str) { Gson gson=new Gson(); Bean u=gson.fromJson(str, Bean.class); data = u.getData(); listss.addAll(data); } }); task.execute("http://api.expoon.com/AppNews/getNewsList/type/1/p/"+index); } private void intRefreshScrollView() { //1.设置模式 scrollView.setMode(PullToRefreshBase.Mode.BOTH); //2.通过调用getLoadingLayoutProxy方法,设置下拉刷新状况布局中显示的文字 ,第一个参数为true,代表下拉刷新 ILoadingLayout headLables = scrollView.getLoadingLayoutProxy(true, false); headLables.setPullLabel("下拉刷新"); headLables.setRefreshingLabel("正在刷新"); headLables.setReleaseLabel("松开刷新"); //2.设置上拉加载底部视图中显示的文字,第一个参数为false,代表上拉加载更多 ILoadingLayout footerLables = scrollView.getLoadingLayoutProxy(false, true); footerLables.setPullLabel("上拉加载"); footerLables.setRefreshingLabel("正在载入..."); footerLables.setReleaseLabel("松开加载更多"); //3.设置监听事件 scrollView.setOnRefreshListener(new PullToRefreshBase.OnRefreshListener2<ScrollView>() { @Override public void onPullDownToRefresh(PullToRefreshBase<ScrollView> refreshView) { addToTop();//请求网络数据,并更新listview组件 ListScrollUtil. setListViewHeightBasedOnChildren(lv); scrollView.onRefreshComplete(); refreshComplete();//数据加载完成后,关闭header,footer } @Override public void onPullUpToRefresh(PullToRefreshBase<ScrollView> refreshView) { addToBottom();//请求网络数据,并更新listview组件 ListScrollUtil. setListViewHeightBasedOnChildren(lv); scrollView.onRefreshComplete(); refreshComplete();//数据加载完成后,关闭header,footer } }); } /** * 刷新完成时关闭 */ public void refreshComplete(){ new Handler().postDelayed(new Runnable() { @Override public void run() { scrollView.onRefreshComplete(); setAdapters(); } },1000); }}//属于第一个Fragment的布局//下面就是第一个Fragment所要配合的类<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" xmlns:ptr="http://schemas.android.com/apk/res-auto" android:layout_height="match_parent" android:orientation="vertical" android:background="#ff0"> <com.handmark.pulltorefresh.library.PullToRefreshScrollView android:layout_width="match_parent" android:layout_height="match_parent" android:id="@+id/scroll" ptr:ptrAnimationStyle="flip" ptr:ptrDrawable="@drawable/default_ptr_flip" ptr:ptrHeaderBackground="#383838" ptr:ptrHeaderTextColor="#FFFFFF"> <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="240dp" android:id="@+id/banner"></com.youth.banner.Banner> <ListView android:layout_width="match_parent" android:layout_height="match_parent" android:id="@+id/lv"></ListView> </LinearLayout> </com.handmark.pulltorefresh.library.PullToRefreshScrollView></LinearLayout>//MImage类
import android.content.Context;import android.widget.ImageView;import com.youth.banner.loader.ImageLoader;public class MImage extends ImageLoader{ public void displayImage(Context context, Object path, ImageView imageView) { //下面这些复制就行了,我也不知道什么意思 com.nostra13.universalimageloader.core.ImageLoader instance = com.nostra13.universalimageloader.core.ImageLoader.getInstance(); instance.displayImage((String) path, imageView); }}//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.cache.memory.impl.LruMemoryCache;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 cacheDir=this.getExternalCacheDir();//自定义缓存路径 ImageLoaderConfiguration configuration=new ImageLoaderConfiguration.Builder(this) .memoryCache(new LruMemoryCache(2 * 1024 * 1024))//设置内存缓存区大小 .memoryCacheSize(2 * 1024 * 1024)//设置缓存区大小 .memoryCacheExtraOptions(320,320)//缓存图片最大的宽度与高度 px .diskCacheSize(50*1024*1024)//设置sd卡缓存的空间大小 .diskCacheFileNameGenerator(new Md5FileNameGenerator())//sd卡缓存图片的命名 使用md5加密方式 .diskCache(new UnlimitedDiscCache(cacheDir))//自定义sd卡的缓存路径 .diskCacheFileCount(100)//缓存文件的最大数量 .writeDebugLogs()//写入日志 .threadPoolSize(3)//线程池 .build(); //对imageLoader进行初使化 ImageLoader.getInstance().init(configuration); }}//MyBaseAdapter类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.bawei.administrator.month10_demolianxi01.R;import com.bawei.bean.month10_demolianxi01.Bean;import com.nostra13.universalimageloader.core.DisplayImageOptions;import com.nostra13.universalimageloader.core.ImageLoader;import java.util.List;public class MyBaseAdapter extends BaseAdapter{ private List<Bean.DataBean> list; private Context context; DisplayImageOptions options=new DisplayImageOptions.Builder() .cacheInMemory(true)//进行内存缓存 .cacheOnDisk(true)//进行sd卡缓存 .showImageOnLoading(R.drawable.ic_stub) // 设置正在下载中的图片 .showImageForEmptyUri(R.drawable.ic_empty) //没有请求地址时 .showImageOnFail(R.drawable.ic_error)//下载错误时 .bitmapConfig(Bitmap.Config.RGB_565)//设置图片质量 .build(); public MyBaseAdapter(List<Bean.DataBean> list, Context context) { this.list = list; this.context = context; } @Override public int getCount() { return list.size(); } @Override public Object getItem(int position) { return null; } @Override public long getItemId(int position) { return 0; } @Override public View getView(int position, View convertView, ViewGroup parent) { ViewHolder holder = null; if(convertView==null){ convertView=View.inflate(context, R.layout.item,null); holder=new ViewHolder(); holder.tvTitle= (TextView) convertView.findViewById(R.id.tv_title); holder.img= (ImageView) convertView.findViewById(R.id.img); convertView.setTag(holder); }else{ holder=(ViewHolder) convertView.getTag(); } holder.tvTitle.setText(list.get(position).getTITLE()); if(list.get(position).getIMAGEURL()!=null){ //imageLoader加载图片 ImageLoader.getInstance().displayImage(list.get(position).getIMAGEURL().toString(),holder.img,options); }else{ holder.img.setImageResource(R.mipmap.ic_launcher); } return convertView; } class ViewHolder{ TextView tvTitle; ImageView img; }}//ListScrollUtil类
import android.view.View;import android.view.ViewGroup;import android.widget.ListAdapter;import android.widget.ListView;public class ListScrollUtil { public static void setListViewHeightBasedOnChildren(ListView listView) { ListAdapter listAdapter = listView.getAdapter(); if (listAdapter == null) { // pre-condition return; } int totalHeight = 0; for (int i = 0; i < listAdapter.getCount(); i++) { View listItem = listAdapter.getView(i,null , listView); listItem.measure(0, 0); totalHeight += listItem.getMeasuredHeight(); } ViewGroup.LayoutParams params = listView.getLayoutParams(); params.height = totalHeight + (listView.getDividerHeight() * (listAdapter.getCount() - 1)); listView.setLayoutParams(params); }}//MyTask类import android.os.AsyncTask;import java.io.IOException;import java.io.InputStream;import java.net.HttpURLConnection;import java.net.MalformedURLException;import java.net.URL;public class MyTask extends AsyncTask<String,Void,String> { private Icallbacks icallbacks; private String string; private MyTask() { } public MyTask(Icallbacks icallbacks) { this.icallbacks = icallbacks; } @Override protected String doInBackground(String... params) { try { URL url = new URL(params[0]); HttpURLConnection urlConnection = (HttpURLConnection) url.openConnection(); urlConnection.setRequestMethod("GET"); urlConnection.setConnectTimeout(5000); urlConnection.setReadTimeout(5000); if (urlConnection.getResponseCode() == 200) { InputStream inputStream = urlConnection.getInputStream(); string = Streamtosring.tostring(inputStream); } return string; } catch (MalformedURLException e) { e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); } return null; } @Override protected void onPostExecute(String s) { super.onPostExecute(s); icallbacks.updateicall(s); } public interface Icallbacks { void updateicall(String str); }}//Streamtosring类
import java.io.BufferedReader;import java.io.IOException;import java.io.InputStream;import java.io.InputStreamReader;public class Streamtosring { public static String tostring(InputStream s){ StringBuilder sb=new StringBuilder(); BufferedReader br=new BufferedReader(new InputStreamReader(s)); String con; try { while((con=br.readLine())!=null){ sb.append(con); } return sb.toString(); } catch (IOException e) { e.printStackTrace(); } return null; }}
阅读全文
0 0
- 没有侧滑菜单的一个案例
- 优秀侧滑菜单设计案例
- 优秀侧滑菜单设计案例
- 一个简单的侧滑菜单SimpleSlidingMenu
- 没有vuex的vue案例
- (安卓APP)利用NavigationView做的侧滑菜单案例
- ionic侧栏菜单案例
- 【案例分享】仿QQ5.0侧滑菜单ResideMenu
- 【Android 案例分享】仿QQ5.0侧滑菜单ResideMenu
- 【Android 案例分享】仿QQ5.0侧滑菜单ResideMenu
- 【案例分享】仿QQ5.0侧滑菜单ResideMenu
- 【案例分享】仿QQ5.0侧滑菜单ResideMenu
- ViewDragHelper 实战案例1 《QQ侧滑菜单》 SwipeLayout
- 如何简单的写出一个侧滑菜单
- SwipeLayout一个展示条目底层菜单的侧滑控件
- iframe的一个案例
- Storm 的一个案例
- 一个小小的案例
- 熊猫学猿--(第七竹--常使用的条件语句if)
- angularjs-增删改查+排序
- 详解centos6和centos7防火墙的关闭
- gartner 魔力象限
- fragment_b
- 没有侧滑菜单的一个案例
- vector set map
- 封装单例模式和拦截器的使用
- item01
- 如何在Fragment中获取context
- 二级列表购物车
- 大数据早报:Google向化学家开放量子计算机 科学家将机器学习技术用于地震预测(10.25)
- 模拟月考
- angularjs(排序)+css样式