Android 起始页广告

编写Android的项目时大都会碰到一个需求就是广告的问题,一般广告也都是在启动页上,
有一个大概三到五秒的广告,然后跳转进下一个界面,或者点击跳过时进入下一个界面,
之前写过类似的功能,然而没有写博文的习惯,所以每次需要用到这个功能的时候总是需要自己
再写一次逻辑,这次干脆记下来,免得下次还要重复写这个逻辑。效果如下,图片是随便找的,
有点难看,主要看思路:

效果图

首先建立一个activity,并建好xml布局文件,先上xml文件:


<?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/welcome_image"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical"
    tools:context="com.example.myapplication.view.start_activity.WelcomeActivity">

    <RelativeLayout
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:layout_weight="1">
    <!--这个imageview放置广告图-->
        <ImageView
            android:id="@+id/welcome_ad"
            android:layout_width="match_parent"
            android:layout_height="match_parent"
            android:layout_weight="1"
            android:scaleType="fitXY"
            android:src="@mipmap/chart_main" />
    <!--这个textview用来显示倒数秒数-->
        <TextView
            android:layout_width="@dimen/x70"
            android:layout_height="@dimen/y20"
            android:background="@drawable/search_shape"
            android:gravity="center"
            android:textColor="@color/bg_Black"
            android:textSize="@dimen/x16"
            android:id="@+id/btn_skip"
            android:layout_alignParentTop="true"
            android:layout_alignParentEnd="true"
            android:layout_marginRight="@dimen/x5"
            android:layout_marginTop="@dimen/y20" />
    </RelativeLayout>
    <!--这个imageview是预留的logo图放置位置,上面三分之二为广告图-->
    <ImageView
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:layout_weight="3"
        android:scaleType="fitXY" />
</LinearLayout>

大致布局就是这样,welcome_ad是放置广告的控件,textView是放置倒数计时的时间的,
做好了布局,就开始写逻辑和功能了,首先需要在放置广告的地方放置图片,既然是广告,肯定要
从网络上获取图片了,我用的是xutils框架,比较实用的网络请求框架,使用方法网上一堆堆,
这里就不赘述了,**好了,现在开始,先推荐一个加载图片的简单方式:

//这里的GET_AD是图片的网络地址
x.image().bind(imageView,GET_AD);

xutils ,就是这么简单,广告打完了,正式开始,图片一般是从网络上获取,
我做项目之前的需求是图片从服务器获取,图片展示的时间也是由服务器来控制:


        /*
        * @params url  获取图片路径的接口
        * */
        x.http().get(new RequestParams(url), new Callback.CommonCallback<String>() {
            @Override
            public void onSuccess(String s) {
                try {
                    //通过Json解析数据
                    JSONObject object = new JSONObject(s);
                    //imgPath是图片的网络路径
                    String imgPath = object.getString("pic");
                    //timeLong是图片展示的时间长度
                    final String timeLong = object.getString("count");
                    x.image().bind(welcome_ad, imgPath);
                    //开启一个线程,用来对展示时间进行控制
                    new Thread() {
                        @Override
                        public void run() {
                           // while (flag) {
                                try {
                                    sleep(Integer.valueOf(timeLong) * 1000);
                                       /**这里进行展示时间到了之后的操作**/
                                      /******************/
                                      /******************/
                                } catch (InterruptedException e) {
                                    e.printStackTrace();
                                }
                           // }
                        }
                    }.start();
                    //这个线程是给textView发送要填充的值用的
                    new Thread() {
                        @Override
                        public void run() {
                            try {
                                if (time != null && !time.equals("")) {
                                   for (int i = Integer.valueOf(time); i >= 0; i--) {
                                       //我在这里用的是handler来发送消息
                                       //每隔一秒发送一次消息
                                        mHandler.sendEmptyMessage(i);
                                        sleep(1000);
                                    }
                                }
                            } catch (InterruptedException e) {
                                e.printStackTrace();
                            }
                        }
                    }.start();

                } catch (JSONException e) {
                    e.printStackTrace();
                }
            }

            @Override
            public void onError(Throwable throwable, boolean b) {

            }

            @Override
            public void onCancelled(CancelledException e) {

            }

            @Override
            public void onFinished() {

            }
        });

OK,逻辑已经屡清楚了,上面一个开启了两个线程,第一个是对图片展示的时间进行控制,
第二个是对图片右上角的跳过按钮内的内容进行控制,handler已经开始发送消息了,接下来就该接收
消息了:

 //接收handler发送的消息,进行处理
    Handler mHandler = new Handler() {
        @Override
        public void handleMessage(Message msg) {
            super.handleMessage(msg);
            //这里的btn_skip是跳过按钮,我用的是TextView;
            btn_skip.setText("(" + String.valueOf(msg.what) + "s)跳过");
        }
    };

好啦,基本思路就是这样了,这样一来就实现了倒计时展示图片,接下来还要有点击跳过后直接跳过的
动作:

//跳过按键
        btn_skip.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
              //在这里写跳过出发后的操作
            }
        });

启动页的广告到这里就已经实现了,代码比较简单,就不上demo了,觉得我的文章对你有
帮助的话,帮我顶一下吧,如有错误之处,也欢迎指出。

本文为博主的原创文章,转载请注明出处

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

qq_31699831

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

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

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

打赏作者

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

抵扣说明:

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

余额充值