android图片轮播+点击跳转广告页面

Android轮播网络图片+点击跳转广告页面————————–一些新手总是很头疼怎么获取网络图片的url之后让它像一些广告那样轮播起来,点击图片之后跳转到指定网页。效果如下
轮播页广告页

在布局引用自定义控件

<?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:layout_width="match_parent"  
    android:layout_height="match_parent"  
    android:background="#FFFFFF"  
    tools:context="com.example.slideshowdemo.MainActivity"  >  


    <!-- 主题图片 -->  
    <com.example.sideshowview.SlideShowView
        android:id="@+id/slideshowView"  
        android:layout_width="fill_parent"  
        android:layout_height="200dp"  
        android:layout_centerHorizontal="true" />  

</LinearLayout>

MainActivity.java

public class MainActivity extends Activity {

    private String[] imageUrls = new String[]{  
            "http://d.hiphotos.baidu.com/image/pic/item/9f2f070828381f30b2bd028fac014c086e06f074.jpg",  
            "http://h.hiphotos.baidu.com/image/pic/item/2934349b033b5bb55e73afd833d3d539b600bc74.jpg",  
            "http://b.hiphotos.baidu.com/image/pic/item/ac345982b2b7d0a2bdfa8bbbceef76094b369ae1.jpg",  
            "http://g.hiphotos.baidu.com/image/pic/item/2e2eb9389b504fc213023f23e0dde71190ef6db3.jpg" } ;
    private String[] imageUris = new String[]{
            "http://www.baidu.com",
            "http://www.sina.com.cn",
            "http://www.taobao.com",
             "http://www.tudou.com" };

    private List<Map<String,String>> imageList = new ArrayList<Map<String,String>>();

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        for (int i = 0; i < 4; i++) {
            Map<String,String> image_uri = new HashMap<String,String>();
            image_uri.put("imageUrls", imageUrls[i]);
            image_uri.put("imageUris", imageUris[i]);
            imageList.add(image_uri);
        }

        SlideShowView view = (SlideShowView) findViewById(R.id.slideshowView); 
        view.setImageUrls(imageList);
    }

}

自定义轮播的详细实现

public class SlideShowView extends FrameLayout implements OnClickListener{  

    // 使用universal-image-loader插件读取网络图片,需要工程导入universal-image-loader-1.8.6-with-sources.jar  
    private ImageLoader imageLoader = ImageLoader.getInstance();  

    //轮播图图片数量  
    private final static int IMAGE_COUNT = 5;  
    //自动轮播的时间间隔  
    private final static int TIME_INTERVAL = 5;  
    //自动轮播启用开关  
    private final static boolean isAutoPlay = true;   

    //自定义轮播图的资源  
    private List<Map<String,String>> imageUrls;  
    //放轮播图片的ImageView 的list  
    private List<ImageView> imageViewsList;  
    //放圆点的View的list  
    private List<View> dotViewsList;  

    private ViewPager viewPager;  
    //当前轮播页  
    private int currentItem  = 0;  
    //定时任务  
    private ScheduledExecutorService scheduledExecutorService;  

    private Context context;  

    //Handler  
    private Handler handler = new Handler(){  

        @Override  
        public void handleMessage(Message msg) {  
            // TODO Auto-generated method stub  
            super.handleMessage(msg);  
            viewPager.setCurrentItem(currentItem);  
        }  

    };  

    public SlideShowView(Context context) {  
        this(context,null);  
        // TODO Auto-generated constructor stub  
    }  
    public SlideShowView(Context context, AttributeSet attrs) {  
        this(context, attrs, 0);  
        // TODO Auto-generated constructor stub  
    }  
    public SlideShowView(Context context, AttributeSet attrs, int defStyle) {  
        super(context, attrs, defStyle);  
        this.context = context;  

        initImageLoader(context);  

        if(isAutoPlay){  
            startPlay();  
        }  

    }  
    /** 
     * 开始轮播图切换 
     */  
    private void startPlay(){  
        scheduledExecutorService = Executors.newSingleThreadScheduledExecutor();  
        scheduledExecutorService.scheduleAtFixedRate(new SlideShowTask(), 1, 4, TimeUnit.SECONDS);  
    }  
    /** 
     * 停止轮播图切换 
     */  
    private void stopPlay(){  
        scheduledExecutorService.shutdown();  
    }  
    /** 
     * 初始化相关Data 
     */  
    private void initData(){  
        imageViewsList = new ArrayList<ImageView>();  
        dotViewsList = new ArrayList<View>();  
        initUI(context);  
    }  

    public void setImageUrls(List<Map<String,String>> imageList){
        this.imageUrls = imageList;
         initData();
    }

    @Override
    public void onClick(View v) {
        // TODO Auto-generated method stub
        Intent intent = null;
        Bundle bundle = null;
        switch (v.getId()) {
        case 0:
            intent = new Intent(context,WebViewActivity.class);
            bundle = new Bundle();
            bundle.putString("url", imageUrls.get(0).get("imageUris"));
            intent.putExtras(bundle);
            context.startActivity(intent);
            break;
        case 1:
            intent = new Intent(context,WebViewActivity.class);
            bundle = new Bundle();
            bundle.putString("url", imageUrls.get(1).get("imageUris"));
            intent.putExtras(bundle);
            context.startActivity(intent);
            break;
        case 2:
            intent = new Intent(context,WebViewActivity.class);
            bundle = new Bundle();
            bundle.putString("url", imageUrls.get(2).get("imageUris"));
            intent.putExtras(bundle);
            context.startActivity(intent);
            break;
        case 3:
            intent = new Intent(context,WebViewActivity.class);
            bundle = new Bundle();
            bundle.putString("url", imageUrls.get(3).get("imageUris"));
            intent.putExtras(bundle);
            context.startActivity(intent);
            break;
        }
    }

    /** 
     * 初始化Views等UI 
     */  
    private void initUI(Context context){  
        if(imageUrls == null || imageUrls.size() == 0)  
            return;  

        LayoutInflater.from(context).inflate(R.layout.layout_slideshow, this, true);  

        LinearLayout dotLayout = (LinearLayout)findViewById(R.id.dotLayout);  
        dotLayout.removeAllViews();  

        // 热点个数与图片特殊相等  
        for (int i = 0; i < imageUrls.size(); i++) {  
            ImageView view =  new ImageView(context);  
            view.setId(i);
            view.setTag(imageUrls.get(i).get("imageUrls"));  
            if(i==0)//给一个默认图  
                view.setBackgroundResource(R.drawable.detail_p1);  
            view.setScaleType(ScaleType.FIT_XY);  
            view.setOnClickListener(this);
            imageViewsList.add(view);  

            ImageView dotView =  new ImageView(context);  
            LinearLayout.LayoutParams params = new LinearLayout.LayoutParams(LayoutParams.WRAP_CONTENT,LayoutParams.WRAP_CONTENT);  
            params.leftMargin = 4;  
            params.rightMargin = 4;  
            dotLayout.addView(dotView, params);  
            dotViewsList.add(dotView);  
        }  

        viewPager = (ViewPager) findViewById(R.id.viewPager);  
        viewPager.setFocusable(true);  

        viewPager.setAdapter(new MyPagerAdapter());  
        viewPager.setOnPageChangeListener(new MyPageChangeListener());  
    }  

    /** 
     * 填充ViewPager的页面适配器 
     *  
     */  
    private class MyPagerAdapter  extends PagerAdapter{  

        @Override  
        public void destroyItem(View container, int position, Object object) {  
            // TODO Auto-generated method stub  
            //((ViewPag.er)container).removeView((View)object);  
            ((ViewPager)container).removeView(imageViewsList.get(position));  
        }  

        @Override  
        public Object instantiateItem(View container, int position) {  
            ImageView imageView = imageViewsList.get(position);  

            imageLoader.displayImage(imageView.getTag() + "", imageView);  

            ((ViewPager)container).addView(imageViewsList.get(position));  
            return imageViewsList.get(position);  
        }  

        @Override  
        public int getCount() {  
            // TODO Auto-generated method stub  
            return imageViewsList.size();  
        }  

        @Override  
        public boolean isViewFromObject(View arg0, Object arg1) {  
            // TODO Auto-generated method stub  
            return arg0 == arg1;  
        }  
        @Override  
        public void restoreState(Parcelable arg0, ClassLoader arg1) {  
            // TODO Auto-generated method stub  

        }  

        @Override  
        public Parcelable saveState() {  
            // TODO Auto-generated method stub  
            return null;  
        }  

        @Override  
        public void startUpdate(View arg0) {  
            // TODO Auto-generated method stub  

        }  

        @Override  
        public void finishUpdate(View arg0) {  
            // TODO Auto-generated method stub  

        }  

    }  
    /** 
     * ViewPager的监听器 
     * 当ViewPager中页面的状态发生改变时调用 
     *  
     */  
    private class MyPageChangeListener implements OnPageChangeListener{  

        boolean isAutoPlay = false;  

        @Override  
        public void onPageScrollStateChanged(int arg0) {  
            // TODO Auto-generated method stub  
            switch (arg0) {  
            case 1:// 手势滑动,空闲中  
                isAutoPlay = false;  
                break;  
            case 2:// 界面切换中  
                isAutoPlay = true;  
                break;  
            case 0:// 滑动结束,即切换完毕或者加载完毕  
                // 当前为最后一张,此时从右向左滑,则切换到第一张  
                if (viewPager.getCurrentItem() == viewPager.getAdapter().getCount() - 1 && !isAutoPlay) {  
                    viewPager.setCurrentItem(0);  
                }  
                // 当前为第一张,此时从左向右滑,则切换到最后一张  
                else if (viewPager.getCurrentItem() == 0 && !isAutoPlay) {  
                    viewPager.setCurrentItem(viewPager.getAdapter().getCount() - 1);  
                }  
                break;  
        }  
        }  

        @Override  
        public void onPageScrolled(int arg0, float arg1, int arg2) {  
            // TODO Auto-generated method stub  

        }  

        @Override  
        public void onPageSelected(int pos) {  
            // TODO Auto-generated method stub  

            currentItem = pos;  
            for(int i=0;i < dotViewsList.size();i++){  
                if(i == pos){  
                    ((View)dotViewsList.get(pos)).setBackgroundResource(R.drawable.compose_guide_check_box_number);  
                }else {  
                    ((View)dotViewsList.get(i)).setBackgroundResource(R.drawable.compose_guide_check_box_default);  
                }  
            }  
        }  

    }  

    /** 
     *执行轮播图切换任务 
     */  
    private class SlideShowTask implements Runnable{  

        @Override  
        public void run() {  
            // TODO Auto-generated method stub  
            synchronized (viewPager) {  
                currentItem = (currentItem+1)%imageViewsList.size();  
                handler.obtainMessage().sendToTarget();  
            }  
        }  

    }  

    /** 
     * 销毁ImageView资源,回收内存 
     */  
    private void destoryBitmaps() {  

        for (int i = 0; i < IMAGE_COUNT; i++) {  
            ImageView imageView = imageViewsList.get(i);  
            Drawable drawable = imageView.getDrawable();  
            if (drawable != null) {  
                //解除drawable对view的引用  
                drawable.setCallback(null);  
            }  
        }  
    }  


    public static void initImageLoader(Context context) {  
        ImageLoaderConfiguration config = new ImageLoaderConfiguration.Builder(context)
                                            .threadPriority(Thread.NORM_PRIORITY - 2)
                                            .denyCacheImageMultipleSizesInMemory()
                                            .discCacheFileNameGenerator(new Md5FileNameGenerator())
                                            .tasksProcessingOrder(QueueProcessingType.LIFO)
                                            .writeDebugLogs() 
                                            .build();  
        ImageLoader.getInstance().init(config);  
    }

}  

带指示器的布局

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"  
    android:layout_width="match_parent"  
    android:layout_height="match_parent">  

    <android.support.v4.view.ViewPager  
        android:id="@+id/viewPager"  
        android:layout_width="match_parent"  
        android:layout_height="match_parent" />  

    <LinearLayout android:id="@+id/dotLayout"  
        android:layout_width="match_parent"  
        android:layout_height="wrap_content"  
        android:layout_alignParentBottom="true"  
        android:padding="8dp"  
        android:gravity="right"  
        android:orientation="horizontal">  

        <View  
            android:id="@+id/v_dot1"  
            android:layout_width="8dp"  
            android:layout_height="8dp"  
            android:background="@drawable/compose_guide_check_box_default" />  

        <View  
            android:id="@+id/v_dot2"  
            android:layout_width="8dp"  
            android:layout_height="8dp"  
            android:layout_marginLeft="5dp"  
            android:background="@drawable/compose_guide_check_box_number" />  

    </LinearLayout>  
</RelativeLayout> 

点击广告跳转的web

public class WebViewActivity extends Activity{

    private WebView mWebView;
    private TextView mTitle;
    private ImageButton mBackBtn;
    private Bundle mBundle;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        // TODO Auto-generated method stub
        setContentView(R.layout.activity_web);
        super.onCreate(savedInstanceState);
        mBundle = getIntent().getExtras();
        initView();
    }

    public void initView() {
        // TODO Auto-generated method stub
        mWebView = (WebView) findViewById(R.id.web_webview);
        mWebView.loadUrl(mBundle.getString("url"));
        mWebView.requestFocusFromTouch();
        mWebView.getSettings().setCacheMode(WebSettings.LOAD_CACHE_ELSE_NETWORK);
        /**覆盖调用系统或自带浏览器行为打开网页*/
        mWebView.setWebViewClient(new WebViewClient(){
            @Override
            public boolean shouldOverrideUrlLoading(WebView view, String url) {
                // TODO Auto-generated method stub
                view.loadUrl(url);
                return true;
            }
        });
        /**判断加载过程*/
        mWebView.setWebChromeClient(new WebChromeClient() {
            @Override
            public void onProgressChanged(WebView view, int newProgress) {
                // TODO Auto-generated method stub
                if (newProgress == 100) {
                    // 网页加载完成

                } else {
                    // 加载中

                }
            }
        });
        initListener();
    }

    public void initListener() {
        // TODO Auto-generated method stub
        /**加载javascript*/
//      WebSettings mWebSetting = mWebView.getSettings();
//      mWebSetting.setJavaScriptEnabled(true);
//      mWebView.addJavascriptInterface(new Object() {       
//            public void clickOnAndroid() {       
//                new Handler().post(new Runnable() {       
//                    public void run() {       
//                      mWebView.loadUrl("javascript:wave()");       
//                    }       
//                });       
//            }       
//        }, "demo");

         /**打开页面时, 自适应屏幕*/
         WebSettings webSettings =   mWebView .getSettings();       
         webSettings.setUseWideViewPort(true);//设置此属性,可任意比例缩放
         webSettings.setLoadWithOverviewMode(true);

         /**便页面支持缩放*/
         webSettings.setJavaScriptEnabled(true);  
         webSettings.setBuiltInZoomControls(true);
         webSettings.setSupportZoom(true);

    }

}
  • 5
    点赞
  • 48
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
### 回答1: 抱歉,我可以回答您关于Android Studio轮播图跳转的问题。通常,您可以在轮播图上设置点击事件,并在事件处理程序中使用Intent进行页面跳转。具体实现可以参考Android开发文档或其他优秀的教程。 ### 回答2: Android Studio轮播图跳转可以通过以下步骤实现: 1. 导入依赖库:在app的build.gradle文件中的dependencies部分,添加轮播图的依赖库,如:implementation 'com.github.bumptech.glide:glide:4.12.0'。 2. 创建轮播图布局:在布局文件中,添加ViewPager元素作为轮播图的容器,并在其中添加ImageView元素作为轮播图的项。 3. 创建适配器:创建一个适配器类,继承自PagerAdapter,并实现其中的必要方法。在适配器的instantiateItem()方法中,将图片加载到ImageView中,并返回该ImageView。通过适配器的getItem()方法,获取特定位置的图片。 4. 设置轮播图跳转:给ImageView添加点击事件监听器,并在监听器中添加跳转逻辑。例如,使用Intent跳转到指定的活动。根据需要,可以为每个图片设置不同的跳转逻辑。 5. 设置自动轮播:通过Handler和Runnable,设置定时切换轮播图的效果。 以上就是使用Android Studio实现轮播图跳转的主要步骤。当然,实际的实现可能会因项目需求而有所变化和扩展。 ### 回答3: 在Android Studio中实现轮播图跳转可以通过以下步骤完成: 1. 首先,确保你已经添加了ViewPager控件和相应的适配器。ViewPager是一种可以水平滑动的容器控件,用于显示多个页面,适配器用于为ViewPager提供页面数据。 2. 在适配器中,根据需求自定义轮播图的页面布局,并通过重写getPageTitle()方法设置页面标题。 3. 然后,在Activity的onCreate()方法中,实例化ViewPager和适配器,并给ViewPager设置适配器。 4. 接下来,在适配器的instantiateItem()方法中,为每个页面设置点击事件监听器。你可以在该方法内部使用ViewPager的setCurrentItem()方法实现页面跳转。 5. 最后,为了实现自动轮播效果,你可以使用Handler和Runnable来实现循环轮播。在Activity的onStart()方法中,使用Handler的postDelayed()方法,并在Runnable中调用ViewPager的setCurrentItem()方法来滚动页面。 以上步骤是一种常见的实现方式,但具体的实现方式可能会根据你的需求有所不同。你可以根据个人的需求来调整和优化代码,以达到你想要的轮播图跳转效果。
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值