- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
此应用程序将特定涂鸦形状转换为文本。
我有 3 个类别,字母、数字和其他字符。
起点定义要从中选择输出的类别。它可以在模拟器上运行,但随着手机(分辨率)的变化,它开始出错。
这是我绘制涂鸦和显示结果的 TextView 的 Activity 。
这是 Activity XML:
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:paddingBottom="@dimen/activity_vertical_margin"
android:paddingLeft="@dimen/activity_horizontal_margin"
android:paddingRight="@dimen/activity_horizontal_margin"
android:paddingTop="@dimen/activity_vertical_margin"
tools:context="com.example.soltan.app1.MainActivity"
android:background="#0e004e"
android:animateLayoutChanges="false"
>
<TextView
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:id="@+id/res"
android:layout_alignParentTop="true"
android:layout_alignParentRight="true"
android:layout_alignParentEnd="true"
android:background="#ffffff"
android:textDirection="anyRtl"
android:hint="@string/mess"
android:layout_above="@+id/chars" />
<RelativeLayout
android:layout_width="fill_parent"
android:layout_height="105dp"
android:layout_alignParentBottom="true"
android:layout_alignParentLeft="true"
android:layout_alignParentStart="true"
android:background="#ffffff"
android:layout_marginTop="5dp"
android:id="@+id/letters"
android
>
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textAppearance="?android:attr/textAppearanceSmall"
android:id="@+id/txt3"
android:layout_alignParentTop="true"
android:layout_alignParentRight="true"
android:layout_alignParentEnd="true"
android:textDirection="anyRtl"
android:hint="@string/txt3" />
</RelativeLayout>
<RelativeLayout
android:layout_width="175dp"
android:layout_height="90dp"
android:layout_above="@+id/letters"
android:layout_alignParentLeft="true"
android:layout_alignParentStart="true"
android:background="#ffffff"
android:layout_marginTop="5dp"
android:id="@+id/chars"
android:layout_alignParentRight="false"
android:layout_marginRight="5dp"
android:layout_alignParentEnd="false"
android:focusable="false">
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textAppearance="?android:attr/textAppearanceSmall"
android:id="@+id/txt1"
android:layout_alignParentTop="true"
android:layout_alignParentRight="true"
android:layout_alignParentEnd="true"
android:textDirection="anyRtl"
android:hint="@string/txt1" />
</RelativeLayout>
<RelativeLayout
android:layout_width="175dp"
android:layout_height="90dp"
android:layout_above="@+id/letters"
android:layout_alignParentRight="true"
android:layout_alignParentEnd="true"
android:background="#fff"
android:layout_toRightOf="@+id/chars"
android:id="@+id/numbers">
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textAppearance="?android:attr/textAppearanceSmall"
android:id="@+id/txt2"
android:layout_alignParentTop="true"
android:layout_alignParentRight="true"
android:layout_alignParentEnd="true"
android:textDirection="anyRtl"
android:hint="@string/txt2" />
</RelativeLayout>
</RelativeLayout>
这就是我现在在 java 文件中选择类别的方式:
private List<Point> input; // a list contains the drawn graffiti shape coordinates
private Input inserted; // instance of a class
String section; // the category from which we receive the output
boolean proceed ; // if the starting point in the allowed range
@Override
protected void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
}
public boolean onTouchEvent(MotionEvent touchEvent)
{
super.onTouchEvent(touchEvent);
switch(touchEvent.getAction())
{
case MotionEvent.ACTION_DOWN:
{
input = new ArrayList<>();
if(touchEvent.getY() < 1216)
{
proceed = false;
}
else if(touchEvent.getY() > 1465)
{
proceed = true;
section = "letter";
}
else if(touchEvent.getX() < 506)
{
proceed = true;
section = "char";
}
else
{
proceed = true;
section = "number";
}
//Inserting the touch event points into the array list of points
for (int h = 0; h < touchEvent.getHistorySize(); h++)
{
for (int p = 0; p < touchEvent.getPointerCount(); p++)
{
float x = touchEvent.getHistoricalX(p,h);
float y = touchEvent.getHistoricalY(p,h);
input.add(new Point(x,y));
}
}
break;
}
case MotionEvent.ACTION_MOVE:
{
//Inserting the touch event points into the array list of points
for (int h = 0; h < touchEvent.getHistorySize(); h++)
{
for (int p = 0; p < touchEvent.getPointerCount(); p++)
{
float x = touchEvent.getHistoricalX(p,h);
float y = touchEvent.getHistoricalY(p,h);
input.add(new Point(x,y));
}
}
break;
}
case MotionEvent.ACTION_UP:
{
//Inserting the touch event points into the array list of points
for (int h = 0; h < touchEvent.getHistorySize(); h++)
{
for (int p = 0; p < touchEvent.getPointerCount(); p++)
{
float x = touchEvent.getHistoricalX(p,h);
float y = touchEvent.getHistoricalY(p,h);
input.add(new Point(x,y));
}
}
if(proceed)
{
inserted = new Input();
String letter =inserted.checkPoint(input,section);
if(letter.equals(""))
{
Toast.makeText(this,"No Such Graffiti, check the our dictionary!",Toast.LENGTH_SHORT).show();
}
TextView myText =(TextView) findViewById(R.id.res);
String text = myText.getText().toString();
myText.setText(text+letter);
}
break;
}
}
return true;
}
最佳答案
在我看来,您正在尝试从最顶层 View 获取 touchEvents 并根据坐标确定哪个 child 被触摸?如果是这样,那就大错特错了。解决方法是为子级本身注册 onClick 或 onTouch 监听器,然后检查其中的 View id 以确定哪个 View 被触摸。
编辑:
最简单的方法是将其添加到您提供 id 的所有三个relativelayout中:android:onClick="myMethod"
然后将其添加到您的 Activity 中
public void myMethod(View view) {
switch(view.getId()) {
case R.id.letters:
//do here what you wanna do with letters
break;
case R.id.chars:
//do here what you wanna do with chars
break;
case R.id.numbers:
//do here what you wanna do with numbers
break;
}
}
您当然可以根据需要重命名该方法,只要它与您在 xml 中指定的相同即可
关于java - 在android中定义起点?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37814542/
有没有办法让我的浏览器告诉我当我点击一个 div 时执行的第一个 JavaScript 是什么。 让我分解一下: 代码示例: Hi There jQuery('hello').bind('clic
我在一个二维网格迷宫中,你只能水平和垂直移动。边成本为 1,我使用曼哈顿距离来估计从节点到目标的距离。 我的问题是,如果您从当前节点开始寻找到达目标的路径,或者从目标节点开始并找到返回当前节点的路径,
我的 View 中有两个 SeekBar,我在布局中类似地声明了它们: 这是我使用它们的代码: SeekBar sb = (SeekBar) v.findViewByI
我想将 TDD 应用于我的 Java EE 应用程序。 要求是创建一家具有名称和联系方式的公司。系统的入口点是Rest和Web服务,取决于客户端。 我正在努力寻找编写单元测试的起点。 我应该从无状态的
我想知道如何改变popUpMenu的原点,在底部应用栏正上方启动弹出窗口,无论项目数如何。与屏幕右端对齐。类似的东西(例如) Positioned(right: 0, bottom: bottomAp
我已经阅读了大量文章,看过大量关于 TDD 的截屏视频,但我仍在努力在实际项目中使用它。我的主要问题是我不知道从哪里开始,第一个应该是什么测试。 假设我必须编写调用外部系统方法(例如通知)的客户端库。
我确实在这个网站上进行了一些谷歌搜索,但没有找到我想要的东西。 我希望有人能在这里为我指出正确的方向。我是一名 ASP.NET/SQL Server 开发人员,希望开发一个(最初)基本社交网站 (ga
关闭。这个问题不符合Stack Overflow guidelines .它目前不接受答案。 我们不允许提问寻求书籍、工具、软件库等的推荐。您可以编辑问题,以便用事实和引用来回答。 关闭 5 年前。
google了一下,没有找到任何东西。 有什么好的资源可以帮助我开始为严重依赖 API key 的 RESTless Web 应用程序设计后端。 我知道如何编写不稳定的网络服务等,只是从未使用过 AP
这是我的代码的一部分 string line; ifstream file ("Names.txt"); int i; for (i = 0; i < line.length(); ++i) {
我已经尝试创建路线,但我不确定如何事先获取从起点到目的地的所有纬度和经度。在这里,当我在 map 中搜索从起点到终点的路线时,我选择了一条我选择的路线,我想获得从起点到终点的所有经纬度。我必须将这些数
我正在尝试让宇宙飞船绕行星运行。我目前正在做 let playerPos = player.position let planetPos = planet.position let radius =
Java 中有一个 forloop,我可以在其中判断从哪里开始和从哪里结束: for(int i=10;i{{ athlete.name }} {% endfor %} {{forloop.last=
我正在尝试探索 dot net 核心功能以更好地理解它,因为我执行了同样的操作 dotnet new dotnet build dotnet run 命令提示符窗口中的命令,它为我创建了一个项目并创建
我正在使用 HTML5 Canvas 和 JavaScript 开发一款游戏。这是一款简单的太空射击游戏,屏幕中央有一门大炮。我可以旋转大炮并以与大炮方向相同的 Angular 发射导弹。 但我有一个
我正在尝试通过在 JavaFX 应用程序中使用凹槽、脊线边框样式来获得 3d 外观。但它正在向我展示 Unsupported 'groove' while parsing '-fx-border-s
我正在尝试从 mapr fs origin 进行简单的数据移动到 mapr fs destination (这不是我的用例,只是为了测试目的做这个简单的 Action )。尝试 validate 时这
我是一名优秀的程序员,十分优秀!