Compare commits

...

13 Commits

18 changed files with 120 additions and 186 deletions

View File

@@ -7,5 +7,5 @@ No new features planned, only updates are to keep the app available on newer And
## Update Notes
### 2025-07-11
(This article)[https://sijus.medium.com/resurrecting-a-5-year-old-android-app-a-developers-journey-59d8f5689e5b]
was very helpful in getting this app updated from SDK 25 to 36.
[This article](https://sijus.medium.com/resurrecting-a-5-year-old-android-app-a-developers-journey-59d8f5689e5b)
was very helpful in getting this app updated from SDK 25 to 36.

View File

@@ -5,7 +5,7 @@ android {
compileSdkVersion 36
defaultConfig {
applicationId "com.hyperling.carbupbeta"
minSdkVersion 8
minSdkVersion 14
targetSdkVersion 36
versionCode 7
versionName "1.0.0"
@@ -19,7 +19,16 @@ android {
}
dependencies {
/*
compile fileTree(dir: 'libs', include: ['*.jar'])
compile 'com.android.support:appcompat-v7:23.1.1'
compile 'com.google.android.gms:play-services-ads:8.3.0'
*/
implementation fileTree(dir: 'libs', include: ['*.jar'])
androidTestImplementation('com.android.support.test.espresso:espresso-core:2.2.2', {
exclude group: 'com.android.support', module: 'support-annotations'
})
// https://mvnrepository.com/artifact/com.android.support/appcompat-v7
implementation group: 'com.android.support', name: 'appcompat-v7', version: '28.0.0'
}

View File

@@ -8,39 +8,30 @@
<application
android:allowBackup="true"
android:icon="@drawable/dr_face_straight2_circle"
android:roundIcon="@drawable/dr_face_straight2_circle"
android:label="@string/app_name"
android:theme="@style/AppTheme">
android:theme="@style/CarbUp">
<activity
android:name=".Splash"
android:label="@string/app_name"
android:screenOrientation="portrait"
android:theme="@style/AppTheme.NoActionBar">
android:exported="true"
android:screenOrientation="fullSensor">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
<activity
android:name=".Main"
android:label="@string/app_name"
android:screenOrientation="portrait"
android:theme="@android:style/Theme.Light.NoTitleBar"
android:screenOrientation="fullSensor"
android:configChanges="keyboard|keyboardHidden|orientation|screenLayout|uiMode|screenSize|smallestScreenSize"/>
<activity
android:name=".Tab1"
android:label="@string/app_name"
android:theme="@android:style/Theme.Light.NoTitleBar"
android:configChanges="keyboard|keyboardHidden|orientation|screenLayout|uiMode|screenSize|smallestScreenSize"/>
<activity
android:name=".Tab2"
android:label="@string/app_name"
android:theme="@android:style/Theme.Light.NoTitleBar"
android:configChanges="keyboard|keyboardHidden|orientation|screenLayout|uiMode|screenSize|smallestScreenSize"/>
<activity
android:name=".MySettings"
android:label="@string/app_name"
android:theme="@android:style/Theme.Light.NoTitleBar"
android:configChanges="keyboard|keyboardHidden|orientation|screenLayout|uiMode|screenSize|smallestScreenSize"/>
<activity
android:name=".Home"

View File

@@ -7,14 +7,12 @@ import android.os.Bundle;
import android.app.Activity;
import android.support.v7.app.AppCompatActivity;
import android.view.Menu;
import android.view.Menu;
import android.view.MenuItem;
import android.view.View;
import android.widget.Button;
import android.widget.Toast;
import com.google.android.gms.ads.AdRequest;
import com.google.android.gms.ads.AdView;
public class Home extends AppCompatActivity {
Resources recs;
@@ -56,23 +54,6 @@ public class Home extends AppCompatActivity {
btnWhyVegan = (Button) findViewById(R.id.btnWhyVegan);
////////////////////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////////////////////
// Finally, load ads >:)
if (Build.VERSION.SDK_INT >= 9) {
// Load an ad into the AdMob banner view.
AdView adView = (AdView) findViewById(R.id.adViewHome);
AdRequest adRequest = new AdRequest.Builder()
.addTestDevice(AdRequest.DEVICE_ID_EMULATOR)
.addTestDevice("C6A494DC6E7C9AC29102694D48487084") // nexus 7
.addTestDevice("B8B7561B850A9AB24E0D5B560FC50628") // Moto G
.addTestDevice("") // Cappy, even though it doesn't support ads
.setRequestAgent("android_studio:ad_template")
.build();
adView.loadAd(adRequest);
}
////////////////////////////////////////////////////////////////////////////////////////////
}
@Override

View File

@@ -1,6 +1,7 @@
package com.hyperling.carbupbeta;
import android.content.Context;
import android.content.res.Configuration;
import android.graphics.Color;
import android.widget.LinearLayout;
import android.widget.LinearLayout.LayoutParams;
@@ -56,14 +57,27 @@ public class List extends ListInfo{
setName(listInfo.getName());
// ========== Style the buttons ==========
// Color!
linearLayout.setBackgroundColor(Color.BLACK);
btnDelete.setBackgroundColor(Color.LTGRAY);
btnDelete.setTextColor(Color.BLACK);
btnEdit.setBackgroundColor(Color.LTGRAY);
btnEdit.setTextColor(Color.BLACK);
btnItem.setBackgroundColor(Color.WHITE);
btnItem.setTextColor(getRandomColor());
/* Color! */
int currentNightMode =
context.getResources().getConfiguration().uiMode & Configuration.UI_MODE_NIGHT_MASK
;
switch (currentNightMode) {
// Light Mode
case Configuration.UI_MODE_NIGHT_NO:
linearLayout.setBackgroundColor(Color.BLACK);
btnDelete.setBackgroundColor(Color.LTGRAY);
btnDelete.setTextColor(Color.BLACK);
btnEdit.setBackgroundColor(Color.LTGRAY);
btnEdit.setTextColor(Color.BLACK);
btnItem.setBackgroundColor(Color.WHITE);
btnItem.setTextColor(getRandomColor());
break;// Dark Mode
case Configuration.UI_MODE_NIGHT_YES:
// Night mode is active, we're using dark theme
btnItem.setBackgroundColor(Color.DKGRAY);
break;
}
/* */
// Size!
//textSize = ((WindowManager) context.getSystemService(Context.WINDOW_SERVICE)).getDefaultDisplay().getWidth()/30;
btnDelete.setTextSize(16); //textSize-10);

View File

@@ -1,6 +1,7 @@
package com.hyperling.carbupbeta;
import android.content.Context;
import android.content.res.Configuration;
import android.graphics.Color;
import android.widget.LinearLayout;
import android.view.WindowManager;
@@ -64,13 +65,26 @@ public class ListItem extends ListItemInfo {
setName(listItemInfo.getName ());
// ========== Style the buttons ==========
// Color!
linearLayout.setBackgroundColor(Color.BLACK);
btnDelete.setBackgroundColor(Color.LTGRAY);
btnDelete.setTextColor(Color.BLACK);
btnEdit.setBackgroundColor(Color.LTGRAY);
btnEdit.setTextColor(Color.BLACK);
btnItem.setBackgroundColor(Color.WHITE);
/* Color! */
int currentNightMode =
context.getResources().getConfiguration().uiMode & Configuration.UI_MODE_NIGHT_MASK
;
switch (currentNightMode) {
// Light Mode
case Configuration.UI_MODE_NIGHT_NO:
linearLayout.setBackgroundColor(Color.BLACK);
btnDelete.setBackgroundColor(Color.LTGRAY);
btnDelete.setTextColor(Color.BLACK);
btnEdit.setBackgroundColor(Color.LTGRAY);
btnEdit.setTextColor(Color.BLACK);
btnItem.setBackgroundColor(Color.WHITE);
break;
// Dark Mode
case Configuration.UI_MODE_NIGHT_YES:
btnItem.setBackgroundColor(Color.DKGRAY);
break;
}
/* */
int[] colors = getColors(carbPerCal);
btnItem.setTextColor(Color.rgb(colors[0], colors[1], colors[2]));
// Size!

View File

@@ -10,6 +10,7 @@ import android.widget.RelativeLayout;
import android.view.WindowManager;
import android.widget.Button;
import android.widget.CheckBox;
import android.widget.TextView;
/**
* Created by ling on 1/1/16.
@@ -18,7 +19,7 @@ public class MySettingItem extends MySettingInfo{
private LinearLayout linearLayout;
private RelativeLayout relativeLayout;
Button btnItem;
TextView btnItem;
CheckBox checkBox;
private int textSize;
@@ -27,7 +28,7 @@ public class MySettingItem extends MySettingInfo{
// Instantiate the Views
linearLayout = new LinearLayout(context);
relativeLayout = new RelativeLayout(context);
btnItem = new Button(context);
btnItem = new TextView(context);
checkBox = new CheckBox(context);
// Give the views their required attributes (Wrap Content)
@@ -36,7 +37,7 @@ public class MySettingItem extends MySettingInfo{
LayoutParams item_lp = new LayoutParams(LayoutParams.WRAP_CONTENT, LayoutParams.MATCH_PARENT);
RelativeLayout.LayoutParams check_lp = new RelativeLayout.LayoutParams(LayoutParams.WRAP_CONTENT, LayoutParams.MATCH_PARENT);
lay_lp.setMargins(1, 1, 1, 1);
lay_lp.setMargins(4,4,4,4);
linearLayout.setLayoutParams(lay_lp);
linearLayout.setOrientation(LinearLayout.HORIZONTAL);
@@ -55,15 +56,17 @@ public class MySettingItem extends MySettingInfo{
setName(info.getName());
setEnabled(info.getEnabled());
// ========== Style the buttons ==========
// Color!
/* ========== Style the buttons ========== */
/* Color! * /
linearLayout.setBackgroundColor(Color.LTGRAY);
relativeLayout.setBackgroundColor(Color.LTGRAY);
relativeLayout.setBackgroundColor(Color.DKGRAY);
btnItem.setBackgroundColor(Color.LTGRAY);
btnItem.setTextColor(Color.BLACK);
/* */
// Size!
//textSize = ((WindowManager) context.getSystemService(Context.WINDOW_SERVICE)).getDefaultDisplay().getWidth()/30;
btnItem.setTextSize(24); // textSize);
btnItem.setPadding(4,4,4,4);
// Add the items to the layout!
relativeLayout.addView(checkBox);

View File

@@ -17,7 +17,7 @@ public class MySettings extends Activity {
Context context;
LinearLayout settingsArea;
MySettingItem quickLoad, adsEnabled, rainbowLists, whiteOnBlack;
MySettingItem quickLoad, rainbowLists, whiteOnBlack;
@Override
protected void onCreate(Bundle savedInstanceState) {
@@ -35,16 +35,13 @@ public class MySettings extends Activity {
// Instantiate settings
quickLoad = new MySettingItem(context, new MySettingInfo());
adsEnabled = new MySettingItem(context, new MySettingInfo());
// Name them
quickLoad.setName("Quick Load:");
adsEnabled.setName("Ads Enabled:");
// Set the checkboxes
dalih.open();
quickLoad.setEnabled(dalih.getQuickLoad());
adsEnabled.setEnabled(dalih.getAdsEnabled());
dalih.close();
// Set the checkbox actions
@@ -62,26 +59,8 @@ public class MySettings extends Activity {
}
});
adsEnabled.btnItem.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
dalih.setAdsEnabled(!dalih.getAdsEnabled());
adsEnabled.checkBox.setChecked(dalih.getAdsEnabled());
}
});
adsEnabled.checkBox.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
dalih.setAdsEnabled(adsEnabled.checkBox.isChecked());
}
});
// Throw them onto the screen
settingsArea.addView(quickLoad.getView());
if (Build.VERSION.SDK_INT >= 9) {
settingsArea.addView(adsEnabled.getView());
}
}
@Override

View File

@@ -15,9 +15,6 @@ import android.widget.Toast;
import java.util.ArrayList;
import com.google.android.gms.ads.AdRequest;
import com.google.android.gms.ads.AdView;
/**
* Created by usb on 9/28/14.
*
@@ -35,7 +32,6 @@ public class Tab1 extends Activity{
Button btnCreate;
LinearLayout layListArea;
TextView tvLeft, tvRight, selectHeader;
AdView mAdView;
// The lists!
ArrayList<List> lists = new ArrayList<List>();
@@ -58,7 +54,6 @@ public class Tab1 extends Activity{
tvLeft = (TextView) findViewById(R.id.leftEditView);
tvRight = (TextView) findViewById(R.id.rightEditView);
selectHeader = (TextView) findViewById(R.id.selectListHeader);
mAdView = (AdView) findViewById(R.id.adView);
return;
}
@@ -266,26 +261,6 @@ public class Tab1 extends Activity{
dalih.open();
if (Build.VERSION.SDK_INT >= 9) {
if (dalih.getAdsEnabled()) {
if (mAdView.getVisibility() != View.VISIBLE) {
AdRequest adRequest = new AdRequest.Builder()
.addTestDevice(AdRequest.DEVICE_ID_EMULATOR)
.addTestDevice("C6A494DC6E7C9AC29102694D48487084") // nexus 7
.addTestDevice("B8B7561B850A9AB24E0D5B560FC50628") // Moto G
.addTestDevice("") // Cappy, even though it can't get ads
.build();
mAdView.setVisibility(View.VISIBLE);
mAdView.loadAd(adRequest);
}
}
else{
if (mAdView.getVisibility() == View.VISIBLE) {
mAdView.setVisibility(View.GONE);
}
}
}
setButtonInsert();
super.onResume();

View File

@@ -11,9 +11,6 @@ import android.widget.EditText;
import android.widget.LinearLayout;
import android.widget.Toast;
import com.google.android.gms.ads.AdRequest;
import com.google.android.gms.ads.AdView;
import java.util.ArrayList;
/**
@@ -35,7 +32,6 @@ public class Tab2 extends Activity{
LinearLayout layListArea;
EditText txtName, txtCost, txtServings, txtCalories, txtCarbs, txtFiber;
Button btnClear, btnAdd;
AdView mAdView;
// List
ArrayList<ListItem> items = new ArrayList<ListItem>();
@@ -61,7 +57,6 @@ public class Tab2 extends Activity{
txtFiber = (EditText) findViewById(R.id.etItemFiber);
btnClear = (Button) findViewById(R.id.btnClear);
btnAdd = (Button) findViewById(R.id.btnAddToList);
mAdView = (AdView) findViewById(R.id.adView);
// Give the Buttons their power
btnClear.setOnClickListener(new View.OnClickListener() {
@@ -91,26 +86,6 @@ public class Tab2 extends Activity{
dalih.open();
if (Build.VERSION.SDK_INT >= 9) {
if (dalih.getAdsEnabled()) {
if (mAdView.getVisibility() != View.VISIBLE) {
AdRequest adRequest = new AdRequest.Builder()
.addTestDevice(AdRequest.DEVICE_ID_EMULATOR)
.addTestDevice("C6A494DC6E7C9AC29102694D48487084") // nexus 7
.addTestDevice("B8B7561B850A9AB24E0D5B560FC50628") // Moto G
.addTestDevice("") // Cappy, even though it can't get ads
.build();
mAdView.setVisibility(View.VISIBLE);
mAdView.loadAd(adRequest);
}
}
else{
if (mAdView.getVisibility() == View.VISIBLE) {
mAdView.setVisibility(View.GONE);
}
}
}
setButtonInsert();
super.onResume();

View File

@@ -50,7 +50,8 @@
android:layout_height="wrap_content"
android:orientation="horizontal"
android:layout_weight=".45"
android:weightSum="1">
android:weightSum="1"
style="?android:attr/buttonBarStyle">
<Button
android:layout_width="match_parent"
@@ -64,7 +65,8 @@
android:text="Why High Carb?"
android:textColor="@color/textPrimaryInverse"
android:textAllCaps="false"
android:id="@+id/btnWhyHCLF"/>
android:id="@+id/btnWhyHCLF"
style="?android:attr/buttonBarButtonStyle" />
<Button
android:layout_width="match_parent"
@@ -78,17 +80,9 @@
android:text="Why Vegan?"
android:textColor="@color/textAccentInverse"
android:textAllCaps="false"
android:id="@+id/btnWhyVegan"/>
android:id="@+id/btnWhyVegan"
style="?android:attr/buttonBarButtonStyle" />
</LinearLayout>
<com.google.android.gms.ads.AdView
android:id="@+id/adViewHome"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_weight=".1"
ads:adSize="BANNER"
ads:adUnitId="@string/banner_ad_home">
</com.google.android.gms.ads.AdView>
</LinearLayout>

View File

@@ -2,6 +2,7 @@
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_marginTop="?android:actionBarSize"
android:paddingLeft="@dimen/activity_horizontal_margin"
android:paddingRight="@dimen/activity_horizontal_margin"
android:paddingTop="@dimen/activity_vertical_margin"

View File

@@ -2,12 +2,13 @@
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent">
android:layout_height="match_parent"
android:layout_marginTop="?android:actionBarSize">
<TabHost
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_below="@+id/title"
android:layout_alignParentTop="true"
android:id="@android:id/tabhost">
<RelativeLayout

View File

@@ -3,7 +3,6 @@
android:layout_width="match_parent"
android:layout_height="match_parent">
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
@@ -50,4 +49,4 @@
</ScrollView>
</RelativeLayout>
</RelativeLayout>

View File

@@ -68,22 +68,10 @@
android:layout_width="match_parent"
android:layout_height="wrap_content">
<com.google.android.gms.ads.AdView
android:id="@+id/adView"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentBottom="true"
android:layout_centerHorizontal="true"
ads:adSize="BANNER"
android:visibility="gone"
ads:adUnitId="@string/banner_ad_tab1">
</com.google.android.gms.ads.AdView>
<ScrollView
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_alignParentTop="true"
android:layout_above="@+id/adView">
android:layout_alignParentTop="true">
<LinearLayout
android:layout_width="match_parent"
@@ -96,4 +84,4 @@
</RelativeLayout>
</LinearLayout>
</LinearLayout>

View File

@@ -97,22 +97,10 @@
android:layout_width="match_parent"
android:layout_height="wrap_content">
<com.google.android.gms.ads.AdView
android:id="@+id/adView"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentBottom="true"
android:layout_centerHorizontal="true"
ads:adSize="BANNER"
android:visibility="gone"
ads:adUnitId="@string/banner_ad_tab2">
</com.google.android.gms.ads.AdView>
<ScrollView
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_alignParentTop="true"
android:layout_above="@+id/adView">
android:layout_alignParentTop="true">
<LinearLayout
android:layout_width="match_parent"
@@ -125,4 +113,4 @@
</RelativeLayout>
</LinearLayout>
</LinearLayout>

View File

@@ -6,11 +6,13 @@
<string name="app_name_short">Carb Up!</string>
<string name="action_settings">Settings</string>
<string name="title_activity_main">Main</string>
<string name="version_name">-=Version Banana=-</string>
<string name="version_number">-=Beta v0.10=-</string>
<string name="version_name">-= Version Mango =-</string>
<string name="version_number">-= v1.0.0 =-</string>
<string name="author">Hyperling</string>
<string name="title_activity_home">Home</string>
<!-- Tab1 Views -->
<string name="list_header">Create a New List:</string>
@@ -52,14 +54,4 @@
<string name="delete_dialog_ok">Delete</string>
<string name="delete_dialog_cancel">Cancel</string>
<!-- Ads -->
<string name="banner_ad_unit_id">ca-app-pub-9712416021907617/1895014881</string>
<string name="banner_ad_tab1">ca-app-pub-9712416021907617/1895014881</string>
<string name="banner_ad_tab2">ca-app-pub-9712416021907617/6325214486</string>
<string name="banner_ad_home">ca-app-pub-9712416021907617/4055112081</string>
<string name="interstitial_ad_splash">ca-app-pub-9712416021907617/9278680882</string>
<string name="title_activity_home">Home</string>
</resources>

View File

@@ -14,4 +14,34 @@
<item name="windowNoTitle">true</item>
</style>
<style name="OriginalTheme"
parent="@android:style/Theme.Light.NoTitleBar">
</style>
<style name="CarbUp" parent="Theme.AppCompat.DayNight.NoActionBar">
<item name="windowActionBar">false</item>
<item name="windowNoTitle">true</item>
<item name="android:windowActionBar">false</item>
<item name="android:windowNoTitle">true</item>
<!--
<item name="colorPrimary">@color/colorPrimary</item>
<item name="colorPrimaryDark">@color/colorPrimaryDark</item>
<item name="colorAccent">@color/colorAccent</item>
<item name="android:colorForeground">@color/colorPrimary</item>
-->
</style>
<style name="CarbUpTesting" parent="@android:style/Theme.DeviceDefault">
<item name="windowActionBar">false</item>
<item name="windowNoTitle">true</item>
<item name="android:windowActionBar">false</item>
<item name="android:windowNoTitle">true</item>
<!--
<item name="colorPrimary">@color/colorPrimary</item>
<item name="colorPrimaryDark">@color/colorPrimaryDark</item>
<item name="colorAccent">@color/colorAccent</item>
<item name="android:colorForeground">@color/colorPrimary</item>
-->
</style>
</resources>