我有6个图像按钮与绘图,我试图使用getDrawable()比较它们。这是我的xml代码
"'
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context=".TicTacToe">
<ImageButton
android:id="@+id/imageButton1"
android:layout_width="0dp"
android:layout_height="0dp"
android:layout_marginStart="25dp"
android:layout_marginTop="147dp"
android:layout_marginEnd="5dp"
android:layout_marginBottom="14dp"
android:onClick="change"
app:layout_constraintBottom_toTopOf="@+id/imageButton2"
app:layout_constraintEnd_toStartOf="@+id/imageButton01"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent"
app:srcCompat="@drawable/blank" />
<ImageButton
android:id="@+id/imageButton01"
android:layout_width="0dp"
android:layout_height="0dp"
android:layout_marginTop="147dp"
android:layout_marginEnd="5dp"
android:layout_marginBottom="14dp"
android:onClick="change"
app:layout_constraintBottom_toTopOf="@+id/imageButton02"
app:layout_constraintEnd_toStartOf="@+id/imageButton001"
app:layout_constraintStart_toEndOf="@+id/imageButton1"
app:layout_constraintTop_toTopOf="parent"
app:srcCompat="@drawable/blank" />
<ImageButton
android:id="@+id/imageButton2"
android:layout_width="0dp"
android:layout_height="0dp"
android:layout_marginStart="24dp"
android:layout_marginEnd="6dp"
android:layout_marginBottom="10dp"
android:onClick="change"
app:layout_constraintBottom_toTopOf="@+id/imageButton3"
app:layout_constraintEnd_toStartOf="@+id/imageButton02"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@+id/imageButton1"
app:srcCompat="@drawable/blank" />
<ImageButton
android:id="@+id/imageButton001"
android:layout_width="0dp"
android:layout_height="0dp"
android:layout_marginTop="148dp"
android:layout_marginEnd="16dp"
android:layout_marginBottom="13dp"
android:onClick="change"
app:layout_constraintBottom_toTopOf="@+id/imageButton002"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toEndOf="@+id/imageButton01"
app:layout_constraintTop_toTopOf="parent"
app:srcCompat="@drawable/blank" />
<ImageButton
android:id="@+id/imageButton02"
android:layout_width="0dp"
android:layout_height="0dp"
android:layout_marginEnd="7dp"
android:layout_marginBottom="10dp"
android:onClick="change"
app:layout_constraintBottom_toTopOf="@+id/imageButton03"
app:layout_constraintEnd_toStartOf="@+id/imageButton002"
app:layout_constraintStart_toEndOf="@+id/imageButton2"
app:layout_constraintTop_toBottomOf="@+id/imageButton01"
app:srcCompat="@drawable/blank" />
<ImageButton
android:id="@+id/imageButton002"
android:layout_width="0dp"
android:layout_height="0dp"
android:layout_marginEnd="14dp"
android:layout_marginBottom="10dp"
android:onClick="change"
app:layout_constraintBottom_toTopOf="@+id/imageButton003"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toEndOf="@+id/imageButton02"
app:layout_constraintTop_toBottomOf="@+id/imageButton001"
app:srcCompat="@drawable/blank" />
<ImageButton
android:id="@+id/imageButton3"
android:layout_width="0dp"
android:layout_height="0dp"
android:layout_marginStart="24dp"
android:layout_marginEnd="6dp"
android:layout_marginBottom="200dp"
android:onClick="change"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toStartOf="@+id/imageButton03"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@+id/imageButton2"
app:srcCompat="@drawable/blank" />
<ImageButton
android:id="@+id/imageButton03"
android:layout_width="0dp"
android:layout_height="0dp"
android:layout_marginEnd="7dp"
android:layout_marginBottom="200dp"
android:onClick="change"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toStartOf="@+id/imageButton003"
app:layout_constraintStart_toEndOf="@+id/imageButton3"
app:layout_constraintTop_toBottomOf="@+id/imageButton02"
app:srcCompat="@drawable/blank" />
<ImageButton
android:id="@+id/imageButton003"
android:layout_width="0dp"
android:layout_height="0dp"
android:layout_marginEnd="14dp"
android:layout_marginBottom="200dp"
android:onClick="change"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toEndOf="@+id/imageButton03"
app:layout_constraintTop_toBottomOf="@+id/imageButton002"
app:srcCompat="@drawable/blank" />
"'
科特林代码
"'
类TicTacToe: AppCompat活动(){
var spot1: ImageButton? =null
var spot01: ImageButton? =null
var spot001: ImageButton? =null
var spot2: ImageButton? =null
var spot02: ImageButton? =null
var spot002: ImageButton? =null
var spot3: ImageButton? =null
var spot03: ImageButton? =null
var spot003: ImageButton? =null
override fun onCreate(savedInstanceState: Bundle?)
{
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_tic_tac_toe)
spot1 = findViewById<ImageButton>(R.id.imageButton1)
spot01 = findViewById<ImageButton>(R.id.imageButton01)
spot001 = findViewById<ImageButton>(R.id.imageButton001)
spot2 = findViewById<ImageButton>(R.id.imageButton2)
spot02 = findViewById<ImageButton>(R.id.imageButton02)
spot002 = findViewById<ImageButton>(R.id.imageButton002)
spot3 = findViewById<ImageButton>(R.id.imageButton3)
spot03 = findViewById<ImageButton>(R.id.imageButton03)
spot003 = findViewById<ImageButton>(R.id.imageButton003)
}
val photos: IntArray= intArrayOf(R.drawable.x, R.drawable.o, R.drawable.blank)
var turn = 1
var winState = false
fun change(view: View){
var spot = findViewById<ImageButton>(view.getId()) //as Button
if(turn == 1) {
spot.setImageResource(photos[0])
turn = turn * -1
}
else{
spot.setImageResource(photos[1])
turn = turn * -1
}
if(spot1?.getDrawable() == spot01?.getDrawable() &&
spot1?.getDrawable() == spot001?.getDrawable() &&
spot1?.getDrawable() != photos[2].toDrawable())
{
winState = true;
Toast.makeText(getApplicationContext(),"Winner",Toast.LENGTH_SHORT).show();
}
}
}
"'
Drawable是一个对象,因此需要使用equals()方法进行比较。无论如何,我也不确定它是否会起作用,因为我不确定可绘制方法是如何实现该方法的,所以它可能不适合您的情况。
此外,您正在使用视图检查业务逻辑的状态,这一点都不理想。最好的解决方案是使用一张地图或一个矩阵(比方说,一个维数为[3][3]的数组),在这里存储单个点的实际值,然后将可绘制内容与矩阵中的值进行协调。
我知道这会影响代码中的所有内容,您必须对其进行重大更改,因此更快速的解决方案可能是在图像按钮上使用android:tag。可以在其上指定任何对象,因此也可以使用and Integer并对其进行比较,始终使用equals()方法。这意味着您可以依赖标记来实现逻辑。
自定义Drawables > 原文链接 : Custom Drawables 原文作者 : Ryan Harter 译文出自 : 开发技术前线 www.devtf.cn 译者 : SwinZh 校对者: Mr.Simple 状态 : 完成 我们都看过关于为什么你应该适当的使自定义Views和如何能帮助你正确的封装你的应用程序代码的帖子。但非视图相关的部分如何转化为我们apps的其他部分的这种思考方
我使用矢量绘图在Android之前Lollipop和这些是我的一些库和工具版本: Android Studio: 2.0 AndroidGradle插件 构建工具:23.0.2 Android支持库:23.3.0 我在我的应用级别 还值得一提的是,我使用一个额外的绘图,如LayerDrawable(layer_list),如Android官方博客中所述(链接此处),用于为 你会发现直接引用应用程序
本文向大家介绍Android Bitmap和Drawable的对比,包括了Android Bitmap和Drawable的对比的使用技巧和注意事项,需要的朋友参考一下 Android Bitmap和Drawable的对比 Bitmap - 称作位图,一般位图的文件格式后缀为bmp,当然编码器也有很多如RGB565、RGB888。作为一种逐像素的显示对象执行效率高,但是缺点也很明显存储效率低。我们理
我知道这些接口用于对集合中的对象进行排序。但我怀疑这两者的真正区别。我读到的一个事实是,如果要比较两个对象而不使用当前对象,请使用Compariable(此)。 但我的问题是即使使用比较器,我们也会比较相同的对象类型。 这里真正的区别是什么。我很困惑。假设下面的例子, 如果我使用比较器,我会让一个类实现比较器,而不是这个。年龄,它有人。年龄那么这里有什么不同呢? 我不知道Collections.s
我正在开发一个语音信息应用程序,我需要比较两个声音, 通过录制语音向应用程序注册 通过录制语音向另一用户发送语音信息,但首先需要将此语音与配置文件中录制的语音进行比较 出于安全目的,需要知道记录的消息是否来自特定用户。 我试过了: 比较Android中的两种声音 http://www . dream incode . net/forums/topic/274280-using-FFT-to-com
问题内容: 什么是在Android上解析JSON的最佳库。我知道Android框架内置了JSON库,而且我听说过GSON。但是我想知道是否有人比较了android上的各种JSON选项,并提出了一个选择另一个的理由。我认为性能和可用性是主要标准。 问题答案: 尽管有少数Java-to / from-JSONAPI提供了JSON与任意Java数据结构之间的轻松(基本)绑定,但Jackson和Gson到