23 Commits
Author SHA1 Message Date
me 43e4a7f188 Merge pull request '0.1.0' (#4) from dev into main
Reviewed-on: #4
2026-11-04 09:14:01 -07:00
me c672e84610 Add changelog. 2026-11-04 09:13:31 -07:00
me ee792f4aa9 App seems to be working well, actually! Fix the layouts being hidden by action bar. 2026-11-03 19:42:57 -07:00
me d672c3a709 Remove permissions for Google Ads since they no longer exist. Properly set the minSDK to 21. 2026-11-03 19:34:54 -07:00
me e6a3c04312 Agent's unfinished attempt to convert the project from AppCompat to AndroidX. 2026-11-03 19:32:46 -07:00
me f7ae0d4f73 icon, fix the image to work on all versions of Android. 2026-11-01 11:06:40 -07:00
me 3798846f72 Begin implementing AndroidX since Java files fail to compile with old AppCompat libraries. 2026-11-01 11:01:42 -07:00
me 47940a16b0 Upgrade the app to newer plugin versions as well as migrate to newer Android conventions. Gradle syncs and app builds. 2026-11-01 11:00:45 -07:00
me 9aa192df0e gradle, update version to match other projects. 2026-10-23 14:57:02 -07:00
me bdaa98f358 Update Gradle. 2026-10-22 17:31:37 -07:00
me bfcc938b20 fdroid, add specifier to email and put the field in the app-specific section. 2026-09-29 07:16:25 -07:00
me 2d7a4894ee Add more fdroid details while refactoring the file. 2026-07-04 15:00:22 -07:00
me 4cb51c8528 Update issue tracker to be proper HTTP link, use contact page. Change website page to go directly to the app. 2026-07-04 10:48:17 -07:00
me 1e1675ce8d Merge pull request 'Add manifest file for self-hosted F-Droid repo.' (#3) from dev into main
Reviewed-on: #3
2026-07-04 10:20:59 -07:00
me 323e334311 Add manifest file for self-hosted F-Droid repo. 2026-07-04 10:16:27 -07:00
me c5df4c4371 Merge pull request 'Minify APK' (#2) from dev into main
Reviewed-on: #2
2025-07-22 16:46:30 -07:00
me fe8c97766b Update the app version. 2025-07-22 16:44:41 -07:00
me 02144dbc27 Minify the APK. 2025-07-22 16:37:20 -07:00
me 3df0ead4b7 Merge pull request 'Upgrade Android Version' (#1) from dev into main
Reviewed-on: #1
2025-07-22 16:24:47 -07:00
me 9c895c1d72 Gradle version updates, remove ads, and other changes for successful compilations. 2025-07-21 20:28:06 -07:00
me eedf4e22e7 Removed unused files. 2025-07-21 20:27:07 -07:00
me 1a2fe5e25f Add a project description. 2025-07-21 20:26:53 -07:00
me b2c9cd6cb6 Increment the version and prepare to begin testing for newer versions of Android. 2025-07-20 20:00:55 -07:00
45 changed files with 208 additions and 268 deletions

No files matched your search

+1
View File
@@ -1,2 +1,3 @@
# android-hypergames # android-hypergames
Games written for fun to practice Android programming and animation.
+27
View File
@@ -0,0 +1,27 @@
# Changelog
Version history for HyperGames.
## 0.1.0 (2026-11-04)
**Internal Facelift**
- Newer Android SDKs
- Icon is the correct size, no longer gets padded.
- Screens no longer get hidden by action bar.
- Upgrades
- Migrated from AppCompat libraries to AndroidX.
- Updated plugin versions such as AGP and Gradle.
- APK for release is now filtered to arm-v8a.
minSDK is now 21 from 14.
## 0.0.11 (2025-07-22)
- Minify the APK. Reduced from 1.7MB to 1.3MB with a single setting change.
- Deleted APK from the previous release since no other changes were made.
## 0.0.10 (2025-07-22)
- Begin targeting SDK 36 (Android 16).
- Remove ad-related code.
-30
View File
@@ -1,30 +0,0 @@
apply plugin: 'com.android.application'
android {
compileSdkVersion 24
buildToolsVersion "24.0.2"
defaultConfig {
applicationId "apps.hyperling.com.platformer"
minSdkVersion 15
targetSdkVersion 24
versionCode 10
versionName "0.9"
testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
}
buildTypes {
release {
minifyEnabled false
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
}
}
}
dependencies {
compile fileTree(dir: 'libs', include: ['*.jar'])
androidTestCompile('com.android.support.test.espresso:espresso-core:2.2.2', {
exclude group: 'com.android.support', module: 'support-annotations'
})
compile 'com.android.support:appcompat-v7:24.2.1'
compile 'com.google.android.gms:play-services-ads:9.8.0'
testCompile 'junit:junit:4.12'
}
+50
View File
@@ -0,0 +1,50 @@
plugins {
alias(libs.plugins.androidApplication)
}
android {
namespace = "com.hyperling.apps.games"
compileSdk = 37
defaultConfig {
applicationId = "apps.hyperling.com.platformer"
minSdk = 21
targetSdk = 37
versionCode = 13
versionName = "0.1.0"
testInstrumentationRunner = "androidx.test.runner.AndroidJUnitRunner"
}
compileOptions {
sourceCompatibility = JavaVersion.VERSION_17
targetCompatibility = JavaVersion.VERSION_17
}
kotlin {
compilerOptions {
jvmTarget.set(org.jetbrains.kotlin.gradle.dsl.JvmTarget.JVM_17)
}
}
buildTypes {
release {
isMinifyEnabled = true
isShrinkResources = true
proguardFiles(
getDefaultProguardFile("proguard-android-optimize.txt"),
"proguard-rules.pro"
)
ndk {
abiFilters += listOf("arm64-v8a")
}
}
}
}
dependencies {
implementation(libs.androidx.appcompat)
testImplementation(libs.junit)
androidTestImplementation(libs.junit.ext)
androidTestImplementation(libs.espresso.core)
}
@@ -1,26 +0,0 @@
package com.hyperling.apps.games;
import android.content.Context;
import android.support.test.InstrumentationRegistry;
import android.support.test.runner.AndroidJUnit4;
import org.junit.Test;
import org.junit.runner.RunWith;
import static org.junit.Assert.*;
/**
* Instrumentation test, which will execute on an Android device.
*
* @see <a href="http://d.android.com/tools/testing">Testing documentation</a>
*/
@RunWith(AndroidJUnit4.class)
public class ExampleInstrumentedTest {
@Test
public void useAppContext() throws Exception {
// Context of the app under test.
Context appContext = InstrumentationRegistry.getTargetContext();
assertEquals("apps.hyperling.com.platformer", appContext.getPackageName());
}
}
+5 -13
View File
@@ -1,29 +1,21 @@
<?xml version="1.0" encoding="utf-8"?> <?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android" <manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.hyperling.apps.games"> xmlns:tools="http://schemas.android.com/tools">
<!-- Include required permissions for Google Mobile Ads to run. -->
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
<application <application
android:allowBackup="true" android:allowBackup="true"
android:icon="@drawable/icon" android:icon="@drawable/icon"
android:roundIcon="@drawable/icon"
android:label="@string/app_name" android:label="@string/app_name"
android:supportsRtl="true" android:supportsRtl="true"
android:theme="@style/AppTheme" android:theme="@style/AppTheme"
android:configChanges="keyboard|keyboardHidden|orientation|screenLayout|uiMode|screenSize|smallestScreenSize"> android:configChanges="keyboard|keyboardHidden|orientation|screenLayout|uiMode|screenSize|smallestScreenSize">
<!-- android:configChanges="orientation|keyboardHidden|screenSize" --> <!-- android:configChanges="orientation|keyboardHidden|screenSize" -->
<!-- This meta-data tag is required to use Google Play Services. --> <activity android:name="com.hyperling.apps.games.MainActivity"
<meta-data android:exported="true">
android:name="com.google.android.gms.version"
android:value="@integer/google_play_services_version" />
<activity android:name="com.hyperling.apps.games.MainActivity">
<intent-filter> <intent-filter>
<action android:name="android.intent.action.MAIN" /> <action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" /> <category android:name="android.intent.category.LAUNCHER" />
</intent-filter> </intent-filter>
</activity> </activity>
@@ -38,4 +30,4 @@
<activity android:name="com.hyperling.apps.games.HighScoreActivity"/> <activity android:name="com.hyperling.apps.games.HighScoreActivity"/>
</application> </application>
</manifest> </manifest>
Binary file not shown.

After

Width:  |  Height:  |  Size: 14 KiB

@@ -1,36 +0,0 @@
package com.hyperling.apps.games;
import android.content.Context;
import android.content.SharedPreferences;
import android.view.View;
import com.google.android.gms.ads.AdRequest;
import com.google.android.gms.ads.AdView;
import com.google.android.gms.ads.MobileAds;
/**
* Created by ling on 12/26/16.
*/
public class AdsHelper {
// To be called in onResume in Activities
public static void toggleAds(SharedPreferences sharedPreferences, String adsKey, Context applicationContext, AdView mAdView){
// Enable ads?
boolean adsEnabled = sharedPreferences.getBoolean(adsKey, false);
if (adsEnabled) {
mAdView.setVisibility(View.VISIBLE);
MobileAds.initialize(applicationContext, "ca-app-pub-3940256099942544~3347511713");
AdRequest adRequest = new AdRequest.Builder()
.addTestDevice(AdRequest.DEVICE_ID_EMULATOR)
.addTestDevice("C6A494DC6E7C9AC29102694D48487084") // Nexus 7
.addTestDevice("6545BCC9B60A394005546783687339B7") // Moto G
.build();
mAdView.loadAd(adRequest);
}
else{
mAdView.setVisibility(View.GONE);
}
}
}
@@ -1,7 +1,7 @@
package com.hyperling.apps.games; package com.hyperling.apps.games;
import android.os.Bundle; import android.os.Bundle;
import android.support.v7.app.AppCompatActivity; import androidx.appcompat.app.AppCompatActivity;
import android.view.Window; import android.view.Window;
import android.view.WindowManager; import android.view.WindowManager;
@@ -1,17 +1,15 @@
package com.hyperling.apps.games; package com.hyperling.apps.games;
import android.content.SharedPreferences; import android.content.SharedPreferences;
import android.support.v7.app.AppCompatActivity; import androidx.appcompat.app.AppCompatActivity;
import android.os.Bundle; import android.os.Bundle;
import android.util.Log; import android.util.Log;
import android.widget.LinearLayout; import android.widget.LinearLayout;
import android.widget.TextView; import android.widget.TextView;
import com.google.android.gms.ads.AdView;
public class HighScoreActivity extends AppCompatActivity { public class HighScoreActivity extends AppCompatActivity {
private String sharedPreferencesKey, adsKey, TAG, html; private String sharedPreferencesKey, TAG, html;
private String[] allBirdScoreKeys, allChickenScoreKeys; private String[] allBirdScoreKeys, allChickenScoreKeys;
private SharedPreferences sharedPreferences; private SharedPreferences sharedPreferences;
@@ -29,7 +27,6 @@ public class HighScoreActivity extends AppCompatActivity {
sharedPreferencesKey = getString(R.string.sharedPreferencesKey); sharedPreferencesKey = getString(R.string.sharedPreferencesKey);
allBirdScoreKeys = getResources().getStringArray(R.array.allBirdScoreKeys); allBirdScoreKeys = getResources().getStringArray(R.array.allBirdScoreKeys);
allChickenScoreKeys = getResources().getStringArray(R.array.allChickenScoreKeys); allChickenScoreKeys = getResources().getStringArray(R.array.allChickenScoreKeys);
adsKey = getString(R.string.adsKey);
// Shared preferences // Shared preferences
sharedPreferences = getSharedPreferences(sharedPreferencesKey, MODE_PRIVATE); sharedPreferences = getSharedPreferences(sharedPreferencesKey, MODE_PRIVATE);
@@ -89,7 +86,6 @@ public class HighScoreActivity extends AppCompatActivity {
@Override @Override
protected void onResume() { protected void onResume() {
leaderboardHelper = new LeaderboardHelper(); leaderboardHelper = new LeaderboardHelper();
displayAds();
super.onResume(); super.onResume();
Runnable getHTML = new Runnable() { Runnable getHTML = new Runnable() {
@@ -106,10 +102,6 @@ public class HighScoreActivity extends AppCompatActivity {
Log.d(TAG, "HighScoreActivity.onResume() html=" + html); Log.d(TAG, "HighScoreActivity.onResume() html=" + html);
} }
private void displayAds(){
AdsHelper.toggleAds(sharedPreferences, adsKey, getApplicationContext(), (AdView) findViewById(R.id.adViewHighScores));
}
private boolean isNumeric(char c){ private boolean isNumeric(char c){
try{ try{
String s = "" + c; String s = "" + c;
@@ -2,19 +2,17 @@ package com.hyperling.apps.games;
import android.content.Intent; import android.content.Intent;
import android.content.SharedPreferences; import android.content.SharedPreferences;
import android.support.v7.app.AppCompatActivity; import androidx.appcompat.app.AppCompatActivity;
import android.os.Bundle; import android.os.Bundle;
import android.util.Log; import android.util.Log;
import android.view.View; import android.view.View;
import android.widget.Button; import android.widget.Button;
import com.google.android.gms.ads.AdView;
public class MainActivity extends AppCompatActivity { public class MainActivity extends AppCompatActivity {
private Button btnGameBird, btnGameCow, btnGamePig, btnGameChicken, btnGameCat, btnGameSquirrel, btnOptions, btnHighScores, btnHelp; private Button btnGameBird, btnGameCow, btnGamePig, btnGameChicken, btnGameCat, btnGameSquirrel, btnOptions, btnHighScores, btnHelp;
private String TAG, sharedPreferencesKey, adsKey, birdScoreKey, chickenScoreKey; private String TAG, sharedPreferencesKey, birdScoreKey, chickenScoreKey;
private SharedPreferences sharedPreferences; private SharedPreferences sharedPreferences;
@@ -28,7 +26,6 @@ public class MainActivity extends AppCompatActivity {
// Keys // Keys
sharedPreferencesKey = getString(R.string.sharedPreferencesKey); sharedPreferencesKey = getString(R.string.sharedPreferencesKey);
adsKey = getString(R.string.adsKey);
birdScoreKey = getString(R.string.birdScoreKey); birdScoreKey = getString(R.string.birdScoreKey);
chickenScoreKey = getString(R.string.chickenScoreKey); chickenScoreKey = getString(R.string.chickenScoreKey);
@@ -101,8 +98,6 @@ public class MainActivity extends AppCompatActivity {
@Override @Override
protected void onResume() { protected void onResume() {
displayAds();
// Append high scores to button text // Append high scores to button text
int score; int score;
String newText; String newText;
@@ -160,10 +155,6 @@ public class MainActivity extends AppCompatActivity {
startActivity(options); startActivity(options);
} }
private void displayAds(){
AdsHelper.toggleAds(sharedPreferences, adsKey, getApplicationContext(), (AdView) findViewById(R.id.adViewMain));
}
private void doHighScoresButton(){ private void doHighScoresButton(){
Intent highScores = new Intent(MainActivity.this, HighScoreActivity.class); Intent highScores = new Intent(MainActivity.this, HighScoreActivity.class);
startActivity(highScores); startActivity(highScores);
@@ -3,30 +3,26 @@ package com.hyperling.apps.games;
import android.content.Intent; import android.content.Intent;
import android.content.SharedPreferences; import android.content.SharedPreferences;
import android.os.Bundle; import android.os.Bundle;
import android.support.v7.app.AppCompatActivity; import androidx.appcompat.app.AppCompatActivity;
import android.view.View; import android.view.View;
import android.view.WindowManager; import android.view.WindowManager;
import android.widget.Button; import android.widget.Button;
import android.widget.CheckBox; import android.widget.CheckBox;
import android.widget.RelativeLayout; import android.widget.RelativeLayout;
import com.google.android.gms.ads.AdRequest;
import com.google.android.gms.ads.AdView;
import com.google.android.gms.ads.MobileAds;
/** /**
* Created by ling on 12/22/16. * Created by ling on 12/22/16.
*/ */
public class OptionsActivity extends AppCompatActivity { public class OptionsActivity extends AppCompatActivity {
private String sharedPreferencesKey, adsKey, higherQualityKey, fpsKey; private String sharedPreferencesKey, higherQualityKey, fpsKey;
private SharedPreferences sharedPreferences; private SharedPreferences sharedPreferences;
private RelativeLayout layoutAds, layoutHigherQuality, layoutFPS; private RelativeLayout layoutHigherQuality, layoutFPS;
private CheckBox cbAds, cbHigherQuality, cbFPS; private CheckBox cbHigherQuality, cbFPS;
private boolean adsEnabled, higherQualityEnabled, fpsEnabled; private boolean higherQualityEnabled, fpsEnabled;
private Button btnDeletePreferences, btnConfirmDeletePreferences; private Button btnDeletePreferences, btnConfirmDeletePreferences;
@@ -42,24 +38,6 @@ public class OptionsActivity extends AppCompatActivity {
sharedPreferencesKey = getString(R.string.sharedPreferencesKey); sharedPreferencesKey = getString(R.string.sharedPreferencesKey);
sharedPreferences = getSharedPreferences(sharedPreferencesKey, MODE_PRIVATE); sharedPreferences = getSharedPreferences(sharedPreferencesKey, MODE_PRIVATE);
// Set up Ads
adsKey = getString(R.string.adsKey);
layoutAds = (RelativeLayout) findViewById(R.id.optionAdsLayout);
cbAds = (CheckBox) findViewById(R.id.optionAdsCheckBox);
layoutAds.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
flipOption(adsKey);
}
});
cbAds.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
flipOption(adsKey);
}
});
setAds();
// Higher Quality Content // Higher Quality Content
higherQualityKey = getString(R.string.higherQualityKey); higherQualityKey = getString(R.string.higherQualityKey);
layoutHigherQuality = (RelativeLayout) findViewById(R.id.optionHigherQualityLayout); layoutHigherQuality = (RelativeLayout) findViewById(R.id.optionHigherQualityLayout);
@@ -123,10 +101,7 @@ public class OptionsActivity extends AppCompatActivity {
editor.apply(); editor.apply();
// Change the box // Change the box
if (key.equals(adsKey)){ if (key.equals(higherQualityKey)){
setAds();
}
else if (key.equals(higherQualityKey)){
setHigherQuality(); setHigherQuality();
} }
else if (key.equals(fpsKey)){ else if (key.equals(fpsKey)){
@@ -134,31 +109,6 @@ public class OptionsActivity extends AppCompatActivity {
} }
} }
private void setAds(){
adsEnabled = sharedPreferences.getBoolean(adsKey, false);
cbAds.setChecked(adsEnabled);
toggleAds();
}
private void toggleAds(){
// Enable ads?
adsEnabled = sharedPreferences.getBoolean(adsKey, false);
AdView mAdView = (AdView) findViewById(R.id.adViewOptions);
if (adsEnabled) {
mAdView.setVisibility(View.VISIBLE);
MobileAds.initialize(getApplicationContext(), "ca-app-pub-3940256099942544~3347511713");
AdRequest adRequest = new AdRequest.Builder()
.addTestDevice(AdRequest.DEVICE_ID_EMULATOR)
.addTestDevice("C6A494DC6E7C9AC29102694D48487084") // Nexus 7
.addTestDevice("6545BCC9B60A394005546783687339B7") // Moto G
.build();
mAdView.loadAd(adRequest);
}
else{
mAdView.setVisibility(View.GONE);
}
}
public void setHigherQuality() { public void setHigherQuality() {
higherQualityEnabled = sharedPreferences.getBoolean(higherQualityKey, false); higherQualityEnabled = sharedPreferences.getBoolean(higherQualityKey, false);
cbHigherQuality.setChecked(higherQualityEnabled); cbHigherQuality.setChecked(higherQualityEnabled);
@@ -0,0 +1,18 @@
<?xml version="1.0" encoding="utf-8"?>
<vector xmlns:android="http://schemas.android.com/apk/res/android"
android:width="108dp"
android:height="108dp"
android:viewportWidth="199"
android:viewportHeight="168.75">
<group android:scaleX="0.49232432"
android:scaleY="0.41748607"
android:translateX="50.266323"
android:translateY="49.98335">
<group android:translateY="133.59375">
<path android:pathData="M76.78125,-61.734375L76.78125,-42.75L24.265625,-42.75L24.265625,-61.734375L76.78125,-61.734375ZM32.484375,-102.375L32.484375,-0L7.8125,-0L7.8125,-102.375L32.484375,-102.375ZM93.375,-102.375L93.375,-0L68.765625,-0L68.765625,-102.375L93.375,-102.375Z"
android:fillColor="#000000"/>
<path android:pathData="M192.54688,-54.703125L192.54688,-12.65625Q189.95312,-9.78125,184.5625,-6.5Q179.1875,-3.234375,171.03125,-0.90625Q162.875,1.40625,151.84375,1.40625Q141.64062,1.40625,133.34375,-1.859375Q125.046875,-5.140625,119.109375,-11.5Q113.171875,-17.859375,109.96875,-27.109375Q106.765625,-36.359375,106.765625,-48.3125L106.765625,-54Q106.765625,-65.953125,110,-75.234375Q113.234375,-84.515625,119.109375,-90.875Q124.984375,-97.25,132.95312,-100.546875Q140.9375,-103.859375,150.5,-103.859375Q164.64062,-103.859375,173.5,-99.390625Q182.35938,-94.921875,186.92188,-87.078125Q191.5,-79.25,192.48438,-68.984375L168.78125,-68.984375Q168.07812,-74.046875,166.14062,-77.59375Q164.21875,-81.140625,160.625,-83Q157.04688,-84.875,151.34375,-84.875Q146.92188,-84.875,143.29688,-82.96875Q139.67188,-81.078125,137.14062,-77.234375Q134.60938,-73.40625,133.23438,-67.640625Q131.875,-61.875,131.875,-54.140625L131.875,-48.3125Q131.875,-40.640625,133.17188,-34.875Q134.46875,-29.109375,137.10938,-25.28125Q139.75,-21.453125,143.85938,-19.515625Q147.96875,-17.578125,153.59375,-17.578125Q157.53125,-17.578125,160.34375,-18.25Q163.15625,-18.921875,165.01562,-19.9375Q166.89062,-20.953125,167.875,-21.875L167.875,-37.765625L150.71875,-37.765625L150.71875,-54.703125L192.54688,-54.703125Z"
android:fillColor="#000000"/>
</group>
</group>
</vector>
@@ -9,25 +9,16 @@
android:paddingLeft="@dimen/activity_horizontal_margin" android:paddingLeft="@dimen/activity_horizontal_margin"
android:paddingRight="@dimen/activity_horizontal_margin" android:paddingRight="@dimen/activity_horizontal_margin"
android:paddingTop="@dimen/activity_vertical_margin" android:paddingTop="@dimen/activity_vertical_margin"
android:fitsSystemWindows="true"
tools:context="com.hyperling.apps.games.HighScoreActivity"> tools:context="com.hyperling.apps.games.HighScoreActivity">
<com.google.android.gms.ads.AdView
android:id="@+id/adViewHighScores"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_alignParentBottom="true"
android:layout_centerHorizontal="true"
android:visibility="gone"
ads:adSize="BANNER"
ads:adUnitId="@string/interstitial_ad_unit_id_high_score" />
<ScrollView <ScrollView
android:id="@+id/scrollViewHighScore" android:id="@+id/scrollViewHighScore"
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:layout_alignParentTop="true" android:layout_alignParentTop="true"
android:layout_centerHorizontal="true" android:layout_centerHorizontal="true"
android:layout_above="@+id/adViewHighScores"> android:layout_alignParentBottom="true">
<LinearLayout <LinearLayout
android:layout_width="match_parent" android:layout_width="match_parent"
+2 -11
View File
@@ -9,25 +9,16 @@
android:paddingLeft="@dimen/activity_horizontal_margin" android:paddingLeft="@dimen/activity_horizontal_margin"
android:paddingRight="@dimen/activity_horizontal_margin" android:paddingRight="@dimen/activity_horizontal_margin"
android:paddingTop="@dimen/activity_vertical_margin" android:paddingTop="@dimen/activity_vertical_margin"
android:fitsSystemWindows="true"
tools:context="com.hyperling.apps.games.MainActivity"> tools:context="com.hyperling.apps.games.MainActivity">
<com.google.android.gms.ads.AdView
android:id="@+id/adViewMain"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_alignParentBottom="true"
android:layout_centerHorizontal="true"
android:visibility="gone"
ads:adSize="BANNER"
ads:adUnitId="@string/interstitial_ad_unit_id_main" />
<ScrollView <ScrollView
android:id="@+id/scrollViewMain" android:id="@+id/scrollViewMain"
android:layout_width="wrap_content" android:layout_width="wrap_content"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:layout_alignParentTop="true" android:layout_alignParentTop="true"
android:layout_centerHorizontal="true" android:layout_centerHorizontal="true"
android:layout_above="@+id/adViewMain"> android:layout_alignParentBottom="true">
<LinearLayout <LinearLayout
android:layout_width="wrap_content" android:layout_width="wrap_content"
+4 -11
View File
@@ -10,23 +10,14 @@
android:paddingLeft="@dimen/activity_horizontal_margin" android:paddingLeft="@dimen/activity_horizontal_margin"
android:paddingRight="@dimen/activity_horizontal_margin" android:paddingRight="@dimen/activity_horizontal_margin"
android:paddingTop="@dimen/activity_vertical_margin" android:paddingTop="@dimen/activity_vertical_margin"
android:fitsSystemWindows="true"
tools:context="com.hyperling.apps.games.OptionsActivity"> tools:context="com.hyperling.apps.games.OptionsActivity">
<com.google.android.gms.ads.AdView
android:id="@+id/adViewOptions"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_alignParentBottom="true"
android:layout_centerHorizontal="true"
android:visibility="gone"
ads:adSize="BANNER"
ads:adUnitId="@string/interstitial_ad_unit_id_options" />
<ScrollView <ScrollView
android:id="@+id/scrollViewOptions" android:id="@+id/scrollViewOptions"
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:layout_above="@+id/adViewOptions" android:layout_alignParentBottom="true"
android:layout_centerInParent="true" android:layout_centerInParent="true"
android:layout_alignParentTop="true"> android:layout_alignParentTop="true">
@@ -35,6 +26,7 @@
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:orientation="vertical"> android:orientation="vertical">
<!--
<TextView <TextView
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="wrap_content" android:layout_height="wrap_content"
@@ -77,6 +69,7 @@
<Space <Space
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="@dimen/spaceSize" /> android:layout_height="@dimen/spaceSize" />
-->
<TextView <TextView
android:text="@string/optionGroupInGame" android:text="@string/optionGroupInGame"
@@ -0,0 +1,6 @@
<?xml version="1.0" encoding="utf-8"?>
<adaptive-icon xmlns:android="http://schemas.android.com/apk/res/android">
<background android:drawable="@color/ic_launcher_background"/>
<foreground android:drawable="@mipmap/ic_launcher_foreground"/>
<monochrome android:drawable="@drawable/ic_launcher_monochrome"/>
</adaptive-icon>
@@ -0,0 +1,6 @@
<?xml version="1.0" encoding="utf-8"?>
<adaptive-icon xmlns:android="http://schemas.android.com/apk/res/android">
<background android:drawable="@color/ic_launcher_background"/>
<foreground android:drawable="@mipmap/ic_launcher_foreground"/>
<monochrome android:drawable="@drawable/ic_launcher_monochrome"/>
</adaptive-icon>
Binary file not shown.

Before

Width:  |  Height:  |  Size: 3.3 KiB

After

Width:  |  Height:  |  Size: 3.5 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.8 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.5 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 2.2 KiB

After

Width:  |  Height:  |  Size: 2.3 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.7 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.3 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 4.7 KiB

After

Width:  |  Height:  |  Size: 4.8 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.1 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.8 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 7.5 KiB

After

Width:  |  Height:  |  Size: 7.5 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 6.9 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 7.5 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 10 KiB

After

Width:  |  Height:  |  Size: 11 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 10 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 11 KiB

@@ -0,0 +1,4 @@
<?xml version="1.0" encoding="utf-8"?>
<resources>
<color name="ic_launcher_background">#6400C8</color>
</resources>
-9
View File
@@ -36,7 +36,6 @@
<string name="optionGroupOnline">Online</string> <string name="optionGroupOnline">Online</string>
<string name="optionGroupOther">Other</string> <string name="optionGroupOther">Other</string>
<string name="optionAds">Allow Ads on Menu Screens?</string>
<string name="optionPracticeRound">Play Practice Round when Starting New Games?</string> <string name="optionPracticeRound">Play Practice Round when Starting New Games?</string>
<string name="optionHigherQuality">Allow Higher Quality Images and Animations?</string> <string name="optionHigherQuality">Allow Higher Quality Images and Animations?</string>
<string name="optionFPS">Display FPS?</string> <string name="optionFPS">Display FPS?</string>
@@ -52,7 +51,6 @@
<!-- Shared Preferences --> <!-- Shared Preferences -->
<string name="sharedPreferencesKey">HyperGames</string> <string name="sharedPreferencesKey">HyperGames</string>
<!-- Options --> <!-- Options -->
<string name="adsKey">Ads</string>
<string name="practiceRoundKey">Practice</string> <string name="practiceRoundKey">Practice</string>
<string name="higherQualityKey">HigherQuality</string> <string name="higherQualityKey">HigherQuality</string>
<string name="fpsKey">FPS</string> <string name="fpsKey">FPS</string>
@@ -82,11 +80,4 @@
<item>ChickenScore008(Alpha)</item> <item>ChickenScore008(Alpha)</item>
</string-array> </string-array>
<!-- -
This is an ad unit ID for an interstitial test ad. Replace with your own interstitial ad unit id.
For more information, see https://support.google.com/admob/answer/3052638
<!- -->
<string name="interstitial_ad_unit_id_main">ca-app-pub-9712416021907617/7877767281</string>
<string name="interstitial_ad_unit_id_options">ca-app-pub-9712416021907617/3307966880</string>
<string name="interstitial_ad_unit_id_high_score">ca-app-pub-9712416021907617/4784700088</string>
</resources> </resources>
@@ -1,17 +0,0 @@
package com.hyperling.apps.games;
import org.junit.Test;
import static org.junit.Assert.*;
/**
* Example local unit test, which will execute on the development machine (host).
*
* @see <a href="http://d.android.com/tools/testing">Testing documentation</a>
*/
public class ExampleUnitTest {
@Test
public void addition_isCorrect() throws Exception {
assertEquals(4, 2 + 2);
}
}
+16
View File
@@ -0,0 +1,16 @@
AuthorName: 'Chad Michael "Hyperling" Greenwood'
AuthorWebSite: 'https://hyperling.com/about/'
Donate: 'https://hyperling.com/donate/'
Liberapay: 'HyperVegan'
Bitcoin: 'bc1qsfe8dkvry3d34kztz449gkq67wq8fu2nkgfkh0'
Litecoin: 'ltc1qavmpu5d6ljntxsd6jj548m4yys83zwscl0dzkx'
IssueTracker: 'https://hyperling.com/contact/'
Categories:
- fdroid
- hyperling
- games
Name: Hyper Games
AuthorEmail: 'me+hypergames@hyperling.com'
Summary: 'Started as a fun project for learning. Playable but unfinished.'
SourceCode: 'https://git.hyperling.com/me/android-hypergames/'
WebSite: 'https://hyperling.com/apps/#games'
-24
View File
@@ -1,24 +0,0 @@
// Top-level build file where you can add configuration options common to all sub-projects/modules.
buildscript {
repositories {
jcenter()
google()
}
dependencies {
classpath 'com.android.tools.build:gradle:3.2.1'
// NOTE: Do not place your application dependencies here; they belong
// in the individual module build.gradle files
}
}
allprojects {
repositories {
jcenter()
}
}
task clean(type: Delete) {
delete rootProject.buildDir
}
+1
View File
@@ -0,0 +1 @@
// Root build file - plugins managed via gradle/libs.versions.toml
+4
View File
@@ -15,3 +15,7 @@ org.gradle.jvmargs=-Xmx1536m
# This option should only be used with decoupled projects. More details, visit # This option should only be used with decoupled projects. More details, visit
# http://www.gradle.org/docs/current/userguide/multi_project_builds.html#sec:decoupled_projects # http://www.gradle.org/docs/current/userguide/multi_project_builds.html#sec:decoupled_projects
# org.gradle.parallel=true # org.gradle.parallel=true
# Move to AndroidX
android.useAndroidX=true
# android.enableJetifier removed - all support libs migrated to AndroidX
+12
View File
@@ -0,0 +1,12 @@
#This file is generated by updateDaemonJvm
toolchainUrl.FREE_BSD.AARCH64=https\://api.foojay.io/disco/v3.0/ids/cf726b4a1c84b50457225f9bba6d7650/redirect
toolchainUrl.FREE_BSD.X86_64=https\://api.foojay.io/disco/v3.0/ids/fa1e318c287360478e3c83a9a3ef1007/redirect
toolchainUrl.LINUX.AARCH64=https\://api.foojay.io/disco/v3.0/ids/cf726b4a1c84b50457225f9bba6d7650/redirect
toolchainUrl.LINUX.X86_64=https\://api.foojay.io/disco/v3.0/ids/fa1e318c287360478e3c83a9a3ef1007/redirect
toolchainUrl.MAC_OS.AARCH64=https\://api.foojay.io/disco/v3.0/ids/c2dd35c9d0aaf0ba6ad0791320f99dfc/redirect
toolchainUrl.MAC_OS.X86_64=https\://api.foojay.io/disco/v3.0/ids/e5810bd7fd1f8a586644409d395a7e55/redirect
toolchainUrl.UNIX.AARCH64=https\://api.foojay.io/disco/v3.0/ids/cf726b4a1c84b50457225f9bba6d7650/redirect
toolchainUrl.UNIX.X86_64=https\://api.foojay.io/disco/v3.0/ids/fa1e318c287360478e3c83a9a3ef1007/redirect
toolchainUrl.WINDOWS.AARCH64=https\://api.foojay.io/disco/v3.0/ids/7b3c4877c0749019e6805bb61e421497/redirect
toolchainUrl.WINDOWS.X86_64=https\://api.foojay.io/disco/v3.0/ids/d76df094a9cbbabd3b08251f9e61444a/redirect
toolchainVersion=25
+19
View File
@@ -0,0 +1,19 @@
[versions]
agp = "9.5.0"
kotlin = "2.4.21"
coreKtx = "1.19.1"
appcompat = "1.7.1"
espressoCore = "3.7.0"
junit = "4.13.2"
junitVersion = "1.3.0"
[libraries]
androidx-core-ktx = { group = "androidx.core", name = "core-ktx", version.ref = "coreKtx" }
androidx-appcompat = { group = "androidx.appcompat", name = "appcompat", version.ref = "appcompat" }
espresso-core = { group = "androidx.test.espresso", name = "espresso-core", version.ref = "espressoCore" }
junit = { group = "junit", name = "junit", version.ref = "junit" }
junit-ext = { group = "androidx.test.ext", name = "junit", version.ref = "junitVersion" }
[plugins]
androidApplication = { id = "com.android.application", version.ref = "agp" }
kotlinCompose = { id = "org.jetbrains.kotlin.plugin.compose", version.ref = "kotlin" }
+1 -1
View File
@@ -1,6 +1,6 @@
#Thu Jan 10 06:49:36 CST 2019 #Thu Jan 10 06:49:36 CST 2019
distributionBase=GRADLE_USER_HOME distributionBase=GRADLE_USER_HOME
distributionPath=wrapper/dists distributionPath=wrapper/dists
distributionUrl=https\://services.gradle.org/distributions/gradle-9.8.2-bin.zip
zipStoreBase=GRADLE_USER_HOME zipStoreBase=GRADLE_USER_HOME
zipStorePath=wrapper/dists zipStorePath=wrapper/dists
distributionUrl=https\://services.gradle.org/distributions/gradle-4.6-all.zip
-1
View File
@@ -1 +0,0 @@
include ':app'
+19
View File
@@ -0,0 +1,19 @@
pluginManagement {
repositories {
google()
mavenCentral()
gradlePluginPortal()
}
}
dependencyResolutionManagement {
repositoriesMode.set(RepositoriesMode.FAIL_ON_PROJECT_REPOS)
repositories {
google()
mavenCentral()
maven { url = uri("https://jitpack.io") }
}
}
rootProject.name = "HyperGames"
include(":app")