应用介绍模块更新

This commit is contained in:
ZhanGSKen 2025-02-06 11:00:51 +08:00
parent 104d9fa283
commit b14add854e
15 changed files with 174 additions and 97 deletions

View File

@ -1,8 +1,8 @@
#Created by .winboll/winboll_app_build.gradle
#Wed Feb 05 23:35:25 GMT 2025
#Thu Feb 06 02:59:56 GMT 2025
stageCount=1
libraryProject=libapputils
baseVersion=9.3
publishVersion=9.3.0
buildCount=63
buildCount=106
baseBetaVersion=9.3.1

View File

@ -27,10 +27,8 @@
</activity>
<activity android:name=".TestWinBollActivity"/>
<activity android:name=".TestStringToQrCodeViewActivity"/>
</application>
</manifest>
</manifest>

View File

@ -13,9 +13,9 @@ import android.widget.Toast;
import androidx.appcompat.app.AppCompatActivity;
import androidx.appcompat.widget.Toolbar;
import cc.winboll.studio.apputils.R;
import cc.winboll.studio.libapputils.activities.AboutActivity;
import cc.winboll.studio.libapputils.activities.AssetsHtmlActivity;
import cc.winboll.studio.libapputils.activities.QRCodeDecodeActivity;
import cc.winboll.studio.libapputils.app.AboutActivityFactory;
import cc.winboll.studio.libapputils.app.IWinBollActivity;
import cc.winboll.studio.libapputils.app.WinBollActivityManager;
import cc.winboll.studio.libapputils.bean.APPInfo;
@ -40,6 +40,25 @@ final public class MainActivity extends AppCompatActivity implements IWinBollAct
return this;
}
@Override
public APPInfo getAppInfo() {
String szBranchName = "apputils";
APPInfo appInfo = AboutActivityFactory.buildDefaultAPPInfo();
appInfo.setAppName("APPUtils");
appInfo.setAppIcon(cc.winboll.studio.libapputils.R.drawable.ic_winboll);
appInfo.setAppDescription("APPUtils Description");
appInfo.setAppGitName("APP");
appInfo.setAppGitOwner("Studio");
appInfo.setAppGitAPPBranch(szBranchName);
appInfo.setAppGitAPPSubProjectFolder(szBranchName);
appInfo.setAppHomePage("https://www.winboll.cc/studio/details.php?app=APP");
appInfo.setAppAPKName("APPUtils");
appInfo.setAppAPKFolderName("APPUtils");
return appInfo;
//return null;
}
@Override
public String getTag() {
return TAG;
@ -73,7 +92,7 @@ final public class MainActivity extends AppCompatActivity implements IWinBollAct
getSupportActionBar().setDisplayHomeAsUpEnabled(true);
}
getSupportActionBar().setSubtitle(getTag());
checkResolveActivity();
archiveInstance();
@ -231,14 +250,18 @@ final public class MainActivity extends AppCompatActivity implements IWinBollAct
if (App.isDebug()) {
getMenuInflater().inflate(R.menu.toolbar_studio_debug, menu);
}
return super.onCreateOptionsMenu(menu);
}
@Override
public boolean onOptionsItemSelected(MenuItem item) {
if (item.getItemId() == R.id.item_testwinboll) {
WinBollActivityManager.getInstance(this).startWinBollActivity(this, TestWinBollActivity.class);
if (item.getItemId() == R.id.item_exit) {
exit();
return true;
} else if (item.getItemId() == R.id.item_about) {
AboutActivityFactory.showAboutActivity(this, getAppInfo());
return true;
} else if (item.getItemId() == R.id.item_teststringtoqrcodeview) {
WinBollActivityManager.getInstance(this).startWinBollActivity(this, TestStringToQrCodeViewActivity.class);
} else if (item.getItemId() == R.id.item_testqrcodedecodeactivity) {
@ -252,44 +275,20 @@ final public class MainActivity extends AppCompatActivity implements IWinBollAct
} else if (item.getItemId() == R.id.item_log) {
WinBollActivityManager.getInstance(this).startWinBollActivity(this, LogActivity.class);
return true;
} else if (item.getItemId() == R.id.item_exit) {
exit();
//ToastUtils.show("item_exit");
//WinBollActivityManager.getInstance(mCurrentAppCompatActivity).finishAll();
return true;
} else if (item.getItemId() == R.id.item_info) {
LogUtils.d(TAG, "item_info not yet.");
return true;
//WinBollApplication application = (WinBollApplication) getApplication();
//application.getMyActivityLifecycleCallbacks().showActivityeInfo();
} else if (item.getItemId() == R.id.item_exitdebug) {
AboutView.setApp2NormalMode(this);
return true;
} else if (item.getItemId() == android.R.id.home) {
WinBollActivityManager.getInstance(this).finish(this);
return true;
} else if (item.getItemId() == R.id.item_about) {
openAboutActivity();
return true;
}
return super.onOptionsItemSelected(item);
}
void openAboutActivity() {
Intent intent = new Intent(this, AboutActivity.class);
APPInfo appInfo = new APPInfo();
appInfo.setAppName("APPUtils");
appInfo.setAppIcon(cc.winboll.studio.libapputils.R.drawable.ic_winboll);
appInfo.setAppDescription("APPUtils Description");
appInfo.setAppGitName("APP");
appInfo.setAppGitOwner("Studio");
appInfo.setAppGitAPPBranch("apputils");
appInfo.setAppGitAPPSubProjectFolder("apputils");
appInfo.setAppHomePage("https://www.winboll.cc/studio/details.php?app=APP");
appInfo.setAppAPKName("APPUtils");
appInfo.setAppAPKFolderName("APPUtils");
intent.putExtra(AboutActivity.EXTRA_APPINFO, appInfo);
WinBollActivityManager.getInstance(this).startWinBollActivity(this, intent, AboutActivity.class);
void about() {
// Intent intent = new Intent(this, AboutActivity.class);
// intent.putExtra(AboutActivity.EXTRA_APPINFO, AboutActivityFactory.buildAPPBranchInfo(this));
// WinBollActivityManager.getInstance(this).startWinBollActivity(this, intent, AboutActivity.class);
}
void exit() {
@ -319,8 +318,7 @@ final public class MainActivity extends AppCompatActivity implements IWinBollAct
}
public void onTestAboutActivity(View view) {
//ToastUtils.show("onTestAboutActivity");
openAboutActivity();
about();
}
public void onTestJavascriptHtmlActivity(View view) {

View File

@ -4,6 +4,7 @@ import android.os.Bundle;
import androidx.appcompat.app.AppCompatActivity;
import androidx.appcompat.widget.Toolbar;
import cc.winboll.studio.libapputils.app.IWinBollActivity;
import cc.winboll.studio.libapputils.bean.APPInfo;
import cc.winboll.studio.libapputils.view.StringToQrCodeView;
/**
@ -12,7 +13,6 @@ import cc.winboll.studio.libapputils.view.StringToQrCodeView;
*/
public class TestStringToQrCodeViewActivity extends AppCompatActivity implements IWinBollActivity {
public static final String TAG = "TestStringToQrCodeViewActivity";
StringToQrCodeView mStringToQrCodeView;
@ -22,6 +22,11 @@ public class TestStringToQrCodeViewActivity extends AppCompatActivity implements
return this;
}
@Override
public APPInfo getAppInfo() {
return null;
}
@Override
public String getTag() {
return TAG;

View File

@ -1,46 +0,0 @@
package cc.winboll.studio.apputils;
/**
* @Author ZhanGSKen@QQ.COM
* @Date 2025/01/13 15:09:46
*/
import android.os.Bundle;
import androidx.appcompat.app.AppCompatActivity;
import androidx.appcompat.widget.Toolbar;
import cc.winboll.studio.libapputils.app.IWinBollActivity;
public class TestWinBollActivity extends AppCompatActivity implements IWinBollActivity {
public static final String TAG = "TestWinBollActivity";
@Override
public AppCompatActivity getActivity() {
return this;
}
@Override
public String getTag() {
return TAG;
}
@Override
public Toolbar initToolBar() {
return findViewById(R.id.activitytestwinbollToolbar1);
}
@Override
public boolean isEnableDisplayHomeAsUp() {
return true;
}
@Override
public boolean isAddWinBollToolBar() {
return true;
}
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_testwinboll);
}
}

View File

@ -60,12 +60,11 @@
android:layout_height="wrap_content"
android:gravity="right">
<Button
<cc.winboll.studio.libapputils.view.AboutBranchButton
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textAllCaps="false"
android:text="Test AboutActivity"
android:onClick="onTestAboutActivity"/>
android:text="About"
android:textAllCaps="false"/>
</LinearLayout>

View File

@ -1,8 +1,8 @@
#Created by .winboll/winboll_app_build.gradle
#Wed Feb 05 23:35:25 GMT 2025
#Thu Feb 06 02:59:56 GMT 2025
stageCount=1
libraryProject=libapputils
baseVersion=9.3
publishVersion=9.3.0
buildCount=63
buildCount=106
baseBetaVersion=9.3.1

View File

@ -9,6 +9,7 @@ import android.content.Intent;
import android.os.Bundle;
import android.view.Menu;
import android.view.MenuItem;
import android.view.View;
import android.widget.LinearLayout;
import androidx.appcompat.app.AppCompatActivity;
import androidx.appcompat.widget.Toolbar;
@ -33,6 +34,11 @@ final public class AboutActivity extends AppCompatActivity implements IWinBollAc
return this;
}
@Override
public APPInfo getAppInfo() {
return null;
}
@Override
public String getTag() {
return TAG;
@ -69,7 +75,7 @@ final public class AboutActivity extends AppCompatActivity implements IWinBollAc
LinearLayout llMain = findViewById(R.id.activityaboutLinearLayout1);
llMain.addView(aboutView);
ToastUtils.show(TAG);
//ToastUtils.show(TAG);
}
@Override

View File

@ -11,6 +11,7 @@ import android.net.Uri;
import android.os.Bundle;
import android.view.Menu;
import android.view.MenuItem;
import android.view.View;
import androidx.appcompat.app.AppCompatActivity;
import androidx.appcompat.widget.Toolbar;
import cc.winboll.studio.libapputils.R;
@ -19,6 +20,7 @@ import cc.winboll.studio.libapputils.log.LogUtils;
import cc.winboll.studio.libapputils.view.SimpleWebView;
import java.io.IOException;
import java.io.InputStream;
import cc.winboll.studio.libapputils.bean.APPInfo;
public class AssetsHtmlActivity extends AppCompatActivity implements IWinBollActivity {
@ -38,6 +40,11 @@ public class AssetsHtmlActivity extends AppCompatActivity implements IWinBollAct
return this;
}
@Override
public APPInfo getAppInfo() {
return null;
}
@Override
public String getTag() {
return TAG;

View File

@ -15,6 +15,7 @@ import androidx.core.app.ActivityCompat;
import androidx.core.content.ContextCompat;
import cc.winboll.studio.libapputils.R;
import cc.winboll.studio.libapputils.app.IWinBollActivity;
import cc.winboll.studio.libapputils.bean.APPInfo;
import com.google.zxing.ResultPoint;
import com.journeyapps.barcodescanner.BarcodeCallback;
import com.journeyapps.barcodescanner.BarcodeResult;
@ -36,6 +37,11 @@ public class QRCodeDecodeActivity extends AppCompatActivity implements IWinBollA
return this;
}
@Override
public APPInfo getAppInfo() {
return null;
}
@Override
public String getTag() {
return TAG;

View File

@ -0,0 +1,56 @@
package cc.winboll.studio.libapputils.app;
import android.content.Context;
import android.content.Intent;
import cc.winboll.studio.libapputils.activities.AboutActivity;
import cc.winboll.studio.libapputils.app.AboutActivityFactory;
import cc.winboll.studio.libapputils.bean.APPInfo;
import com.hjq.toast.ToastUtils;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
/**
* @Author ZhanGSKen@QQ.COM
* @Date 2025/02/06 08:45:23
* @Describe 关于活动窗口的介绍窗口工厂
*/
public class AboutActivityFactory {
public static final String TAG = "AboutActivityFactory";
public static APPInfo buildDefaultAPPInfo() {
String szBranchName = "";
APPInfo appInfo = new APPInfo();
appInfo.setAppName("APP");
appInfo.setAppIcon(cc.winboll.studio.libapputils.R.drawable.ic_winboll);
appInfo.setAppDescription("APP Description");
appInfo.setAppGitName("APP");
appInfo.setAppGitOwner("Studio");
appInfo.setAppGitAPPBranch(szBranchName);
appInfo.setAppGitAPPSubProjectFolder(szBranchName);
appInfo.setAppHomePage("https://www.winboll.cc/studio/details.php?app=APP");
appInfo.setAppAPKName("APP");
appInfo.setAppAPKFolderName("APP");
return appInfo;
}
public static void showAboutActivity(Context context, APPInfo appInfo) {
/*String szPN = ((IWinBollActivity)context).getActivityPackageName();
//String szPN = context.getPackageName();
String szBranchName = "";
if (szPN != null) {
//String szPN = "cc.winboll.studio.apputils.beta";
String regex = "cc\\.winboll\\.studio\\.([^.]+)\\.*";
Pattern pattern = Pattern.compile(regex);
Matcher matcher = pattern.matcher(szPN);
if (matcher.find()) {
szBranchName = matcher.group(1);
}
}*/
//ToastUtils.show(szPN);
Intent intent = new Intent(context, AboutActivity.class);
intent.putExtra(AboutActivity.EXTRA_APPINFO, (appInfo == null) ? AboutActivityFactory.buildDefaultAPPInfo():appInfo);
WinBollActivityManager.getInstance(context).startWinBollActivity(context, intent, AboutActivity.class);
}
}

View File

@ -1,19 +1,23 @@
package cc.winboll.studio.libapputils.app;
import androidx.appcompat.app.AppCompatActivity;
import androidx.appcompat.widget.Toolbar;
/**
* @Author ZhanGSKen@QQ.COM
* @Date 2025/02/04 10:20:16
* @Describe WinBoll Activity 接口
*/
import android.view.View;
import androidx.appcompat.app.AppCompatActivity;
import androidx.appcompat.widget.Toolbar;
import cc.winboll.studio.libapputils.bean.APPInfo;
public interface IWinBollActivity {
public static final String TAG = "IWinBollActivity";
// 获取当前具有 IWinBoll 特征的 AppCompatActivity 活动窗口
AppCompatActivity getActivity();
abstract public APPInfo getAppInfo();
abstract public String getTag();
abstract Toolbar initToolBar();
abstract boolean isEnableDisplayHomeAsUp();

View File

@ -11,6 +11,7 @@ import androidx.appcompat.widget.Toolbar;
import cc.winboll.studio.libappbase.GlobalApplication;
import cc.winboll.studio.libapputils.R;
import cc.winboll.studio.libapputils.app.IWinBollActivity;
import cc.winboll.studio.libapputils.bean.APPInfo;
public class LogActivity extends AppCompatActivity implements IWinBollActivity {
@ -22,6 +23,11 @@ public class LogActivity extends AppCompatActivity implements IWinBollActivity {
public AppCompatActivity getActivity() {
return this;
}
@Override
public APPInfo getAppInfo() {
return null;
}
@Override
public String getTag() {

View File

@ -0,0 +1,34 @@
package cc.winboll.studio.libapputils.view;
/**
* @Author ZhanGSKen@QQ.COM
* @Date 2025/02/06 09:02:28
* @Describe 应用分支介绍按钮
*/
import android.content.Context;
import android.content.Intent;
import android.util.AttributeSet;
import android.view.View;
import android.widget.Button;
import cc.winboll.studio.libapputils.activities.AboutActivity;
import cc.winboll.studio.libapputils.app.AboutActivityFactory;
import cc.winboll.studio.libapputils.app.IWinBollActivity;
import cc.winboll.studio.libapputils.app.WinBollActivityManager;
import com.hjq.toast.ToastUtils;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
public class AboutBranchButton extends Button {
public static final String TAG = "AboutBranchButton";
public AboutBranchButton(final Context context, AttributeSet attrs) {
super(context, attrs);
setOnClickListener(new View.OnClickListener(){
@Override
public void onClick(View view) {
AboutActivityFactory.showAboutActivity(context, ((IWinBollActivity)context).getAppInfo());
}
});
}
}

View File

@ -115,7 +115,11 @@ public class AboutView extends LinearLayout {
}
mszCurrentAppPackageName = mszAppAPKName + "_" + mszAppVersionName + ".apk";
mszHomePage = mszWinBollServerHost + "/studio/details.php?app=" + mszAppAPKFolderName;
if(mAPPInfo.getAppGitAPPBranch().equals("")) {
mszGitea = "https://gitea.winboll.cc/" + mAPPInfo.getAppGitOwner() + "/" + mszAppGitName;
} else {
mszGitea = "https://gitea.winboll.cc/" + mAPPInfo.getAppGitOwner() + "/" + mszAppGitName + "/src/branch/" + mAPPInfo.getAppGitAPPBranch() + "/" + mAPPInfo.getAppGitAPPSubProjectFolder();
}
if (GlobalApplication.isDebuging()) {
LayoutInflater inflater = LayoutInflater.from(mContext);