diff --git a/.gitignore b/.gitignore deleted file mode 100644 index e61c078248a84183c7e1b5aa344566656d46c387..0000000000000000000000000000000000000000 --- a/.gitignore +++ /dev/null @@ -1,11 +0,0 @@ -*.iml -.gradle -/local.properties -/.idea/workspace.xml -/.idea/libraries -.idea -.DS_Store -/build -/captures -secring.gpg - diff --git a/CHANGELOG.md b/CHANGELOG.md new file mode 100644 index 0000000000000000000000000000000000000000..5d6fbdd271282db0b3c58263b0fc268ad6202957 --- /dev/null +++ b/CHANGELOG.md @@ -0,0 +1,3 @@ +## 0.0.1-SNAPSHOT +* refactor: For module library to openharmony + diff --git a/LICENSE .md b/LICENSE .md new file mode 100644 index 0000000000000000000000000000000000000000..c2c2ce963e745e17bd4c93a80fe88461aab267ca --- /dev/null +++ b/LICENSE .md @@ -0,0 +1,24 @@ +The MIT License (MIT) + +Copyright (c) 2016 + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. + +Please let me know if you use the library in your applications. +I want to collect and publish this list. \ No newline at end of file diff --git a/README.OPENSOURCE b/README.OPENSOURCE new file mode 100644 index 0000000000000000000000000000000000000000..62093a5c73811255d79f63c4673e1f36c85f9e61 --- /dev/null +++ b/README.OPENSOURCE @@ -0,0 +1,10 @@ +[ + { + "Name": "tootips", + "License": " Apache License ", + "License File": " LICENSE ", + "Version Number": " 1.1 ", + "Upstream URL": " https://github.com/tomergoldst/tooltips", + "Description": " Simple to use library for ohos, Enabling to add a tooltip near any view with ease " + } +] diff --git a/README.md b/README.md index 2c9b23f6797f043b7872227fac276bbdc8b76f8e..4af9cde3b6c1cf3cde9646d0066f992452c5d8fa 100644 --- a/README.md +++ b/README.md @@ -1,158 +1,129 @@ -# Tooltips -Simple to use library for android, Enabling to add a tooltip near any view with ease - - - -## Instructions -Add a dependency to your app build.gradle -```groovy -dependencies { - implementation 'com.tomergoldst.android:tooltips:1.1.0' +# tooltips + +#### 项目介绍 +- 项目名称:tooltips。 +- 所属系列:openharmony的第三方组件适配移植。 +- 功能:易于使用的ohos库,可轻松在任何视图附近添加工具提示。 +- 项目移植状态:目前openharmony不支持加载.9图拉伸功能。 +- 调用差异:无 +- 基线版本:Release v1.1 +- 开发版本:sdk5,DevEco Studio2.1 beta4 + +#### 效果演示 +![效果演示](./img/demo.gif) + +#### 安装教程 +1、在项目根目录下的build.gradle文件中 + ```gradle +allprojects { + repositories { + maven { + url 'https://s01.oss.sonatype.org/content/repositories/snapshots/' + } + } } -``` - -Create a `ToolTipsManager` object -```java -public class MainActivity extends Activity { - - ToolTipsManager mToolTipsManager; - + ``` +2.在entry模块的build.gradle文件中 + ```gradle + dependencies { + implementation('com.gitee.chinasoft_ohos:tooltips:0.0.1-SNAPSHOT') + ...... + } + ``` +在sdk5,DevEco Studio2.1 beta4下项目可直接运行, + +如无法运行,删除项目.gradle,.idea,build,gradle,build.gradle文件, + +并依据自己的版本创建新项目,将新项目的对应文件复制到根目录下 + +#### 使用说明 + +1.如何开始 +创建一个ToolTipsManager对象 + ``` + ToolTipsManager mToolTipsManager; @Override - protected void onCreate(Bundle savedInstanceState) { - super.onCreate(savedInstanceState); - setContentView(R.layout.activity_main); - - mToolTipsManager = new ToolTipsManager(); - + public void onStart(Intent intent) { + super.onStart(intent); + getWindow().addFlags(WindowManager.LayoutConfig.MARK_TRANSLUCENT_STATUS); + super.setUIContent(ResourceTable.Layout_ability_main); + mToolTipsManager = new ToolTipsManager(MainAbilitySlice.this); + + ``` +2.使用mToolTipsManager 设置子类位置,大小,背景,文字等 + ``` + case ResourceTable.Id_button_above: + tag = 1; + builder = new ToolTip.Builder(this, mTextView); + mToolTipsManager.show(tag,builder.build()); + break; + + ``` +3.位置的实现ToolTipCoordinatesFinder类 +根据点击的不同方向计算出位置 +获取view上部位置 + ``` + float leftAbovey = textView.getContentPositionY() - idAboveImageview.getEstimatedHeight(); + float leftAbovex = textView.getContentPositionX() + textView.getEstimatedWidth() / 2 - idAboveImageview.getEstimatedWidth() / 2; + idAboveImageview.setContentPosition(leftAbovex, leftAbovey); + ``` +获取view下部位置 + ``` + float leftBelowy = mTextView.getContentPositionY() + mTextView.getEstimatedHeight(); + float leftBelowx = mTextView.getContentPositionX() + mTextView.getEstimatedWidth() / 2 - idBelowimageView.getEstimatedWidth() / 2; + idBelowimageView.setContentPosition(leftBelowx, leftBelowy); + ``` +4.加载动画DefaultToolTipAnimator类 +动画加载调用方法 + ``` + public AnimatorProperty popup(Component view, long duration) { + view.setVisibility(Component.VISIBLE); + AnimatorProperty abovePopup = new AnimatorProperty(); + abovePopup.alphaFrom(0).alpha(90).setCurveType(new Animator.CurveType().ANTICIPATE).setDuration(500); + abovePopup.setTarget(view); + return abovePopup; } - -} -``` + ``` +动画消失调用方法 + ``` + public AnimatorProperty popout(final Component view, final long duration, final AnimatorProperty animatorListenerAdapter) { + AnimatorProperty animatorValue = new AnimatorProperty(); + animatorValue.alpha(0).scaleX(0).scaleY(0).setDuration(duration).setCurveType(3);...... -Use the `ToolTip.Builder` to construct your tip -```java -public class MainActivity extends Activity { - - @Override - public void onWindowFocusChanged(boolean hasFocus) { - super.onWindowFocusChanged(hasFocus); - - ToolTip.Builder builder = new ToolTip.Builder(this, mTextView, mRootLayout, "Tip message", ToolTip.POSITION_ABOVE); - } -} -``` -`mTextView` here is the view which near it the tip will be shown and `mRootLayout` is the layout where the tip view will be added to. -**The root layout must be** of `RelativeLayout`, `FrameLayout` or similar. `LinearLayout` won't work but you can always wrap your `LinearLayout` -with another layout. Prefer to pass in a layout which is higher in the xml tree as this will give the -tip view more visible space. - -**OPTIONAL**: Customize your tip with background color, text color, alignment, text gravity, type face and more. -```java -public class MainActivity extends Activity { - - @Override - public void onWindowFocusChanged(boolean hasFocus) { - super.onWindowFocusChanged(hasFocus); - - ToolTip.Builder builder = new ToolTip.Builder(this, mTextView, mRootLayout, "Tip message", ToolTip.POSITION_ABOVE); - builder.setAlign(ToolTip.ALIGN_LEFT); - builder.setBackgroundColor(getResources().getColor(R.color.colorOrange)); - builder.setGravity(ToolTip.GRAVITY_RIGHT); - builder.setTextAppearance(R.style.TooltipTextAppearance); // from `styles.xml` - builder.setTypeface(mCustomFontTypeface); - } -} -``` - -Here is an example on how you can define your text appearance in your `styles.xml` - -```xml - -``` - -You can also customize the animation used to show and hide the tooltip view by providing `ToolTipAnimator` implementation and setting it in the `ToolTipsManager`. -```java -public class MainActivity extends Activity { - ToolTipsManager mToolTipsManager; - - @Override - protected void onCreate(Bundle savedInstanceState) { - super.onCreate(savedInstanceState); - setContentView(R.layout.activity_main); - - mToolTipsManager = new ToolTipsManager(); - mToolTipsManager.setToolTipAnimator(MyCustomToolTipAnimator()); + ``` +5.设置背景类ToolTipBackgroundConstructor + ``` +根据点击的不同方向设置加载不同的图片 + static void setBackground(Text idAboveImageview, int imgResouse) { + try { + PixelMapElement pixelMapElement = new PixelMapElement(idAboveImageview.getResourceManager().getResource(imgResouse)); + idAboveImageview.setBackground(pixelMapElement); + } catch (IOException e) { + e.printStackTrace(); + } catch (NotExistException e) { + e.printStackTrace(); + } } + ``` -} -``` +#### 测试信息 + ``` +CodeCheck代码测试无异常 -Use `ToolTipManger` to show the tip +CloudTest代码测试无异常 -**IMPORTANT**: This must be called after the layout has been drawn -You can override the `onWindowFocusChanged()` of an Activity and show there, Start a delayed runnable from `onStart()`, react to user action or any other method that works for you -```java -public class MainActivity extends Activity { - - @Override - public void onWindowFocusChanged(boolean hasFocus) { - super.onWindowFocusChanged(hasFocus); - - ToolTip.Builder builder = new ToolTip.Builder(this, mTextView, mRootLayout, "Tip message", ToolTip.POSITION_ABOVE); - - // Rest of builder configurations removed for brevity - - mToolTipsManager.show(builder.build()); - } -} -``` +火绒安全病毒安全检测通过 -Each tip is dismissable by clicking on it, if you want to dismiss a tip from code there are a few options, the most simple way is to do the following -```java -public class MainActivity extends Activity { - - @Override - protected void onCreate(Bundle savedInstanceState) { - - mDismissBtn.setOnClickListener(new View.OnClickListener() { - @Override - public void onClick(View view) { - mToolTipsManager.findAndDismiss(mTextView); - } - }); - } - -} -``` -Where `mTextView` is the same view we asked to position a tip near it +当前版本demo功能与原组件基本无差异 + ``` -If you want to react when tip has been dismissed, Implement `ToolTipsManager.TipListener` interface and use appropriate `ToolTipsManager` constructor -```java -public class MainActivity extends Activity implements ToolTipsManager.TipListener { - - @Override - protected void onCreate(Bundle savedInstanceState) { - mToolTipsManager = new ToolTipsManager(this); - } - - @Override - public void onTipDismissed(View view, int anchorViewId, boolean byUser) { - Log.d(TAG, "tip near anchor view " + anchorViewId + " dismissed"); - - if (anchorViewId == R.id.text_view) { - // Do something when a tip near view with id "R.id.text_view" has been dismissed - } - } - -} -``` +#### 版本迭代 -### License -``` + ``` +- 0.0.1-SNAPSHOT + ``` +#### 版权和许可信息 + ``` Copyright 2016 Tomer Goldstein Licensed under the Apache License, Version 2.0 (the "License"); @@ -166,6 +137,4 @@ distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License. -``` - - + ``` \ No newline at end of file diff --git a/app/build.gradle b/app/build.gradle index 5958924f304f0eebe9a380f80334e02cbb55a5ea..9d526d8af2ced369732b3ddc435127256e3d58db 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -1,26 +1,30 @@ -apply plugin: 'com.android.application' - -android { - compileSdkVersion 30 - +apply plugin: 'com.huawei.ohos.hap' +apply plugin: 'com.huawei.ohos.decctest' +ohos { + compileSdkVersion 5 defaultConfig { - applicationId "com.tomergoldst.tooltipsdemo" - minSdkVersion 14 - targetSdkVersion 30 - versionCode 2 - versionName "1.1" + compatibleSdkVersion 5 } buildTypes { release { - minifyEnabled false - proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro' + proguardOpt { + proguardEnabled false + rulesFiles 'proguard-rules.pro' + } } } + + } dependencies { - implementation fileTree(dir: 'libs', include: ['*.jar']) - testImplementation 'junit:junit:4.13.1' - implementation 'com.google.android.material:material:1.3.0' - implementation project(path: ':tooltips') + implementation fileTree(dir: 'libs', include: ['*.jar', '*.har']) + testImplementation 'junit:junit:4.13' + ohosTestImplementation 'com.huawei.ohos.testkit:runner:1.0.0.100' + implementation('com.gitee.chinasoft_ohos:RWidgetHelper:0.0.3-SNAPSHOT') + implementation project(path : ':tooltips') + +} +decc { + supportType = ['html','xml'] } diff --git a/app/proguard-rules.pro b/app/proguard-rules.pro index 8c36c8d2fe4c9211533ff78068d91d52aaf50e85..f7666e47561d514b2a76d5a7dfbb43ede86da92a 100644 --- a/app/proguard-rules.pro +++ b/app/proguard-rules.pro @@ -1,17 +1 @@ -# Add project specific ProGuard rules here. -# By default, the flags in this file are appended to flags specified -# in C:\Users\Tomer\AppData\Local\Android\sdk/tools/proguard/proguard-android.txt -# You can edit the include path and order by changing the proguardFiles -# directive in build.gradle. -# -# For more details, see -# http://developer.android.com/guide/developing/tools/proguard.html - -# Add any project specific keep options here: - -# If your project uses WebView with JS, uncomment the following -# and specify the fully qualified class name to the JavaScript interface -# class: -#-keepclassmembers class fqcn.of.javascript.interface.for.webview { -# public *; -#} +# config module specific ProGuard rules here. \ No newline at end of file diff --git a/app/src/androidTest/java/com/tomergoldst/tooltipsdemo/ApplicationTest.java b/app/src/androidTest/java/com/tomergoldst/tooltipsdemo/ApplicationTest.java deleted file mode 100644 index d28c723d28710fd0bbd9fbf5878630e321b13588..0000000000000000000000000000000000000000 --- a/app/src/androidTest/java/com/tomergoldst/tooltipsdemo/ApplicationTest.java +++ /dev/null @@ -1,13 +0,0 @@ -package com.tomergoldst.tooltipsdemo; - -import android.app.Application; -import android.test.ApplicationTestCase; - -/** - * Testing Fundamentals - */ -public class ApplicationTest extends ApplicationTestCase { - public ApplicationTest() { - super(Application.class); - } -} \ No newline at end of file diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml deleted file mode 100644 index afd64dcb48409a5df49ffc18cd9675c9f9dd9629..0000000000000000000000000000000000000000 --- a/app/src/main/AndroidManifest.xml +++ /dev/null @@ -1,20 +0,0 @@ - - - - - - - - - - - - - - \ No newline at end of file diff --git a/app/src/main/assets/OFL.txt b/app/src/main/assets/OFL.txt deleted file mode 100755 index c43bbb50c7335531962bd8da14aa7f806642733d..0000000000000000000000000000000000000000 --- a/app/src/main/assets/OFL.txt +++ /dev/null @@ -1,93 +0,0 @@ -Copyright 2011 The Pacifico Project Authors (https://github.com/Fonthausen/Pacifico) - -This Font Software is licensed under the SIL Open Font License, Version 1.1. -This license is copied below, and is also available with a FAQ at: -http://scripts.sil.org/OFL - - ------------------------------------------------------------ -SIL OPEN FONT LICENSE Version 1.1 - 26 February 2007 ------------------------------------------------------------ - -PREAMBLE -The goals of the Open Font License (OFL) are to stimulate worldwide -development of collaborative font projects, to support the font creation -efforts of academic and linguistic communities, and to provide a free and -open framework in which fonts may be shared and improved in partnership -with others. - -The OFL allows the licensed fonts to be used, studied, modified and -redistributed freely as long as they are not sold by themselves. The -fonts, including any derivative works, can be bundled, embedded, -redistributed and/or sold with any software provided that any reserved -names are not used by derivative works. The fonts and derivatives, -however, cannot be released under any other type of license. The -requirement for fonts to remain under this license does not apply -to any document created using the fonts or their derivatives. - -DEFINITIONS -"Font Software" refers to the set of files released by the Copyright -Holder(s) under this license and clearly marked as such. This may -include source files, build scripts and documentation. - -"Reserved Font Name" refers to any names specified as such after the -copyright statement(s). - -"Original Version" refers to the collection of Font Software components as -distributed by the Copyright Holder(s). - -"Modified Version" refers to any derivative made by adding to, deleting, -or substituting -- in part or in whole -- any of the components of the -Original Version, by changing formats or by porting the Font Software to a -new environment. - -"Author" refers to any designer, engineer, programmer, technical -writer or other person who contributed to the Font Software. - -PERMISSION & CONDITIONS -Permission is hereby granted, free of charge, to any person obtaining -a copy of the Font Software, to use, study, copy, merge, embed, modify, -redistribute, and sell modified and unmodified copies of the Font -Software, subject to the following conditions: - -1) Neither the Font Software nor any of its individual components, -in Original or Modified Versions, may be sold by itself. - -2) Original or Modified Versions of the Font Software may be bundled, -redistributed and/or sold with any software, provided that each copy -contains the above copyright notice and this license. These can be -included either as stand-alone text files, human-readable headers or -in the appropriate machine-readable metadata fields within text or -binary files as long as those fields can be easily viewed by the user. - -3) No Modified Version of the Font Software may use the Reserved Font -Name(s) unless explicit written permission is granted by the corresponding -Copyright Holder. This restriction only applies to the primary font name as -presented to the users. - -4) The name(s) of the Copyright Holder(s) or the Author(s) of the Font -Software shall not be used to promote, endorse or advertise any -Modified Version, except to acknowledge the contribution(s) of the -Copyright Holder(s) and the Author(s) or with their explicit written -permission. - -5) The Font Software, modified or unmodified, in part or in whole, -must be distributed entirely under this license, and must not be -distributed under any other license. The requirement for fonts to -remain under this license does not apply to any document created -using the Font Software. - -TERMINATION -This license becomes null and void if any of the above conditions are -not met. - -DISCLAIMER -THE FONT SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, -EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO ANY WARRANTIES OF -MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT -OF COPYRIGHT, PATENT, TRADEMARK, OR OTHER RIGHT. IN NO EVENT SHALL THE -COPYRIGHT HOLDER BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, -INCLUDING ANY GENERAL, SPECIAL, INDIRECT, INCIDENTAL, OR CONSEQUENTIAL -DAMAGES, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING -FROM, OUT OF THE USE OR INABILITY TO USE THE FONT SOFTWARE OR FROM -OTHER DEALINGS IN THE FONT SOFTWARE. diff --git a/app/src/main/assets/Pacifico-Regular.ttf b/app/src/main/assets/Pacifico-Regular.ttf deleted file mode 100755 index f85aee040c653d292ffde2ea4ebe0cd2d91833d9..0000000000000000000000000000000000000000 Binary files a/app/src/main/assets/Pacifico-Regular.ttf and /dev/null differ diff --git a/app/src/main/config.json b/app/src/main/config.json new file mode 100644 index 0000000000000000000000000000000000000000..d40e96058ff1d775fb5859d9431c1d1e741821c9 --- /dev/null +++ b/app/src/main/config.json @@ -0,0 +1,56 @@ +{ + "app": { + "bundleName": "com.tomergoldst.tooltipsdemo", + "vendor": "tomergoldst", + "version": { + "code": 1, + "name": "1.0" + }, + "apiVersion": { + "compatible": 5, + "target": 5, + "releaseType": "Release" + } + }, + "deviceConfig": {}, + "module": { + "package": "com.tomergoldst.tooltipsdemo", + "name": ".MyApplication", + "deviceType": [ + "phone" + ], + "distro": { + "deliveryWithInstall": true, + "moduleName": "app", + "moduleType": "entry" + }, + "abilities": [ + { + "skills": [ + { + "entities": [ + "entity.system.home" + ], + "actions": [ + "action.system.home" + ] + } + ], + "orientation": "unspecified", + "name": "com.tomergoldst.tooltipsdemo.MainAbility", + "icon": "$media:icon", + "description": "$string:mainability_description", + "label": "$string:app_name", + "type": "page", + "launchType": "standard", + "metaData": { + "customizeData" : [{ + "extra" : "", + "name" : "hwc-theme", + "value" : "androidhwext:style/Theme.Emui.Light.NoTitleBar" + }] + } + } + ] + } +} \ No newline at end of file diff --git a/app/src/main/java/com/tomergoldst/tooltipsdemo/MainAbility.java b/app/src/main/java/com/tomergoldst/tooltipsdemo/MainAbility.java new file mode 100644 index 0000000000000000000000000000000000000000..ea1513dc4b1b9e427247225930cdbd3921476563 --- /dev/null +++ b/app/src/main/java/com/tomergoldst/tooltipsdemo/MainAbility.java @@ -0,0 +1,15 @@ +package com.tomergoldst.tooltipsdemo; + +import ohos.aafwk.ability.Ability; +import ohos.aafwk.content.Intent; +import ohos.agp.window.service.WindowManager; + +public class MainAbility extends Ability { + @Override + public void onStart(Intent intent) { + // 设置状态栏颜色 + WindowManager.getInstance().getTopWindow().get().setStatusBarColor(getColor(ResourceTable.Color_status_bar)); + super.onStart(intent); + super.setMainRoute(MainAbilitySlice.class.getName()); + } +} diff --git a/app/src/main/java/com/tomergoldst/tooltipsdemo/MainAbilitySlice.java b/app/src/main/java/com/tomergoldst/tooltipsdemo/MainAbilitySlice.java new file mode 100644 index 0000000000000000000000000000000000000000..3ac7d09ff5af78d99290cd80aefd1012dfde7a59 --- /dev/null +++ b/app/src/main/java/com/tomergoldst/tooltipsdemo/MainAbilitySlice.java @@ -0,0 +1,218 @@ +/* +Copyright 2016 Tomer Goldstein + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + +http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +package com.tomergoldst.tooltipsdemo; + +import com.ruffian.library.widget.component.RRadioButton; +import com.tomergoldst.tooltipshm.ToolTip; +import com.tomergoldst.tooltipshm.ToolTipsManager; +import ohos.aafwk.ability.AbilitySlice; +import ohos.aafwk.content.Intent; +import ohos.agp.animation.Animator; +import ohos.agp.animation.AnimatorProperty; +import ohos.agp.colors.RgbColor; +import ohos.agp.components.*; +import ohos.agp.components.element.ShapeElement; +import ohos.agp.utils.Color; +import ohos.agp.window.service.WindowManager; + +import java.util.ArrayList; +import java.util.List; + +public class MainAbilitySlice extends AbilitySlice implements + Component.ClickedListener { + private DependentLayout dlInitLayout; + private TextField mEditText; + private Text mTextView; + private Text rightImageView; + private Text leftImageView; + private Text idAboveImageview; + private Text idBelowimageView; + private Text inputHint; + private Button mAboveBtn; + private Button mBelowBtn; + private Button mLeftToBtn; + private Button mRightToBtn; + private RRadioButton checkboxLeft; + private RRadioButton checkboxCenter; + private RRadioButton checkboxRight; + private int tag; + private List checkboxes; + private List