Android_横向滑动菜单, HorizontalScrollView,Fragment,Viewpager结合使用 +pullToRefreshListView
来源:互联网 发布:美工刀架规格 编辑:程序博客网 时间:2024/06/06 02:05
主页面 布局
<?xml version="1.0" encoding="utf-8"?><RelativeLayout 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.example.zhangt.myapplication.MainActivity"> <HorizontalScrollView android:id="@+id/hs" android:layout_width="match_parent" android:layout_height="wrap_content"> <LinearLayout android:id="@+id/linearlayout" android:layout_width="match_parent" android:layout_height="wrap_content" android:orientation="horizontal"> </LinearLayout> </HorizontalScrollView> <android.support.v4.view.ViewPager android:id="@+id/viewpager" android:layout_width="match_parent" android:layout_height="match_parent" android:layout_below="@id/hs"> </android.support.v4.view.ViewPager></RelativeLayout>
//////////////////////////////////////////////////////////////
主页面
package com.example.zhangt.myapplication;import android.graphics.Color;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.support.v7.app.AppCompatActivity;import android.os.Bundle;import android.view.View;import android.view.ViewGroup;import android.widget.HorizontalScrollView;import android.widget.LinearLayout;import android.widget.TextView;import java.util.ArrayList;import java.util.List;public class MainActivity extends AppCompatActivity { private String[] titles; private List<TextView> list; private HorizontalScrollView hs; private LinearLayout linearlayout; private ViewPager viewpager; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); hs = (HorizontalScrollView)findViewById(R.id.hs); linearlayout = (LinearLayout)findViewById(R.id.linearlayout); viewpager = (ViewPager)findViewById(R.id.viewpager); //创建数组,存放标题 titles = new String[] { "头条", "娱乐", "科技", "信息", "八卦", "北京", "上海", "天津","重庆", "大大燕网" }; //创建集合,存放textview list = new ArrayList<TextView>(); //创建textview for (int i = 0; i < titles.length; i++) { //创建textview TextView textView = new TextView(MainActivity.this); textView.setText(titles[i]); textView.setTextSize(20); textView.setId(i+1000); //点击事件 textView.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View view) { int id = view.getId(); viewpager.setCurrentItem(id-1000); } }); //刚进程序第一个默认红色,其他为黑色 if(i ==0){ textView.setTextColor(Color.RED); }else { textView.setTextColor(Color.BLACK); } LinearLayout.LayoutParams layoutParams = new LinearLayout.LayoutParams(ViewGroup.LayoutParams.WRAP_CONTENT, ViewGroup.LayoutParams.WRAP_CONTENT); layoutParams.setMargins(20,10,20,10); //添加到布局中 linearlayout.addView(textView,layoutParams); //添加到集合 list.add(textView); } //为viewpager设置适配器 viewpager.setAdapter(new Myadapter(getSupportFragmentManager())); //viewpager的监听 viewpager.setOnPageChangeListener(new ViewPager.OnPageChangeListener() { //滑动改变颜色 @Override public void onPageScrolled(int position, float positionOffset, int positionOffsetPixels) { //list中存的是 textview 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 textView = list.get(position); //width是每次滑动的距离 int width = textView.getWidth()+10; //让scrollView滑动 滑动距离是textview之间的间距 hs.scrollTo(width*position,0); } @Override public void onPageSelected(int position) { } @Override public void onPageScrollStateChanged(int state) { } }); } class Myadapter extends FragmentPagerAdapter { public Myadapter(FragmentManager fm) { super(fm); } @Override public Fragment getItem(int position) { return Fragment1.getinstance(list.get(position).getText().toString()); } @Override public int getCount() { return list.size(); } }}////////////////////////////////////
Fragment1 yemian
package com.example.zhangt.myapplication;import android.os.Bundle;import android.os.Handler;import android.support.annotation.Nullable;import android.support.v4.app.Fragment;import android.view.LayoutInflater;import android.view.View;import android.view.ViewGroup;import android.widget.BaseAdapter;import android.widget.ListView;import android.widget.TextView;import com.example.zhangt.myapplication.Bean.Result;import com.example.zhangt.myapplication.Utils.MyTask;import com.google.gson.Gson;import com.handmark.pulltorefresh.library.ILoadingLayout;import com.handmark.pulltorefresh.library.PullToRefreshBase;import com.handmark.pulltorefresh.library.PullToRefreshListView;import java.util.ArrayList;import java.util.List;/** * Created by Zhang.T on 2017/12/3. */public class Fragment1 extends Fragment{ private adapter adapter; private int pageIndex=5; private List<Result.DataBean> datas=new ArrayList<>(); private Handler myHandler=new Handler(); private PullToRefreshListView pullToRefreshListView; public static Fragment getinstance(String title){ //创建Fragment1 Fragment1 fragment1 = new Fragment1(); //创建bundle Bundle bundle = new Bundle(); //添加值 bundle.putString("title",title); //把值添加到Arguments中 fragment1.setArguments(bundle); return fragment1; } @Nullable @Override public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) { View view = inflater.inflate(R.layout.one, null); pullToRefreshListView= view.findViewById(R.id.pull_lv); return view; } @Override public void onActivityCreated(@Nullable Bundle savedInstanceState) { super.onActivityCreated(savedInstanceState); initLv(); initData(); } public void initLv(){ //设置刷新模式 ,both代表支持上拉和下拉,pull_from_end代表上拉,pull_from_start代表下拉 pullToRefreshListView.setMode(PullToRefreshBase.Mode.BOTH);/*这里通过getLoadingLayoutProxy 方法来指定上拉和下拉时显示的状态的区别,第一个true 代表下来状态 ,第二个true 代表上拉的状态如果想区分上拉和下拉状态的不同,可以分别设置*/ ILoadingLayout startLabels = pullToRefreshListView.getLoadingLayoutProxy(true, false); startLabels.setPullLabel("下拉刷新"); startLabels.setRefreshingLabel("正在拉"); startLabels.setReleaseLabel("放开刷新"); ILoadingLayout endLabels = pullToRefreshListView.getLoadingLayoutProxy(false, true); endLabels.setPullLabel("上拉刷新"); endLabels.setRefreshingLabel("正在载入..."); endLabels.setReleaseLabel("放开刷新...");/*如果Mode设置成Mode.BOTH,需要设置刷新Listener为OnRefreshListener2,并实现onPullDownToRefresh()、onPullUpToRefresh()两个方法。 如果Mode设置成Mode.PULL_FROM_START或Mode.PULL_FROM_END,需要设置刷新Listener为OnRefreshListener,同时实现onRefresh()方法。 当然也可以设置为OnRefreshListener2,但是Mode.PULL_FROM_START的时候只调用onPullDownToRefresh()方法,Mode.PULL_FROM_END的时候只调用onPullUpToRefresh()方法. 加载数据完成后 必须 调用下 onRefreshComplete() 完成关闭 header,footer视图*/ pullToRefreshListView.setOnRefreshListener(new PullToRefreshBase.OnRefreshListener2<ListView>() { @Override public void onPullDownToRefresh(PullToRefreshBase<ListView> refreshView) {//下拉刷新的回调 //下拉刷新的数据,显示在listview列表的最上面 addtoTop(); myHandler.postDelayed(new Runnable() { @Override public void run() { //刷新完成,必须在异步下完成 pullToRefreshListView.onRefreshComplete(); //刷新适配器 setAdapter(); } },1000); } @Override public void onPullUpToRefresh(PullToRefreshBase<ListView> refreshView) {//上拉加载的回调 //加载更多的数据,添加到集合列表的最后面 addtoBottom(); myHandler.postDelayed(new Runnable() { @Override public void run() { //刷新完成,必须在异步下完成 pullToRefreshListView.onRefreshComplete(); //刷新适配器 setAdapter(); } },1000); } }); } public void initData(){ MyTask myTask=new MyTask(new MyTask.Icallbacks() { @Override public void updateUiByjson(String jsonstr) { Gson gson=new Gson(); Result result = gson.fromJson(jsonstr, Result.class); List<Result.DataBean> data = result.getData(); datas.addAll(data); //添加到大集合对象中 //设置适配器 setAdapter(); } }); myTask.execute("http://www.yulin520.com/a2a/impressApi/news/mergeList?pageSize=10&page=1"); } public void addtoTop(){ MyTask myTask=new MyTask(new MyTask.Icallbacks() { @Override public void updateUiByjson(String jsonstr) { Gson gson=new Gson(); Result result = gson.fromJson(jsonstr, Result.class); List<Result.DataBean> data = result.getData(); datas.addAll(data); //设置适配器 setAdapter(); } }); myTask.execute("http://www.yulin520.com/a2a/impressApi/news/mergeList?pageSize=10&page="+pageIndex); } public void addtoBottom(){ pageIndex++; MyTask myTask=new MyTask(new MyTask.Icallbacks() { @Override public void updateUiByjson(String jsonstr) { Gson gson=new Gson(); Result result = gson.fromJson(jsonstr, Result.class); List<Result.DataBean> data = result.getData(); datas.addAll(data); //设置适配器 setAdapter(); } }); myTask.execute("http://www.yulin520.com/a2a/impressApi/news/mergeList?pageSize=10&page="+pageIndex); } public void setAdapter(){ if(adapter==null){ adapter=new adapter(); pullToRefreshListView.setAdapter(adapter); }else{ adapter.notifyDataSetChanged(); } } class adapter extends BaseAdapter { @Override public int getCount() { return datas.size(); } @Override public Object getItem(int position) { return datas.get(position); } @Override public long getItemId(int position) { return position; } @Override public View getView(int position, View convertView, ViewGroup parent) { Viewholder holder; if (convertView==null) { convertView=View.inflate(getActivity(),R.layout.lv_one,null); holder=new Viewholder(); holder.one=convertView.findViewById(R.id.textView); convertView.setTag(holder); }else { holder=(Viewholder) convertView.getTag(); } holder.one.setText(datas.get(position).getTitle()); return convertView; } } //////////////////////////// class Viewholder{ TextView one ,two; }}
阅读全文
0 0
- Android_横向滑动菜单, HorizontalScrollView,Fragment,Viewpager结合使用 +pullToRefreshListView
- Android_横向滑动菜单, HorizontalScrollView,Fragment,Viewpager结合使用
- Android_横向滑动菜单, HorizontalScrollView,Fragment,Viewpager结合使用
- 横向滑动菜单, HorizontalScrollView,fragment,Viewpager结合使用
- 横向滑动菜单, HorizontalScrollView,fragment,Viewpager结合使用
- 横向滑动菜单, HorizontalScrollView,fragment,Viewpager结合使用
- 横向滑动菜单:horizontalscrollview+viewpager+Fragment
- 无限横向滑动菜单(自定义HorizontalScrollView+ViewPager)
- HorizontalScrollView 横向滑动菜单
- 横向菜单滑动选择viewpager+tablayout+fragment
- 网络判断+Fragment+ViewPager+XListView+TabLayout横向滑动菜单 Z2
- ViewPager和Fragment结合,利用(HorizontalScrollView)实现指示器与ViewPager同时滑动的动态效果
- 仿网易新闻APP(五)——无限横向滑动菜单(自定义HorizontalScrollView+ViewPager)
- wzq.HorizontalScrollView——横向滑动菜单
- 横向滑动ViewPager和Fragment
- android_使用ViewPager和Fragment实现滑动导航
- 横向滑动菜单Tablayout和viewpager小圆点结合滑动仿今日头条
- viewpager+fragment结合实现滑动
- 并发编程volatile关键字分析
- python的数据类型(上)
- python selenium2示例
- 计算机组成原理(一)
- ThinkPHP3.2.3完整版中对Auth.class.php的使用
- Android_横向滑动菜单, HorizontalScrollView,Fragment,Viewpager结合使用 +pullToRefreshListView
- vivado哈工大计算机系统
- poj-1028Web Navigation
- SQL Server2008 学习之(十七) :数据库的备份与恢复
- ios-设置navigationBar和tabBar的样式
- 2.dubbo服务注册与发现
- bzoj3697 采药人的路径
- 叉乘判两线段是否相交
- C++常量---初识