Android 起始页广告

来源:互联网 发布:淘宝手机详情尺寸大小 编辑:程序博客网 时间:2024/06/14 16:06

编写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 0
原创粉丝点击