引导页的页面
首先是布局文件
<android.support.v4.view.ViewPager
android:id="@+id/pager"
android:layout_width="match_parent"
android:layout_height="match_parent" />
<RadioGroup
android:id="@+id/group"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="horizontal"
android:layout_marginTop="-80dp"
android:gravity="center"
></RadioGroup>
<Button
android:id="@+id/btn"
android:layout_marginTop="-50dp"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="点击跳转"/>
引导页主页面
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
int[] arr = {R.drawable.aa,R.drawable.bb,R.drawable.cc,R.drawable.dd};
pager = (ViewPager)findViewById(R.id.pager);
btn =(Button) findViewById(R.id.btn);
group = (RadioGroup)findViewById(R.id.group);
btn.setVisibility(View.GONE);
btn.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Intent intent = new Intent(MainActivity.this, ShouActivity.class);
startActivity(intent);
}
});
list = new ArrayList<>();
for (int i = 0 ;i<arr.length;i++){
ImageView imageView = new ImageView(MainActivity.this);
imageView.setImageResource(arr[i]);
list.add(imageView);
RadioButton button = new RadioButton(MainActivity.this);
group.addView(button);
}
group.check(group.getChildAt(0).getId());
Log.e("yxx","打印数据"+list.size());
pager.setAdapter(new PagerAdapter() {
@Override
public int getCount() {
return list.size();
}
@Override
public boolean isViewFromObject(@NonNull View arg0, @NonNull Object agr1) {
return arg0 == agr1;
}
@NonNull
@Override
public Object instantiateItem(@NonNull ViewGroup container, int position) {
ImageView view = list.get(position);
container.addView(view);
return view;
}
@Override
public void destroyItem(@NonNull ViewGroup container, int position, @NonNull Object object) {
container.removeView((View) object);
}
});
pager.setOnPageChangeListener(new ViewPager.OnPageChangeListener() {
@Override
public void onPageScrolled(int i, float v, int i1) {
}
@Override
public void onPageSelected(int i) {
group.check(group.getChildAt(i).getId());
if(i == list.size()-1){
btn.setVisibility(View.VISIBLE);
}else{
btn.setVisibility(View.GONE);
}
}
@Override
public void onPageScrollStateChanged(int i) {
}
});
}
这时候就会进入到我们的切换页面和抽屉
这个时候防止页面混乱所以写了两个LinearLayout
<android.support.v4.widget.DrawerLayout 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=".MyActivity.ShouActivity"
android:orientation="vertical"
android:id="@+id/drawlay"
>
<LinearLayout
android:layout_width="150dp"
android:layout_height="match_parent"
android:layout_gravity="left"
android:orientation="vertical"
android:background="@color/colorPrimaryDark"
>
<TextView
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="我是神"
/>
<TextView
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="我是神"
/>
<TextView
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="我是神"
/>
</LinearLayout>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"
>
<FrameLayout
android:id="@+id/frag"
android:layout_width="match_parent"
android:layout_height="0dp"
android:layout_weight="9"
></FrameLayout>
<RadioGroup
android:id="@+id/group"
android:layout_width="match_parent"
android:layout_height="0dp"
android:layout_weight="1"
android:orientation="horizontal"
>
<RadioButton
android:id="@+id/radio0"
android:layout_width="0dp"
android:layout_height="match_parent"
android:button="@null"
android:layout_weight="1"
android:gravity="center"
android:text="首页"
/>
<RadioButton
android:id="@+id/radio1"
android:layout_width="0dp"
android:layout_height="match_parent"
android:button="@null"
android:layout_weight="1"
android:gravity="center"
android:text="我的"
/>
<RadioButton
android:id="@+id/radio2"
android:layout_width="0dp"
android:layout_height="match_parent"
android:button="@null"
android:layout_weight="1"
android:gravity="center"
android:text="第三个"
/>
</RadioGroup>
</LinearLayout>
</android.support.v4.widget.DrawerLayout>
接下来看主要的代码
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_shou);
drawr = (DrawerLayout)findViewById(R.id.drawlay);
frag = (FrameLayout)findViewById(R.id.frag);
group = (RadioGroup)findViewById(R.id.group);
actionBar = getSupportActionBar();
actionBar.setDisplayHomeAsUpEnabled(true);
drawr.addDrawerListener(new DrawerLayout.DrawerListener() {
@Override
public void onDrawerSlide(@NonNull View view, float v) {
}
@Override
public void onDrawerOpened(@NonNull View view) {
}
@Override
public void onDrawerClosed(@NonNull View view) {
Toast.makeText(ShouActivity.this,"我关闭了",Toast.LENGTH_LONG).show();
}
@Override
public void onDrawerStateChanged(int i) {
}
});
ArrayList<Fragment> list = new ArrayList<>();
manager = getSupportFragmentManager();
FragmentTransaction transaction = manager.beginTransaction();
fragment1 = new Fragment1();
fragment2 = new Fragment2();
fragment3 = new Fragment3();
transaction.add(R.id.frag, fragment1,"fragment1");
transaction.add(R.id.frag, fragment2);
transaction.add(R.id.frag, fragment3);
transaction.show(fragment1).hide(fragment2).hide(fragment3);
transaction.commit();
group.setOnCheckedChangeListener(new RadioGroup.OnCheckedChangeListener() {
@Override
public void onCheckedChanged(RadioGroup group, int checkedId) {
FragmentTransaction transaction1 = manager.beginTransaction();
switch (checkedId){
case R.id.radio0:
transaction1.show(fragment1).hide(fragment2).hide(fragment3).commit();
break;
case R.id.radio1:
transaction1.show(fragment2).hide(fragment1).hide(fragment3).commit();
break;
case R.id.radio2:
transaction1.show(fragment3).hide(fragment2).hide(fragment1).commit();
break;
}
}
});
}
//因为是Fragment之间的传值所以在Activity之间进行传值
@Override
protected void onActivityResult(int requestCode, int resultCode, @Nullable Intent data) {
super.onActivityResult(requestCode, resultCode, data);
Fragment fragment1 = manager.findFragmentByTag("fragment1");
fragment1.onActivityResult(requestCode, resultCode, data);
}
接下来就到我们的频道了
<LinearLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"
>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="horizontal"
>
<android.support.design.widget.TabLayout
android:id="@+id/tablayout"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_weight="1"
/>
<Button
android:id="@+id/btn"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="+"
/>
</LinearLayout>
<android.support.v4.view.ViewPager
android:id="@+id/pager1"
android:layout_width="match_parent"
android:layout_height="0dp"
android:layout_weight="1"
/>
</LinearLayout>
这个是具体代码
public View onCreateView(@NonNull LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
View view = inflater.inflate(R.layout.fragment1,container,false);
tablayout = (TabLayout)view.findViewById(R.id.tablayout);
pager = (ViewPager)view.findViewById(R.id.pager1);
btn =(Button)view.findViewById(R.id.btn);
myAdapter = new MyAdapter(getChildFragmentManager());
pager.setAdapter(myAdapter);
tablayout.setupWithViewPager(pager);
btn.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
ChannelActivity.startChannelActivity((AppCompatActivity) getActivity(),channellist);
}
});
initData();
return view;
}
private void initData() {
channellist.add(new ChannelBean("北京",true));
channellist.add(new ChannelBean("北京1",true));
channellist.add(new ChannelBean("北京2",true));
channellist.add(new ChannelBean("北京3",false));
channellist.add(new ChannelBean("北京4",false));
for (int i = 0 ;i<channellist.size();i++){
if(channellist.get(i).isSelect()){
tablayout.addTab(tablayout.newTab().setText(channellist.get(i).getName()));
if(i==0){
fragmentlist.add(new Fragment01());
}else if(i == 1){
fragmentlist.add(new Fragment02());
}else{
fragmentlist.add(new Fragment03());
}
}
}
myAdapter.notifyDataSetChanged();
}
@Override
public void onActivityResult(int requestCode, int resultCode, @Nullable Intent data) {
super.onActivityResult(requestCode, resultCode, data);
String extra = data.getStringExtra(ChannelActivity.RESULT_JSON_KEY);
Gson gson = new Gson();
Type type = new TypeToken<ArrayList<ChannelBean>>() {
}.getType();
channellist = gson.fromJson(extra, type);
tablayout.removeAllTabs();
fragmentlist.clear();
for (int i = 0 ;i<channellist.size();i++){
if(channellist.get(i).isSelect()){
tablayout.addTab(tablayout.newTab().setText(channellist.get(i).getName()));
if(i==0){
fragmentlist.add(new Fragment01());
}else if(i == 1){
fragmentlist.add(new Fragment02());
}else{
fragmentlist.add(new Fragment03());
}
}
}
myAdapter.notifyDataSetChanged();
}
private class MyAdapter extends FragmentPagerAdapter {
public MyAdapter(FragmentManager fm) {
super(fm);
}
@Override
public Fragment getItem(int i) {
return fragmentlist.get(i);
}
@Override
public int getCount() {
return fragmentlist.size();
}
@Nullable
@Override
public CharSequence getPageTitle(int position) {
return channellist.get(position).getName();
}
}
轮播图和上下拉刷新
public class Fragment01 extends Fragment {
private Banner banader;
String[] urls = {"https://img-my.csdn.net/uploads/201407/26/1406383265_8550.jpg",
"https://lh4.googleusercontent.com/--dq8niRp7W4/URquVgmXvgI/AAAAAAAAAbs/-gnuLQfNnBA/s160-c/A%252520Song%252520of%252520Ice%252520and%252520Fire.jpg",
"https://lh5.googleusercontent.com/-7qZeDtRKFKc/URquWZT1gOI/AAAAAAAAAbs/hqWgteyNXsg/s160-c/Another%252520Rockaway%252520Sunset.jpg",
"https://img-my.csdn.net/uploads/201407/26/1406383265_8550.jpg",
"https://lh6.googleusercontent.com/-8HO-4vIFnlw/URquZnsFgtI/AAAAAAAAAbs/WT8jViTF7vw/s160-c/Antelope%252520Hallway.jpg",
"https://lh4.googleusercontent.com/-WIuWgVcU3Qw/URqubRVcj4I/AAAAAAAAAbs/YvbwgGjwdIQ/s160-c/Antelope%252520Walls.jpg"};
String urlString = "http://api.expoon.com/AppNews/getNewsList/type/1/p/1";
ArrayList<Bean.DataBean> list = new ArrayList<Bean.DataBean>();
private PullToRefreshListView pth;
private MyAdapter myAdapter;
@Nullable
@Override
public View onCreateView(@NonNull LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
View view = inflater.inflate(R.layout.fragment01,container,false);
banader = (Banner)view.findViewById(R.id.bander);
pth = (PullToRefreshListView) view.findViewById(R.id.pth);
pth.setMode(PullToRefreshBase.Mode.BOTH);
myAdapter = new MyAdapter(getActivity(), list);
pth.setAdapter(myAdapter);
ininlun();
initData();
return view;
}
private void initData() {
if(Netutil.isconn(getActivity())){
new MAsncTask().execute(urlString);
}else{
Toast.makeText(getActivity(),"我没有网",Toast.LENGTH_LONG).show();
}
}
private void ininlun() {
final ImageLoader instance = ImageLoader.getInstance();
banader.setImageLoader(new com.youth.banner.loader.ImageLoader() {
@Override
public void displayImage(Context context, Object path, ImageView imageView) {
instance.displayImage((String)path,imageView);
}
});
banader.setImages(Arrays.asList(urls));
banader.start();
}
private class MAsncTask extends AsyncTask<String ,Void,String>{
@Override
protected String doInBackground(String... strings ) {
String netjson = NetWordUtils.getNetjson(strings[0]);
return netjson;
}
@Override
protected void onPostExecute(String s) {
super.onPostExecute(s);
Gson gson = new Gson();
Bean bean = gson.fromJson(s, Bean.class);
List<Bean.DataBean> beanList = bean.getData();
list.addAll(beanList);
myAdapter.notifyDataSetChanged();
}
}
布局
导入依赖
<com.youth.banner.Banner
android:id="@+id/bander"
android:layout_weight="3"
android:layout_width="match_parent"
android:layout_height="0dp"/>
<com.handmark.pulltorefresh.library.PullToRefreshListView
android:id="@+id/pth"
android:layout_weight="7"
android:layout_width="match_parent"
android:layout_height="0dp"/>
判断网咯
public class Netutil {
public static boolean isconn(Context context) {
boolean isf = false;
ConnectivityManager systemService = (ConnectivityManager) context.getSystemService(Context.CONNECTIVITY_SERVICE);
NetworkInfo networkInfo = systemService.getActiveNetworkInfo();
if(networkInfo!=null){
isf = true;
}
return isf;
}
}
图片网络获取
public class MApp extends Application {
@Override
public void onCreate() {
super.onCreate();
ImageLoaderConfiguration build = new ImageLoaderConfiguration.Builder(this).build();
ImageLoader instance = ImageLoader.getInstance();
instance.init(build);
/* ImageLoaderConfiguration configuration = new ImageLoaderConfiguration.Builder(this).build();
ImageLoader.getInstance().init(configuration);*/
}
}