Banner Activity

本文介绍了一种使用Java实现Banner轮播图的方法,包括设置图片集合、标题集合、动画效果等,并通过Glide进行图片加载。

private void initbanner() {
    //设置图片加载集合
    imageArray=new ArrayList<>();

    imageArray.add("http://img3.imgtn.bdimg.com/it/u=2758743658,581437775&fm=15&gp=0.jpg");
    imageArray.add("http://img3.imgtn.bdimg.com/it/u=2105877023,3759180926&fm=15&gp=0.jpg");
    imageArray.add("http://img2.imgtn.bdimg.com/it/u=1876814088,3589919070&fm=15&gp=0.jpg");

    //设置图片标题集合
    imageTitle=new ArrayList<>();
    imageTitle.add("aaaaaaaaa");
    imageTitle.add("bbbbbbbbb");
    imageTitle.add("ccccccccc");

    //设置banner样式
    mBanner.setBannerStyle(BannerConfig.CIRCLE_INDICATOR_TITLE_INSIDE);
    //设置图片加载器
    mBanner.setImageLoader(new GlideImageLoader());
    //设置图片集合
    mBanner.setImages(imageArray);
    //设置banner动画效果
    mBanner.setBannerAnimation(Transformer.RotateDown);
    //设置标题集合(当banner样式有显示title时)
    mBanner.setBannerTitles(imageTitle);
    //设置轮播时间
    mBanner.setDelayTime(1500);
    //设置指示器位置(当banner模式中有指示器时)
    mBanner.setIndicatorGravity(BannerConfig.CENTER);
    //banner设置方法全部调用完毕时最后调用
    mBanner.start();

}

 

 

private class GlideImageLoader extends ImageLoader {

    @Override
    public void displayImage(Context context, Object path, ImageView imageView) {
        //Glide 加载图片简单用法
        Glide.with(context).load((String) path).into(imageView);
    }
}

 

 

private List<String> imageTitle;
private List<String> imageArray;

implementation 'com.youth.banner:banner:1.4.9'
implementation 'com.github.bumptech.glide:glide:3.7.0'

 

 

 

 

 

 

 

 

import android.os.Bundle; import android.os.Handler; import android.os.Looper; import android.text.Html; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; import androidx.annotation.NonNull; import androidx.annotation.Nullable; import androidx.fragment.app.Fragment; import androidx.viewpager2.widget.ViewPager2; import com.google.android.material.tabs.TabLayout; import com.google.gson.Gson; import com.google.gson.reflect.TypeToken; import org.json.JSONObject; import java.util.List; public class Fragment1 extends Fragment { private final MainActivity mainActivity; private Fragment1Binding binding; private final Handler handler = new Handler(Looper.getMainLooper()); private final Runnable runnable = new Runnable() { @Override public void run() { int value = binding.vp.getCurrentItem(); binding.vp.setCurrentItem(value + 1); handler.postDelayed(this, 3000); } }; public Fragment1(MainActivity mainActivity) { this.mainActivity = mainActivity; } @Nullable @Override public View onCreateView(@NonNull LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) { binding = Fragment1Binding.inflate(inflater); getSearchView(); getViewPager(); getGv(); getHotList(); getTab(); getList(9); return binding.getRoot(); } private void getList(int i) { HttpUtil.get("/prod-api/press/press/list?type=" + i, new HttpUtil.HttpCallback() { @Override public void onResponse(String response) { List<NewXw> rows = new Gson().fromJson( new JSONObject(response).optJSONArray("rows").toString(), new TypeToken<List<NewXw>>() {}.getType() ); rows.sort((o1, o2) -> o2.getCreateTime().compareTo(o1.getCreateTime())); binding.list.setAdapter(new BaseReAdapter<XwItemBinding, NewXw>(rows, XwItemBinding::inflate) { @Override protected void setData(XwItemBinding binding, NewXw data, int position) { if (data.getCover() != null) { binding.image.loadImg(data.getCover()); } binding.title.setText(data.getTitle()); binding.body.setText(Html.fromHtml(data.getContent())); binding.pls.setText("评论数:" + data.getCommentNum()); binding.time.setText(data.getCreateTime()); } }); } }); } private void getTab() { HttpUtil.get("/prod-api/press/category/list", new HttpUtil.HttpCallback() { @Override public void onResponse(String response) { List<NewXwTab> rows = new Gson().fromJson( new JSONObject(response).optJSONArray("data").toString(), new TypeToken<List<NewXwTab>>() {}.getType() ); for (NewXwTab tab : rows) { binding.tabLayout.addTab(binding.tabLayout.newTab().setText(tab.getName())); } binding.tabLayout.addOnTabSelectedListener(new TabLayout.OnTabSelectedListener() { @Override public void onTabSelected(TabLayout.Tab tab) { getList(rows.get(tab.getPosition()).getId()); } @Override public void onTabUnselected(TabLayout.Tab tab) {} @Override public void onTabReselected(TabLayout.Tab tab) {} }); } }); } private void getHotList() { HttpUtil.get("/prod-api/press/press/list?hot=y", new HttpUtil.HttpCallback() { @Override public void onResponse(String response) { List<NewXw> rows = new Gson().fromJson( new JSONObject(response).optJSONArray("rows").toString(), new TypeToken<List<NewXw>>() {}.getType() ); binding.hotList.setAdapter(new BaseReAdapter<RmztItemBinding, NewXw>(rows, RmztItemBinding::inflate) { @Override protected void setData(RmztItemBinding binding, NewXw data, int position) { binding.image.loadImg(data.getCover()); binding.title.setText(data.getTitle()); binding.layout.setOnClickListener(v -> { startActivity(new Intent(mainActivity, HotActivity.class) .putExtra("data", data)); }); } }); } }); } private void getGv() { HttpUtil.get("/prod-api/api/service/list", new HttpUtil.HttpCallback() { @Override public void onResponse(String response) { List<NewGv> rows = new Gson().fromJson( new JSONObject(response).optJSONArray("rows").toString(), new TypeToken<List<NewGv>>() {}.getType() ); rows.sort((o1, o2) -> Integer.compare(o2.getSort(), o1.getSort())); binding.gv.setAdapter(new BaseReAdapter<GvItemBinding, NewGv>(rows, GvItemBinding::inflate) { @Override protected void setData(GvItemBinding binding, NewGv data, int position) { if (position == 9) { binding.image.setImageResource(R.drawable.gdfw); binding.title.setText("更多服务"); } else { binding.image.loadImg(data.getImgUrl()); binding.title.setText(data.getServiceName()); } binding.layout.setOnClickListener(v -> { switch (binding.title.getText().toString()) { case "青年驿站": startActivity(new Intent(mainActivity, QnyzActivity.class)); break; case "更多服务": mainActivity.binding.vp.setCurrentItem(1); mainActivity.binding.bottom.setSelectedItemId(R.id.item2); break; default: startActivity(new Intent(mainActivity, TempActivity.class) .putExtra("data", data.getServiceName())); } }); } @Override public int getItemCount() { return 10; } }); } }); } private void getViewPager() { HttpUtil.get("/prod-api/api/rotation/list", new HttpUtil.HttpCallback() { @Override public void onResponse(String response) { List<NewBanner> rows = new Gson().fromJson( new JSONObject(response).optJSONArray("rows").toString(), new TypeToken<List<NewBanner>>() {}.getType() ); binding.vp.setAdapter(new BannerReAdapter<BannerItemBinding, NewBanner>(rows, BannerItemBinding::inflate) { @Override protected void setData(BannerItemBinding binding, NewBanner data, int position) { int positionData = position % rows.size(); binding.imageView.loadImg(rows.get(positionData).getAdvImg()); binding.imageView.setOnClickListener(v -> { startActivity(new Intent(mainActivity, BannerActivity.class) .putExtra("data", data.getAdvImg())); }); } @Override public int getItemCount() { return Integer.MAX_VALUE; } }); binding.vp.registerOnPageChangeCallback(new ViewPager2.OnPageChangeCallback() { @Override public void onPageScrolled(int position, float positionOffset, int positionOffsetPixels) { super.onPageScrolled(position, positionOffset, positionOffsetPixels); switch (position % rows.size()) { case 0: setIndicatorBackground(R.drawable.ydy_item1, R.drawable.ydy_item2, R.drawable.ydy_item2, R.drawable.ydy_item2, R.drawable.ydy_item2, R.drawable.ydy_item2); break; case 1: setIndicatorBackground(R.drawable.ydy_item2, R.drawable.ydy_item1, R.drawable.ydy_item2, R.drawable.ydy_item2, R.drawable.ydy_item2, R.drawable.ydy_item2); break; case 2: setIndicatorBackground(R.drawable.ydy_item2, R.drawable.ydy_item2, R.drawable.ydy_item1, R.drawable.ydy_item2, R.drawable.ydy_item2, R.drawable.ydy_item2); break; case 3: setIndicatorBackground(R.drawable.ydy_item2, R.drawable.ydy_item2, R.drawable.ydy_item2, R.drawable.ydy_item1, R.drawable.ydy_item2, R.drawable.ydy_item2); break; case 4: setIndicatorBackground(R.drawable.ydy_item2, R.drawable.ydy_item2, R.drawable.ydy_item2, R.drawable.ydy_item2, R.drawable.ydy_item1, R.drawable.ydy_item2); break; case 5: setIndicatorBackground(R.drawable.ydy_item2, R.drawable.ydy_item2, R.drawable.ydy_item2, R.drawable.ydy_item2, R.drawable.ydy_item2, R.drawable.ydy_item1); break; } } private void setIndicatorBackground(int view1Res, int view2Res, int view3Res, int view4Res, int view5Res, int view6Res) { binding.view1.setBackgroundResource(view1Res); binding.view2.setBackgroundResource(view2Res); binding.view3.setBackgroundResource(view3Res); binding.view4.setBackgroundResource(view4Res); binding.view5.setBackgroundResource(view5Res); binding.view6.setBackgroundResource(view6Res); } }); } }); } @Override public void onResume() { super.onResume(); handler.postDelayed(runnable, 3000); } @Override public void onStop() { super.onStop(); handler.removeCallbacks(runnable); } @Override public void onDestroy() { super.onDestroy(); handler.removeCallbacks(runnable); } private void getSearchView() { binding.searchView.setOnQueryTextListener(new SearchView.OnQueryTextListener() { @Override public boolean onQueryTextSubmit(String query) { String data = query; startActivity(new Intent(mainActivity, SearchActivity.class) .putExtra("data", data)); return false; } @Override public boolean onQueryTextChange(String newText) { return false; } }); } // Helper method to start activity private void startActivity(Intent intent) { mainActivity.startActivity(intent); } }解释每一行代码(中文解释)
最新发布
05-21
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

梦想不上班

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值