歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
您现在的位置: Linux教程網 >> UnixLinux >  >> Linux編程 >> Linux編程

在Android迷你廣告上添加浮動的關閉按鈕

在開發Android應用時,有時為了收益會增加一些廣告。但是廣告不斷的滾動顯示,又很煩人,降低用戶體驗,所以就需要增加一個關閉的按鈕來隱藏或者關閉廣告。有的應用是直接將關閉廣告的功能做到了設置界面裡邊,但有的是在廣告上增加了一個按鈕。這裡以迷你廣告為例。

萬普的迷你廣告是一個LinearLayout,我開始嘗試著在上面直接添加一個關閉按鈕,然後設置相應的布局參數,但是效果不理想。後來改用RelativeLayout作為父容器,將迷你廣告的LinearLayout和關閉按鈕一同放進去。下面是實現的代碼。

Waps.java

 

package com.sparkle.ad;

import android.app.Activity;
import android.content.Context;
import android.content.pm.ApplicationInfo;
import android.content.pm.PackageManager;
import android.content.pm.PackageManager.NameNotFoundException;
import android.graphics.Color;
import android.opengl.Visibility;
import android.text.Layout;
import android.view.Gravity;
import android.view.View;
import android.view.ViewGroup;
import android.view.View.OnClickListener;
import android.widget.FrameLayout;
import android.widget.ImageView;
import android.widget.LinearLayout;
import android.widget.LinearLayout.LayoutParams;
import android.widget.RelativeLayout;
import cn.waps.AppConnect;

import com.sparkle.qrcode.R;

public class Waps {
 private static String _appId = "";
 private static String _advertismentPlatform = "default";
 private static AppConnect _appConnect = null;

 private static void GetChannelInfo(Activity activity) {
  ApplicationInfo appInfo = null;
  try {
   appInfo = activity.getPackageManager().getApplicationInfo(
     activity.getPackageName(), PackageManager.GET_META_DATA);
  } catch (NameNotFoundException e) {
   e.printStackTrace();
  }

  _appId = appInfo.metaData.getString("APP_ID");
  _advertismentPlatform = appInfo.metaData.getString("APP_PID");

 }

 public static void Start(Activity activity) {

  GetChannelInfo(activity);
  _appConnect = AppConnect.getInstance(_appId, _advertismentPlatform,
    activity);
  if (_appConnect == null) {
   return;
  }
  _appConnect.setAdBackColor(Color.argb(50, 120, 240, 120));

  _appConnect.setAdForeColor(Color.YELLOW);

  LinearLayout miniLayout = GenerateMiniLinearLayout(activity);

  _appConnect.showMiniAd(activity, miniLayout, 10);

 }

 private static LinearLayout GenerateMiniLinearLayout(Activity activity) {
  final RelativeLayout relativeLayout = new RelativeLayout(activity);
  LinearLayout miniLayout = new LinearLayout(activity);

  ImageView close_imageView = new ImageView(activity);
  close_imageView.setBackgroundResource(R.drawable.close);
  close_imageView.setOnClickListener(new OnClickListener() {

   @Override
   public void onClick(View v) {
    relativeLayout.setVisibility(View.GONE);

   }
  });
  RelativeLayout.LayoutParams closeParams = new RelativeLayout.LayoutParams(
    RelativeLayout.LayoutParams.WRAP_CONTENT,
    RelativeLayout.LayoutParams.WRAP_CONTENT);
  closeParams.addRule(RelativeLayout.ALIGN_PARENT_RIGHT);
  close_imageView.setLayoutParams(closeParams);

  relativeLayout.addView(miniLayout);
  relativeLayout.addView(close_imageView);

  FrameLayout.LayoutParams layoutParams = new FrameLayout.LayoutParams(
    RelativeLayout.LayoutParams.MATCH_PARENT,
    RelativeLayout.LayoutParams.WRAP_CONTENT);
  layoutParams.gravity=Gravity.BOTTOM;

  activity.addContentView(relativeLayout, layoutParams);
  return miniLayout;
 }

 public static void Close(Context context) {
  AppConnect.getInstance(context).close();
 }

}

注:

(1)、APP_ID和APP_PID在AndroidManifest.xml中配置。

(2)、Start函數用來啟動廣告。

(3)、Close函數用來關閉廣告。

(4)、GenerateMiniLinearLayout函數中生成了RelativeLayout的相對布局。在RelativeLayout中,添入迷你廣告miniLayout和關閉按鈕close_imageView。close_imageView設置背景圖和點擊事件。點擊事件中,只是將廣告隱藏了,如果有需要可以直接關閉。

要點:

(1)、為了能將close_imageView設置到右側,需要使用RelativeLayout.LayoutParams(不是LinearLayout.LayoutParams,我開始用的是這個,然後用gravity,怎麼都達不到效果),再使用addRuler來設置ALIGN_PARENT_RIGHT。

(2)、在addContentView中,需要布局RelativeLayout。使用FrameLayout.LayoutParams來布局(注意一定要用這個,RelativeLayout.LayoutParams和LinearLayout.LayoutParams都用過,達不到效果),設置gravity即可。

下面是效果圖:

Android 4.4.4 發布下載 http://www.linuxidc.com/Linux/2014-06/103467.htm

最簡單的Ubuntu Touch & Android 雙系統安裝方式 http://www.linuxidc.com/Linux/2014-01/94881.htm

在Nexus上實現Ubuntu和Android 4.4.2 雙啟動 http://www.linuxidc.com/Linux/2014-05/101849.htm

Ubuntu 14.04 配置 Android SDK 開發環境 http://www.linuxidc.com/Linux/2014-05/101039.htm

64位Ubuntu 11.10下Android開發環境的搭建(JDK+Eclipse+ADT+Android SDK詳細) http://www.linuxidc.com/Linux/2013-06/85303.htm

Ubuntu 14.04 x64配置Android 4.4 kitkat編譯環境的方法 http://www.linuxidc.com/Linux/2014-04/101148.htm

Ubuntu 12.10 x64 安裝 Android SDK http://www.linuxidc.com/Linux/2013-03/82005.htm

更多Android相關信息見Android 專題頁面 http://www.linuxidc.com/topicnews.aspx?tid=11

Copyright © Linux教程網 All Rights Reserved