Skip to content

Commit

Permalink
Ads fixes:
Browse files Browse the repository at this point in the history
(1) Font size and background
(2) Fix buttons to use 48dp

Support dismiss instead of X.

Closes brave/brave-browser#12956
  • Loading branch information
yachtcaptain23 committed May 16, 2021
1 parent 6302bd6 commit 3c27368
Show file tree
Hide file tree
Showing 4 changed files with 136 additions and 92 deletions.
1 change: 1 addition & 0 deletions android/brave_java_resources.gni
Original file line number Diff line number Diff line change
Expand Up @@ -527,6 +527,7 @@ brave_java_resources = [
"java/res/drawable/ac_radio_button_selector.xml",
"java/res/drawable/ac_radio_group_bg.xml",
"java/res/drawable/ac_text_selector.xml",
"java/res/drawable/ads_custom_notification_border.xml",
"java/res/drawable/bat_ads_close_button.xml",
"java/res/drawable/bat_ads_logo_button.xml",
"java/res/drawable/bat_panel_gradient.xml",
Expand Down
5 changes: 5 additions & 0 deletions android/java/res/drawable/ads_custom_notification_border.xml
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
<shape xmlns:android="http://schemas.android.com/apk/res/android" android:shape="rectangle" >
<solid android:color="#edf0f2" />
<stroke android:width="1dip" android:color="#c9d3da"/>
<corners android:radius="4dp"/>
</shape>
110 changes: 51 additions & 59 deletions android/java/res/layout/brave_ads_custom_notification.xml
Original file line number Diff line number Diff line change
@@ -1,71 +1,63 @@
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
<RelativeLayout
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:orientation="vertical"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:background="#edf0f2"
android:id="@+id/brave_ads_custom_notification_popup">

android:orientation="horizontal">
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:orientation="vertical"
android:padding="2dp"
android:orientation="horizontal"
>
<TextView
android:id="@+id/brave_ads_custom_notification_header"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:background="@drawable/ads_custom_notification_border"
android:id="@+id/brave_ads_custom_notification_popup">
<LinearLayout
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:fontFamily="@font/poppins_medium"
android:textColor="#000000"
android:textSize="12sp"
android:paddingStart="13dp"
android:paddingTop="8dp"/>
android:padding="2dp"
android:orientation="horizontal"
>
<TextView
android:id="@+id/brave_ads_custom_notification_header"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:fontFamily="@font/poppins_medium"
android:textColor="#000000"
android:textSize="14sp"
android:paddingStart="13dp"
android:paddingTop="8dp"/>
<View
android:layout_width="0dp"
android:layout_height="0dp"
android:layout_weight="1" />
<ImageView
android:layout_width="wrap_content"
android:layout_height="20dp"
android:layout_gravity="center"
android:src="@drawable/bat_ads_logo_button"
android:paddingTop="2dp"
android:paddingEnd="2dp"
android:id="@+id/brave_ads_logo" />

<View
android:layout_width="0dp"
android:layout_height="0dp"
android:layout_weight="1" />

<ImageView
</LinearLayout>
<LinearLayout
android:layout_width="wrap_content"
android:layout_height="20dp"
android:layout_gravity="end"
android:src="@drawable/bat_ads_logo_button"
android:paddingTop="2dp"
android:paddingEnd="2dp"
android:contentDescription="@null"
android:id="@+id/brave_ads_logo"
/>

<ImageView
android:layout_width="20dp"
android:layout_height="20dp"
android:layout_gravity="end"
android:paddingTop="2dp"
android:paddingEnd="2dp"
android:contentDescription="@null"
android:src="@drawable/bat_ads_close_button"
android:id="@+id/brave_ads_custom_notification_close_button"
/>
</LinearLayout>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:padding="2dp"
android:orientation="horizontal"
>
<TextView
android:id="@+id/brave_ads_custom_notification_body"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:fontFamily="@font/poppins_light"
android:textColor="#000000"
android:paddingEnd="2dp"
android:paddingStart="13dp"
android:layout_marginBottom="7dp"
android:textSize="11sp"
tools:ignore="SmallSp" />
android:padding="2dp"
android:orientation="horizontal">
<TextView
android:id="@+id/brave_ads_custom_notification_body"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:fontFamily="@font/poppins_light"
android:textColor="#000000"
android:paddingEnd="2dp"
android:paddingStart="13dp"
android:layout_marginBottom="7dp"
android:textSize="14sp" />
</LinearLayout>
</LinearLayout>
</LinearLayout>
</RelativeLayout>
Original file line number Diff line number Diff line change
Expand Up @@ -10,8 +10,12 @@
import android.app.AlertDialog;
import android.content.Context;
import android.content.Intent;
import android.graphics.Color;
import android.graphics.drawable.ColorDrawable;
import android.util.DisplayMetrics;
import android.view.Gravity;
import android.view.LayoutInflater;
import android.view.MotionEvent;
import android.view.View;
import android.view.Window;
import android.view.WindowManager;
Expand All @@ -21,9 +25,9 @@
import org.chromium.base.ContextUtils;
import org.chromium.base.annotations.CalledByNative;
import org.chromium.chrome.R;
import org.chromium.chrome.browser.app.BraveActivity;
import org.chromium.chrome.browser.BraveAdsNativeHelper;
import org.chromium.chrome.browser.ChromeTabbedActivity;
import org.chromium.chrome.browser.app.BraveActivity;
import org.chromium.chrome.browser.notifications.BraveOnboardingNotification;
import org.chromium.chrome.browser.profiles.Profile;
import org.chromium.chrome.browser.tab.TabLaunchType;
Expand All @@ -32,6 +36,12 @@ public class BraveAdsNotificationDialog {

static AlertDialog mAdsDialog;
static String mNotificationId;
static final int MIN_DISTANCE_FOR_DISMISS = 20;
static final int MAX_DISTANCE_FOR_TAP = 5;

// Track when touch events on the dialog are down and when they are up
static float mYDown;
static float mYUp;

public static void showAdNotification(Context context, final String notificationId,
final String origin, final String title, final String body) {
Expand Down Expand Up @@ -62,52 +72,80 @@ public static void showAdNotification(Context context, final String notification

wlp.gravity = Gravity.TOP;
wlp.dimAmount = 0.0f;
wlp.flags |= WindowManager.LayoutParams.FLAG_DIM_BEHIND;
wlp.flags |= WindowManager.LayoutParams.FLAG_DIM_BEHIND |
WindowManager.LayoutParams.FLAG_NOT_TOUCH_MODAL |
WindowManager.LayoutParams.FLAG_NOT_FOCUSABLE;

mAdsDialog.setCanceledOnTouchOutside(false);
mAdsDialog.setCancelable(false);

window.setAttributes(wlp);

window.setFlags(WindowManager.LayoutParams.FLAG_NOT_TOUCH_MODAL,
WindowManager.LayoutParams.FLAG_NOT_TOUCH_MODAL);

ImageView closeButton = mAdsDialog.findViewById(R.id.brave_ads_custom_notification_close_button);
window.setBackgroundDrawable(new ColorDrawable(Color.TRANSPARENT));

((TextView) mAdsDialog.findViewById(R.id.brave_ads_custom_notification_header)).setText(title);
((TextView) mAdsDialog.findViewById(R.id.brave_ads_custom_notification_body)).setText(body);

closeButton.setOnClickListener(new View.OnClickListener() {
mNotificationId = notificationId;
mAdsDialog.findViewById(R.id.brave_ads_custom_notification_popup).setOnTouchListener(new View.OnTouchListener() {
@Override
public void onClick(View view) {
mAdsDialog.dismiss();
mAdsDialog = null;
BraveAdsNativeHelper.nativeOnCloseAdNotification(
Profile.getLastUsedRegularProfile(), mNotificationId, true);
mNotificationId = null;
public boolean onTouch(View v, MotionEvent event) {
float deltaY;
float y;
switch (event.getAction()) {
case MotionEvent.ACTION_DOWN:
mYDown = event.getY();
break;
case MotionEvent.ACTION_MOVE:
y = event.getY();
deltaY = mYDown - y;
if (deltaY > 0) {
v.animate().translationY(-1 * deltaY);
}
break;
case MotionEvent.ACTION_UP:
mYUp = event.getY();
if (mYDown != 0.0f) {
deltaY = mYDown - mYUp;
} else {
return false;
}
if (pxToDp(deltaY, context.getResources().getDisplayMetrics()) > MIN_DISTANCE_FOR_DISMISS) {
mAdsDialog.dismiss();
mAdsDialog = null;
BraveAdsNativeHelper.nativeOnCloseAdNotification(
Profile.getLastUsedRegularProfile(),
mNotificationId, false);
mNotificationId = null;
} else if (deltaY < 0) {
// Swiped down
v.animate().translationY(0);
} else if (deltaY < MAX_DISTANCE_FOR_TAP) {
adsDialogTapped(origin);
} else {
v.animate().translationY(0);
}
break;
}
return true;
}
});
}

mAdsDialog.findViewById(R.id.brave_ads_custom_notification_popup).setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
// We don't take the user to the page in this class, native code handles opening a new tab for us.
if (mNotificationId.equals(BraveOnboardingNotification.BRAVE_ONBOARDING_NOTIFICATION_TAG)) {
mAdsDialog.dismiss();
mAdsDialog = null;
ChromeTabbedActivity chromeTabbedActivity = BraveActivity.getChromeTabbedActivity();
if (chromeTabbedActivity != null) {
chromeTabbedActivity.getTabCreator(false).launchUrl(origin, TabLaunchType.FROM_CHROME_UI);
}
} else {
mAdsDialog.dismiss();
mAdsDialog = null;
BraveAdsNativeHelper.nativeOnClickAdNotification(
Profile.getLastUsedRegularProfile(), mNotificationId);
}
mNotificationId = null;
private static void adsDialogTapped(final String origin) {
if (mNotificationId.equals(BraveOnboardingNotification.BRAVE_ONBOARDING_NOTIFICATION_TAG)) {
mAdsDialog.dismiss();
mAdsDialog = null;
ChromeTabbedActivity chromeTabbedActivity = BraveActivity.getChromeTabbedActivity();
if (chromeTabbedActivity != null) {
chromeTabbedActivity.getTabCreator(false).launchUrl(origin, TabLaunchType.FROM_CHROME_UI);
}
});
} else {
mAdsDialog.dismiss();
mAdsDialog = null;
BraveAdsNativeHelper.nativeOnClickAdNotification(
Profile.getLastUsedRegularProfile(), mNotificationId);
}
mNotificationId = null;
}

@CalledByNative
Expand All @@ -124,10 +162,18 @@ private static void closeAdsNotification(final String notificationId) {
mAdsDialog.dismiss();
BraveAdsNativeHelper.nativeOnCloseAdNotification(
Profile.getLastUsedRegularProfile(), mNotificationId, false);
mAdsDialog = null;
}
} catch (IllegalArgumentException e) {
mAdsDialog = null;
}
}

/**
* Converts a px value to a dp value.
*/
private static int pxToDp(float value, DisplayMetrics metrics) {
return Math.round(value / ((float) metrics.densityDpi / DisplayMetrics.DENSITY_DEFAULT));
}

}

0 comments on commit 3c27368

Please sign in to comment.