- Java 双重比较
- java - 比较器与 Apache BeanComparator
- Objective-C 完成 block 导致额外的方法调用?
- database - RESTful URI 是否应该公开数据库主键?
我决定开发一款 Android 应用,它使用的技术与我之前见过的应用非常相似。我想将多个按钮按下串在一起以等同于不同的不同文本结果。
Six dots - braille application (actual application to use)
我正在制作的这个本地盲文应用程序有 6 个不同的按钮,我希望每个独特的组合都能给我带来不同的字母。例如:我想按下按钮 1 来简单地给我带来字母“A”。然后连续按下按钮 1 和按钮 2 给我带来字母“C”。我希望这 6 个按钮的每个不同按钮组合都能给我带来一个单独的字母。
有精通Java的能解释一下这是怎么做到的吗?我怎样才能通过多次按下按钮来获得不同的结果?感谢您的帮助。
我的 java 代码:
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.keyboard);
Window window = this.getWindow();
window.addFlags(LayoutParams.FLAG_DISMISS_KEYGUARD);
window.addFlags(LayoutParams.FLAG_SHOW_WHEN_LOCKED);
window.addFlags(LayoutParams.FLAG_TURN_SCREEN_ON);
// Init GUI
txtMessage = (EditText) findViewById(R.id.txtMesssage);
Button buttonOne = (Button) findViewById(R.id.block1);
Button buttonTwo = (Button) findViewById(R.id.block2);
Button buttonThree = (Button) findViewById(R.id.block3);
Button buttonFour = (Button) findViewById(R.id.block4);
Button buttonFive = (Button) findViewById(R.id.block5);
Button buttonSix = (Button) findViewById(R.id.block6);
// Attached Click Listener
btnSend.setOnClickListener(this);
buttonOne.setOnClickListener(this);
buttonTwo.setOnClickListener(this);
buttonThree.setOnClickListener(this);
buttonFour.setOnClickListener(this);
buttonFive.setOnClickListener(this);
buttonSix.setOnClickListener(this);
}
@Override
public void onClick(View v) {
}
switch (v.getId()) {
case R.id.block1:
break;
case R.id.block2:
break;
case R.id.block3:
break;
case R.id.block4:
break;
case R.id.block5:
break;
case R.id.block6:
break;
}
txtMessage.setText();
}
//functions below.
.... ....
... ...
.. ..
. O .
.. ..
... ...
.... ....
在我的 XML 布局上 keyboard.xml
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"
android:background="@color/lightgrey">
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="horizontal" >
<EditText
android:id="@+id/txtMesssage"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_margin="10dp"
android:hint="Enter Message"
android:textColor="@color/darkbrown" >
</EditText>
</LinearLayout>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_weight="1.0"
android:orientation="horizontal" >
<Button
android:id="@+id/block1"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="@android:color/white"
android:layout_weight="1.0"
android:text="Button one" />
<Button
android:id="@+id/block2"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_weight="1.0"
android:background="@color/blue"
android:text="Button two" />
</LinearLayout>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_weight="1.0"
android:orientation="horizontal" >
<Button
android:id="@+id/block3"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_weight="1.0"
android:background="@color/bg_gradient_end"
android:text="Button three" />
<Button
android:id="@+id/block4"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_weight="1.0"
android:background="@color/darkgrey"
android:text="Button four" />
</LinearLayout>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_weight="1.0"
android:orientation="horizontal" >
<Button
android:id="@+id/block5"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_weight="1.0"
android:background="@color/lightgrey"
android:text="Button five" />
<Button
android:id="@+id/block6"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_weight="1.0"
android:background="@color/bg_gradient_start"
android:text="Button six" />
</LinearLayout>
到目前为止我编写的代码没有按我想要的那样工作,所以我暂时将 switch
语句留空。请纠正我的代码或帮助我解决这个问题。谢谢
我的定时器代码:
Timer processTimer = new Timer();
processTimer.schedule(new TimerTask() {
public void run() {
processInput();
}
private void processInput() {
// TODO Auto-generated method stub
map.put(getString(R.id.block1), "A");
map.put(getString(R.id.block1) + getString(R.id.block2), "C");
}
}, 500); // Delay before processing.
processTimer.cancel();
processTimer.schedule(new TimerTask() {
public void run() {
processInput();
}
private void processInput() {
// TODO Auto-generated method stub
map.get(R.id.block1);
map.get(R.id.block1+R.id.block2);
//this.close();
}
}, 500);
这是正确的吗?
最佳答案
我尝试使用类似于 aptyp 建议的方法进行编码:
主要 Activity .java:
public class MainActivity extends AppCompatActivity implements View.OnClickListener{
static long DELAY_TIME_INPUT = 500;
static int INPUT_TYPE_NORMAL = 0;
static int INPUT_TYPE_CAP = 1;
static int INPUT_TYPE_NUM = 2;
TextView txtMessage;
int[] mAlphabetTable1 = new int[]{1, 3, 9, 25, 17, 11, 27, 19, 10, 26,
5, 7, 13, 29, 21, 15, 31, 23, 14, 30,
37, 39, 58, 45, 61, 53};
int[] mSymbolTable1 = new int[]{2, 6, 4, 18, 36, 40, 50, 22, 38, 52, 54, 12};
/* Note: The value used below {8, 16, 20, 24} are just an example.
I choose these values because they are not defined on the above tables.
*/
int[] mSpecialTable1 = new int[]{8, 16, 20, 24};
// char[] mAlphabetTable2 = new char[]{};
char[] mNumberTable2 = new char[]{'1', '2', '3', '4', '5', '6', '7', '8', '9', '0'};
char[] mSymbolTable2 = new char[]{',', ';', '\'', ':','-', '.', '.', '!', '“', '”','(','/'};
int mCurrentAlphabet = 0;
int mCurrentInputType = 0;
long mLastTimeStamp;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
Window window = this.getWindow();
window.addFlags(WindowManager.LayoutParams.FLAG_DISMISS_KEYGUARD);
window.addFlags(WindowManager.LayoutParams.FLAG_SHOW_WHEN_LOCKED);
window.addFlags(WindowManager.LayoutParams.FLAG_TURN_SCREEN_ON);
// Init GUI
txtMessage = (TextView) findViewById(R.id.txtMesssage);
Button buttonOne = (Button) findViewById(R.id.block1);
Button buttonTwo = (Button) findViewById(R.id.block2);
Button buttonThree = (Button) findViewById(R.id.block3);
Button buttonFour = (Button) findViewById(R.id.block4);
Button buttonFive = (Button) findViewById(R.id.block5);
Button buttonSix = (Button) findViewById(R.id.block6);
// Attached Click Listener
buttonOne.setOnClickListener(this);
buttonTwo.setOnClickListener(this);
buttonThree.setOnClickListener(this);
buttonFour.setOnClickListener(this);
buttonFive.setOnClickListener(this);
buttonSix.setOnClickListener(this);
}
@Override
public void onClick(View view) {
switch (view.getId()){
case R.id.block1: mCurrentAlphabet |=1; break;
case R.id.block2: mCurrentAlphabet |=2; break;
case R.id.block3: mCurrentAlphabet |=4; break;
case R.id.block4: mCurrentAlphabet |=8; break;
case R.id.block5: mCurrentAlphabet |=16; break;
case R.id.block6: mCurrentAlphabet |=32; break;
}
view.setBackgroundColor(Color.BLACK);
Button btView = (Button) view;
btView.setTextColor(Color.WHITE);
mLastTimeStamp = System.currentTimeMillis();
Handler handler = new Handler();
handler.postDelayed(new Runnable() {
@Override
public void run() {
long currentTimeStamp = System.currentTimeMillis();
if(currentTimeStamp - mLastTimeStamp > DELAY_TIME_INPUT){
genNewBrailleAlphabet();
}
}
}, DELAY_TIME_INPUT + 10);
}
public void genNewBrailleAlphabet(){
if(mCurrentAlphabet == 32 || mCurrentAlphabet == 60){ // Check if input is Cap or Num sign?
if(mCurrentAlphabet == 32){ // Input is Cap sign.
mCurrentInputType = INPUT_TYPE_CAP;
TextView txtCap = (TextView) findViewById(R.id.cap);
txtCap.setBackgroundColor(Color.GREEN);
} else { // Input is Num sign.
TextView txtNum = (TextView) findViewById(R.id.num);
if(mCurrentInputType == INPUT_TYPE_NUM){
mCurrentInputType = INPUT_TYPE_NORMAL; // Turn off Num sign.
txtNum.setBackgroundColor(Color.TRANSPARENT);
} else {
mCurrentInputType = INPUT_TYPE_NUM; // Turn on Num sign.
txtNum.setBackgroundColor(Color.GREEN);
}
}
} else { // Input is not Cap or Num sign.
byte currentAlphabetIndex = -1;
char newAlphabet = 0;
for (int i = 0; i < mAlphabetTable1.length; i++) {
if (mAlphabetTable1[i] == mCurrentAlphabet) {
currentAlphabetIndex = (byte) i;
break;
}
}
if(currentAlphabetIndex != -1) { // Check if input is Numbers or Alphabets?
if (mCurrentInputType == INPUT_TYPE_NUM) { // Input is Numbers.
if(currentAlphabetIndex < 10) {
newAlphabet = mNumberTable2[currentAlphabetIndex];
}
} else if (mCurrentInputType == INPUT_TYPE_CAP) // Input is Alphabets.
newAlphabet = (char) (currentAlphabetIndex + 'A');
else newAlphabet = (char) (currentAlphabetIndex + 'a');
String msg = txtMessage.getText().toString() + newAlphabet;
txtMessage.setText(msg);
} else { // Input is not Numbers or Alphabets.
for (int i = 0; i < mSymbolTable1.length; i++) {
if (mSymbolTable1[i] == mCurrentAlphabet) {
currentAlphabetIndex = (byte) i;
break;
}
}
if(currentAlphabetIndex != -1) { // Check if input is Punctuations?
newAlphabet = mSymbolTable2[currentAlphabetIndex];
if(currentAlphabetIndex == 8){ // Open Quote, Question Mark have the same pattern.
String tmpString = txtMessage.getText().toString();
if(tmpString.length() > 0 && !tmpString.endsWith(" ")){
// Last typed alphabet is not space, so this is Question Mark.
newAlphabet = '?';
}
}
String msg = txtMessage.getText().toString() + newAlphabet;
txtMessage.setText(msg);
} else { // Input is not Punctuations, so it is Special Action or undefined.
for (int i = 0; i < mSpecialTable1.length; i++) {
if (mSpecialTable1[i] == mCurrentAlphabet) {
currentAlphabetIndex = (byte) i;
break;
}
}
if(currentAlphabetIndex != -1) { // Check if input is Special Action?
String msg = txtMessage.getText().toString();
// Input is Special Action
switch (currentAlphabetIndex) {
case 0: // Change focus here
// Change focus code
/* if (txtNumber.hasFocus()) {
txtMessage.requestFocus();
} else {
txtNumber.requestFocus();
} */
break;
case 1: // BackSpace
msg = msg.substring(0, msg.length() - 1);
txtMessage.setText(msg);
break;
case 2: // Space
msg = msg + " ";
txtMessage.setText(msg);
break;
case 3: // New Line
msg = msg + "\n";
break;
}
txtMessage.setText(msg);
} else { // Input not defined.
Toast.makeText(getApplicationContext(), "Clicked button combination not defined!!", Toast.LENGTH_SHORT).show();
}
}
}
if(mCurrentInputType == INPUT_TYPE_CAP){
TextView txtCap = (TextView) findViewById(R.id.cap);
txtCap.setBackgroundColor(Color.TRANSPARENT);
mCurrentInputType = INPUT_TYPE_NORMAL;
}
}
// Reset button views ana variable for next alphabet.
Button buttonOne = (Button) findViewById(R.id.block1);
Button buttonTwo = (Button) findViewById(R.id.block2);
Button buttonThree = (Button) findViewById(R.id.block3);
Button buttonFour = (Button) findViewById(R.id.block4);
Button buttonFive = (Button) findViewById(R.id.block5);
Button buttonSix = (Button) findViewById(R.id.block6);
buttonOne.setBackgroundColor(Color.WHITE);
buttonTwo.setBackgroundColor(Color.WHITE);
buttonThree.setBackgroundColor(Color.WHITE);
buttonFour.setBackgroundColor(Color.WHITE);
buttonFive.setBackgroundColor(Color.WHITE);
buttonSix.setBackgroundColor(Color.WHITE);
buttonOne.setTextColor(Color.BLACK);
buttonTwo.setTextColor(Color.BLACK);
buttonThree.setTextColor(Color.BLACK);
buttonFour.setTextColor(Color.BLACK);
buttonFive.setTextColor(Color.BLACK);
buttonSix.setTextColor(Color.BLACK);
mCurrentAlphabet = 0;
}}
activity_main.xml:
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical">
<ScrollView
android:layout_weight="4.0"
android:background="@color/lightgrey"
android:layout_width="match_parent"
android:layout_height="match_parent">
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="vertical" >
<TextView
android:id="@+id/txtMesssage"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_margin="10dp"
android:textColor="@color/darkbrown" >
</TextView>
</LinearLayout>
</ScrollView>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_weight="1.0"
android:orientation="horizontal"
android:baselineAligned="false"
android:layout_marginTop="15dp">
<LinearLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_weight="1.0"
android:background="#000000"
android:orientation="vertical" >
<TextView
android:text="CAP"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:id="@+id/cap"
android:layout_weight="1.3"
android:gravity="center"
android:textSize="20sp" />
<Button
android:id="@+id/block1"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_weight="1.0"
android:background="#ffffff"
android:text="Button one" />
<Button
android:id="@+id/block2"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_weight="1.0"
android:background="#ffffff"
android:text="Button two" />
<Button
android:id="@+id/block3"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_weight="1.0"
android:background="#ffffff"
android:text="Button three" />
</LinearLayout>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_weight="1.0"
android:orientation="vertical"
android:background="#000000">
<TextView
android:text="Num"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:id="@+id/num"
android:layout_weight="1.3"
android:gravity="center"
android:textSize="20sp" />
<Button
android:id="@+id/block4"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_weight="1.0"
android:background="#ffffff"
android:text="Button four" />
<Button
android:id="@+id/block5"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_weight="1.0"
android:background="#ffffff"
android:text="Button five" />
<Button
android:id="@+id/block6"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_weight="1.0"
android:background="#ffffff"
android:text="Button six" />
</LinearLayout>
</LinearLayout>
请注意,我使用的是处理程序而不是计时器。希望对您有所帮助!
关于java - Android:连续点击一到六个按钮 [一个接一个] 将不同的结果串在一起,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41514223/
我使用下拉菜单提供一些不同的链接,但我希望这些链接在同一选项卡中打开,而不是在新选项卡中打开。这是我找到的代码,但我对 Javascript 非常缺乏知识 var urlmenu = docume
我对 javascript 不太了解。但我需要一个垂直菜单上的下拉菜单,它是纯 JavaScript,所以我从 W3 复制/粘贴脚本:https://www.w3schools.com/howto/t
我已经坐了 4 个小时,试图让我的导航显示下 zipper 接垂直,但它继续水平显示它们。我无法弄清楚为什么会发生这种情况或如何解决它。 如果有人能告诉我我做错了什么,我将不胜感激。我有一个潜移默化的
我正在尝试创建选项卡式 Accordion 样式下拉菜单。我使用 jQuery 有一段时间了,但无法使事件状态达到 100%。 我很确定这是我搞砸的 JS。 $('.service-button').
对于那些从未访问过 Dropbox 的人,这里是链接 https://www.dropbox.com/ 查看“登录”的下拉菜单链接。我如何创建这样的下 zipper 接? 最佳答案 这是 fiddle
我正在制作一个 Liferay 主题,但我在尝试设计导航菜单的样式时遇到了很多麻烦。我已经为那些没有像这样下拉的人改变了导航链接上的经典主题悬停功能: .aui #navigation .nav li
如果您将鼠标悬停在 li 上,则会出现一个下拉菜单。如果您将指针向下移至悬停时出现的 ul,我希望链接仍然带有下划线,直到您将箭头从 ul 或链接移开。这样你就知道当菜单下拉时你悬停在哪个菜单上。 知
我有一个带有多个下拉菜单的导航栏。因此,当我单击第一个链接时,它会打开下拉菜单,但是当我单击第二个链接时,第一个下拉菜单不会关闭。 (所以如果用户点击第二个链接我想关闭下拉菜单) // main.js
我正在尝试制作一个导航下拉菜单(使用 Bootstrap 3),其中链接文本在同一行上有多个不同的对齐方式。 在下面的代码中,下拉列表 A 中的链接在 HTML 中有空格字符来对齐它们,但是空白被忽略
我希望有人能帮我解决这个 Bootstrap 问题,因为我很困惑。 有人要求我在底部垂直对齐图像和其中包含图像的链接。 我面临的问题是他们还希望链接在链接/图像组合上具有 pull-right,这会杀
我正在构建一个 Rails 应用程序,并希望指向我的类的每个实例的“显示”页面的链接显示在“索引”页面的下拉列表中。我目前正在使用带有 options_from_collection_for_sele
我有以下 Bootstrap3 导航菜单 ( fiddle here )。我想设置“突出显示”项及其子链接与下拉列表 1 和 2 链接不同的链接文本(和悬停)的样式。我还希望能够以不同于 Highli
我对导航栏中的下拉菜单有疑问。对于普通的导航链接(无下拉菜单),我将菜单文本放在 H3 中,但是当我尝试对下 zipper 接执行相同操作时,箭头不在标题旁边,而是在标题下方。我决定用 span 替换
我是一名优秀的程序员,十分优秀!