HorizontalScrollView和ViewPager的使用
来源:互联网 发布:东方财富软件使用 编辑:程序博客网 时间:2024/06/08 15:56
1.MainActivity 类import android.graphics.Color;import android.os.Bundle;import android.support.v4.app.Fragment;import android.support.v4.view.ViewPager;import android.support.v7.app.AppCompatActivity;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;class MainActivity extends AppCompatActivity implements View.OnClickListener { private HorizontalScrollView hsv; private ViewPager vp; private LinearLayout container_id; private int position; private List<String> titleList; private MyPagerAdapter adapter; private List<Fragment> fragmentList; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); hsv = (HorizontalScrollView) findViewById(R.id.hsv); vp = (ViewPager) findViewById(R.id.vp); container_id = (LinearLayout) findViewById(R.id.container_id); initData(); addTitleAndFragment(); adapter = new MyPagerAdapter(getSupportFragmentManager(), fragmentList); vp.setAdapter(adapter); /** * 监听ViewPager事件 */ vp.addOnPageChangeListener(new ViewPager.OnPageChangeListener() { @Override public void onPageScrolled(int position, float positionOffset, int positionOffsetPixels) { } @Override public void onPageSelected(int position) { // 选中切换变色 clickChangeColor(position); // 计算控件要滑动的距离 // 共有多少margin int margins = 20 * position; int totalWidth = 0; for (int j = 0; j < position; j++) { TextView tView = (TextView) container_id.getChildAt(j); int width = tView.getWidth(); totalWidth += width; } // hsv计算滑动的位置 hsv.scrollTo((totalWidth + margins), 0); } @Override public void onPageScrollStateChanged(int state) { } }); } // 1. 向LinearLayout里面添加数据 // 2. 向ViewPager里面添加Fragment private void addTitleAndFragment() { for (int i = 0; i < titleList.size(); i++) { TextView tex = new TextView(this); tex.setText(titleList.get(i)); tex.setTextSize(20); if (i == 0) { tex.setTextColor(Color.RED); } else { tex.setTextColor(Color.BLACK); } tex.setOnClickListener(this); tex.setId(i + 1000); LinearLayout.LayoutParams layoutParams = new LinearLayout.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.WRAP_CONTENT); layoutParams.setMargins(15, 8, 15, 8); tex.setLayoutParams(layoutParams); container_id.addView(tex); ContentFragment contentFragment = new ContentFragment(); fragmentList.add(contentFragment); } } //设置tetle 标题 private void initData() { fragmentList = new ArrayList<>(); titleList = new ArrayList<>(); String[] srt = {"热点", "科技", "文化", "中国", "视频", "微头条", "军事", "游戏", "直播", "养殖", "风景", "大海", "制度", "古董", "女性"}; for (int i = 0; i < 15; i++) { titleList.add(srt[i]); } } //设置字体变色 private void clickChangeColor(int position) { for (int i = 0; i < titleList.size(); i++) { TextView txtview = (TextView) container_id.getChildAt(i); if (position == i) { txtview.setTextColor(Color.RED); } else { txtview.setTextColor(Color.BLACK); } } } @Override public void onClick(View view) { int id = view.getId(); position = id - 1000; vp.setCurrentItem(position); clickChangeColor(position); }}1.MainActivity的布局
<?xml version="1.0" encoding="utf-8"?><LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:id="@+id/activity_main" android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertical"> <HorizontalScrollView android:id="@+id/hsv" android:layout_width="match_parent" android:layout_height="55dp" android:scrollbars="none"> <LinearLayout android:id="@+id/container_id" android:layout_width="match_parent" android:layout_height="wrap_content" android:orientation="horizontal"></LinearLayout> </HorizontalScrollView> <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>2.fragment类
import android.os.Bundle;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.ListView;import com.google.gson.Gson;import org.xutils.common.Callback;import org.xutils.http.RequestParams;import org.xutils.x;import java.util.ArrayList;import java.util.List;public class ContentFragment extends Fragment { private ListView list_view; private List<Bean.DataBean> list=new ArrayList<>(); @Nullable @Override public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) { return inflater.inflate(R.layout.fragment_loyout,container,false); } @Override public void onActivityCreated(@Nullable Bundle savedInstanceState) { super.onActivityCreated(savedInstanceState); getDataFragment(); } public void getDataFragment() { String url="http://api.expoon.com/AppNews/getNewsList/type/1/p/1"; RequestParams params=new RequestParams(); params.setUri(url); x.http().get(params, new Callback.CommonCallback<String>() { @Override public void onSuccess(String result) { if (result != null){ Gson gson=new Gson(); Bean bean = gson.fromJson(result, Bean.class); List<Bean.DataBean> data = bean.getData(); list_view = (ListView) getView().findViewById(R.id.list_view); MyListAdapter adapter=new MyListAdapter(getContext(),data); list_view.setAdapter(adapter); } } @Override public void onError(Throwable ex, boolean isOnCallback) { } @Override public void onCancelled(CancelledException cex) { } @Override public void onFinished() { } }); }}2.fragment布局
<?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"> <ListView android:id="@+id/list_view" android:layout_width="match_parent" android:layout_height="match_parent"></ListView></LinearLayout>3.baseadapter适配器
import android.content.Context;import android.view.LayoutInflater;import android.view.View;import android.view.ViewGroup;import android.widget.BaseAdapter;import android.widget.ImageView;import android.widget.TextView;import org.xutils.x;import java.util.List;public class MyListAdapter extends BaseAdapter { private Context context; private List<Bean.DataBean> list; public MyListAdapter(Context context, List<Bean.DataBean> list) { this.context = context; this.list = list; } @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) { MyViewHolder holder; if (view==null){ holder=new MyViewHolder(); view = LayoutInflater.from(context).inflate(R.layout.itme_layout, null); holder.tvtetle= (TextView) view.findViewById(R.id.tvtetle); holder.tvContent= (TextView) view.findViewById(R.id.tvContent); holder.ivIcon= (ImageView) view.findViewById(R.id.ivIcon); view.setTag(holder); }else{ holder= (MyViewHolder) view.getTag(); } Bean.DataBean bean = list.get(i); holder.tvtetle.setText(bean.getNews_title()); holder.tvContent.setText(bean.getNews_summary()); x.image().bind(holder.ivIcon,bean.getPic_url()); return view; } static class MyViewHolder{ private TextView tvtetle,tvContent; private ImageView ivIcon; }}3.baseadapter布局4.fragmentpageradapter适配<?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="horizontal"> <ImageView android:id="@+id/ivIcon" android:layout_width="100dp" android:layout_height="100dp" /> <LinearLayout android:layout_width="match_parent" android:layout_height="100dp" android:orientation="vertical"> <TextView android:id="@+id/tvtetle" android:layout_width="match_parent" android:layout_height="40dp" android:textSize="20sp" /> <TextView android:id="@+id/tvContent" android:layout_width="match_parent" android:layout_height="60dp" android:maxLines="2" android:textSize="14sp" /> </LinearLayout></LinearLayout>
import android.support.v4.app.Fragment;import android.support.v4.app.FragmentManager;import android.support.v4.app.FragmentPagerAdapter;import java.util.List; public class MyPagerAdapter extends FragmentPagerAdapter { private List<Fragment> fragmentList; public MyPagerAdapter(FragmentManager fm,List<Fragment> fragmentList) { super(fm); this.fragmentList=fragmentList; } @Override public Fragment getItem(int position) { return fragmentList.get(position); } @Override public int getCount() { return fragmentList.size(); }}
//需要的依赖
compile 'org.xutils:xutils:3.5.0'compile 'com.google.code.gson:gson:2.8.1'//权限
<uses-permission android:name="android.permission.INTERNET"></uses-permission>
阅读全文
0 0
- HorizontalScrollView和ViewPager的使用
- HorizontalScrollView 使用 实现textview和viewpager的联动
- 解决 HorizontalScrollView 和 ViewPager 的滑动冲突
- 使用HorizontalScrollView和ViewPager联动效果出现的position值改变问题
- ScrollView和HorizontalScrollView的使用
- HorizontalScrollView和ViewPager联动效果
- ViewPager的实现:通过HorizontalScrollView
- ViewPager的实现:通过HorizontalScrollView
- android ScrollView 和 HorizontalScrollView 的使用
- android ScrollView 和 HorizontalScrollView 的使用
- ViewPager和Fragment结合,利用(HorizontalScrollView)实现指示器与ViewPager同时滑动的动态效果
- ViewPager,HorizontalScrollView
- HorizontalScrollView+Viewpager
- 仿ViewPager相册(使用HorizontalScrollView)
- android中HorizontalScrollView实现viewpager的效果
- viewpager跟HorizontalScrollView,listview冲突的问题
- HorizontalScrollview屏蔽掉viewpager的滑动事件。
- HorizontalScrollView的使用示例
- 略讲基于cnn的人脸识别模型的网络结构和度量设计
- 355Design Twitter
- 单片机学习——LCD12864串口显示
- UVa156(map的使用)
- hihoCoder— 穿越禁区(并查集)
- HorizontalScrollView和ViewPager的使用
- CSS之vmin和vmax
- 实现javascript深复制
- General Thread States
- android系统源码下载
- HTML基础学习-3- image标签学习
- python-01
- JQ对DOM的操作实例
- myflag step 11SuperviseDao