# PublicUI
**Repository Path**: fung_zf/PublicUI
## Basic Information
- **Project Name**: PublicUI
- **Description**: 测试
- **Primary Language**: Unknown
- **License**: Not specified
- **Default Branch**: master
- **Homepage**: None
- **GVP Project**: No
## Statistics
- **Stars**: 0
- **Forks**: 0
- **Created**: 2019-01-04
- **Last Updated**: 2020-12-19
## Categories & Tags
**Categories**: Uncategorized
**Tags**: None
## README
# PublicFunction
矿一公共模块库(注意:minSdkVersion 19)
# 效果演示

# 演示APK
[演示Apk下载](https://github.com/yknn/PublicFunction/blob/master/app/release/app-release.apk)
# 获取库
---
[最新版本](https://jitpack.io/#yknn/PublicFunction)
To get a Git project into your build:
Step 1.
Add it in your root build.gradle at the end of repositories:
```groovy
allprojects {
repositories {
...
maven { url 'https://jitpack.io' }
}
}
```
Step 2. Add the dependency
```groovy
dependencies {
compile 'com.github.yknn:PublicFunction:v1.5'
}
```
# 使用方法
---
## 说明
- 项目中使用的切图名称,如果和库中切图名称相同,会自动替换。
## 一、清单文件
### 1、权限
```java
```
### 2、添加文件传输服务
```java
```
## 二、Application
1. 继承 com.xzkydz.function.app.KyApp;
2. 复写 setAppStyleColor()方法。主要是设置APP的名称与主题颜色。
```java
public class App extends KyApp {
// 设置APP的名称、颜色
@Override
public void setAppStyleColor() {
super.setAppStyleColor();
//APP 名称
AppStyle.appNameId = R.string.app_name;
//APP 主题色
AppStyle.appToolbarColor = R.color.colorPrimary;
}
}
```
3. 在清单文件中声明。
## 三、闪屏页
### 1、继承 SplashActivity
```java
public class MySplash extends SplashActivity {
@Override
public Class> getNavigationActivity() {
return MyNavigationActivity.class;
}
@Override
public void setShowContent() {
super.setShowContent();
setAppName("我是APP名称");
setLawContent("我是法律内容");
setVersionName("我是版本号");
}
}
```
### 2、设置 MySplash 为启动页
```java
```
## 四、产品信息 、企业信息
### 1、继承 MarkDownActivity 类
```java
/**
* Date: 2018/3/21 10:18
* Description: 显示企业信息、产品信息。
* 企业信息Markdown 文件默认显示在,产品信息需要设置文件的目录。
*/
public class MyMarkDownActivity extends MarkDownActivity {
@Override
public String setProductInfFileUrl() {
return "markdown/ProductInf.md";
}
}
```
### 2、将第一步继承的类,加入项目的AndroidManifest.xml文件。
## 五、主界面
### 1.继承 NavigationActivity类
```java
/**
* 继承 NavigationActivity 类
*/
public class MyNavigationActivity extends NavigationActivity {
@Override
public NavigationActivityManagerInf getNavigationActivityManager() {
// int[] bgArray = {R.drawable.selector_navi_cs,
// R.drawable.selector_navi_shjgl,
// R.drawable.selector_navi_bgchx,
// R.drawable.selector_navi_cshbzh,
// R.drawable.selector_navi_chgq,
// R.drawable.selector_navi_tc} ;
//设置界面样式
NavigationActivityManagerInf activityManager = new NavigationActivityManager();
//设置左上角显示名称
activityManager.setAppName(R.string.app_name);
//侧边栏是否显示“打印”项
activityManager.setShowPrints(true);
//侧边栏显示配置项
activityManager.setShowConfiguration(true);
// 设置主界面按钮的背景(选择器 ,如果对应切图的命名和库中的切图命名是一样的,则会自动替换项目中的切图)
// activityManager.setMainButtonBg(bgArray);
// 设置主界面背景图
// activityManager.setNavigationActivityBg(R.drawable.home_bg);
// 设置侧边栏顶部背景图
// activityManager.setNavigationViewHeardBg(R.drawable.leftbar_top_bg);
return activityManager;
}
@Override
public void onTestButtonClickListener() {
// 测试按钮点击事件
}
@Override
public void onDataManagerClickListener() {
// 数据管理按钮点击事件
}
@Override
public void onSensorButtonClicklistener() {
// 传感器按钮点击事件
}
@NonNull
@Override
public Class> getMarkdownActivity() {
return MyMarkDownActivity.class;
}
/**
* 如果显示“打印”选项,则复写此方法获取按钮的点击事件。如果不显示“打印”按钮,则无需复写此方法。
*/
@Override
public void onPrintsItemClickListener() {
super.onPrintsItemClickListener();
}
}
```
### 2、将第一步继承的类,加入项目的AndroidManifest.xml文件。
注意主题:
```java
android:theme="@style/AppTheme.NoActionBar"
```
## 六、历史任务搜索功能
`发现BUG,暂时没修改,不影响使用。部分细节需要优化。`
### 1、第一步
测试任务表的实体类`TaskEnity` 实现接口`ITaskRoot`;
### 2、第二步
创建类`HistoryTaskSearchActivity` 继承 `SearchHistoryTaskActivity`,实现抽象方法`getTaskDataList()` 、`getTestClass()`;
说明:
1、`getTaskDataList()` 在此方法中返回测试任务表实体类集合。
2、`getTestClass()` 返回测试界面类。
```java
public class HistoryTaskSearchActivity extends SearchHistoryTaskActivity {
//返回所有的任务集合
@Override
protected List getTaskDataList() {
List list = new ArrayList<>();
List taskEnities = MyApp.getDaoInstant().getTaskEnityDao().loadAll();
list.addAll(taskEnities);
return list;
}
// 返回测试测试界面
@Override
protected Class getTestClass() {
return null;
}
// 有可能再暴露一个方法,用于将选中的测试任务再Application中设为全局变量
}
```
### 3、第三步
1、清单文件
```java
```
## 七、电机库选择、新建功能

### 1、第一步
`MotorSelectorActivity` 继承 `com.xzkydz.function.GreatedTaskMotorSelector.view.MotorSelectorActivity`,实现三个抽象函数`getMotorList()`,`insertNewMotor(finalMotorBean motorBean)`,`deleteMotor(IMotorBean iMotorBean)`;
说明:
1、`getMotorList()` 用于获取数据库所有的电机库实体。
2、`insertNewMotor(finalMotorBean motorBean)` 往数据库中插入一条电机信息。
3、`deleteMotor(IMotorBean iMotorBean)`删除一条电机信息;
```java
public class MyMotorSelectorActivity extends MotorSelectorActivity {
MyApp myApp = MyApp.getInstance();
private List iMotorBeans;
//获取所有的电机库
@Override
public List getMotorList() {
// 声明iMotorBeans集合,并抛出去
iMotorBeans = new ArrayList<>();
// 在线程中对数据库进行读写操作,防止对UI线程造成阻塞,引起卡顿
new Thread(new Runnable() {
@Override
public void run() {
//从数据库中获取所有的电机,返回电机实体对象的集合
List motorBeanList = myApp.getDaoInstant().getMotorEnityDao().loadAll();
//对集合进行倒序操作
Collections.reverse(motorBeanList);
//为什么这样转换,其中涉及到java接口和实例类之间的关系的相关知识
iMotorBeans.addAll(motorBeanList);
runOnUiThread(new Runnable() {
@Override
public void run() {
// 隐藏加载框
hideDialog();
// 刷新ListView
initListView(iMotorBeans);
}
});
}
}).start();
return iMotorBeans;
}
// 插入一条新的电机数据
@Override
public void insertNewMotor(final com.xzkydz.function.InsertMotorLib.MotorBean motorBean) {
final MotorEnity motorEnity = new MotorEnity();
motorEnity.setDJ_LIB_NAME(motorBean.getDJ_LIB_NAME());
motorEnity.setEDDY(motorBean.getEDDY());
motorEnity.setEDDL(motorBean.getEDDL());
motorEnity.setEDGL(motorBean.getEDGL());
motorEnity.setEDXL(motorBean.getEDXL());
motorEnity.setJS(motorBean.getJS());
motorEnity.setKZDL(motorBean.getKZDL());
motorEnity.setKZGL(motorBean.getKZGL());
motorEnity.setWGJJDL(motorBean.getWGJJDL());
motorEnity.setIsAdd(true);
motorEnity.setDJXL("手动录入电机"); // 电机系列
iMotorBeans.add(0,motorEnity);
setMotorAllList(iMotorBeans);
initListView(iMotorBeans);
new Thread(new Runnable() {
@Override
public void run() {
myApp.getDaoInstant().getMotorEnityDao().insert(motorEnity);
}
}).start();
}
// 删除一条电机数据
@Override
public void deleteMotor(final IMotorBean iMotorBean) {
iMotorBeans.remove(iMotorBean);
setMotorAllList(iMotorBeans);
initListView(iMotorBeans);
new Thread(new Runnable() {
@Override
public void run() {
myApp.getDaoInstant().getMotorEnityDao().deleteByKey(iMotorBean.getId());
}
}).start();
}
}
```
### 2、第二步
```java
```
## 附录:
1、主界面按钮背景 selector
```java
// 按下的状态
// 默认状态
```
2、项目build 文件
```java
apply plugin: 'com.android.application'
android {
compileSdkVersion 26
defaultConfig {
applicationId "com.xzkydz.function.gaspublicfunction"
minSdkVersion 19
targetSdkVersion 26
versionCode 1
versionName "1.0"
testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
}
buildTypes {
release {
minifyEnabled false
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
}
}
}
dependencies {
implementation fileTree(include: ['*.jar'], dir: 'libs')
implementation 'com.android.support:appcompat-v7:26.1.0'
implementation 'com.android.support.constraint:constraint-layout:1.0.2'
testImplementation 'junit:junit:4.12'
androidTestImplementation 'com.android.support.test:runner:1.0.1'
androidTestImplementation 'com.android.support.test.espresso:espresso-core:3.0.1'
implementation project(':Uilibrary')
}
```