我正在制作一个具有以下布局的应用程序:Main App Layout在该应用程序中,我使用“拍照”按钮从手机中调用相机意图拍照。图片将显示在图像视图中(在布局中以红色概述)。
我还使用“保存”按钮通过意图将图片保存到图库。我还使用一个签名按钮来捕获用户的签名。签名具有自己的布局。布局包含以下内容:Signature Layout但是,可以说我打开了应用程序,并且在当前没有图像显示时单击“保存”按钮。尽管没有图片,“我的保存”按钮目前仍然可以正常使用并拉出图库。使用我的签名版式中的“保存”按钮会发生相同的情况。如果当前没有签名,则保存按钮仍会保存。
如何将其编码到可以检查当前是否已显示图片或签名的位置,如果没有,则禁用“签名”和“主应用布局”中的“保存”按钮。我知道要禁用按钮,语法为:myButton.setEnabled(false);
在主应用程序布局中,对于保存按钮,我具有以下代码:
//this save button is for the gallery app after you take a photo
saveButton.setOnClickListener(new View.OnClickListener()
{
@Override
public void onClick(View v)
{
//launch the gallery app intent
Intent intent = new Intent();
intent.setAction(android.content.Intent.ACTION_VIEW);
intent.setType("image/*");
intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
startActivity(intent);
Toast.makeText(DriverActivity.this, "Image Saved to Gallery", Toast.LENGTH_SHORT).show();
/*if there is currently no image, disable save button and display a toast message
Toast.makeText(DriverActivity.this, "There's no image currently shown.", Toast.LENGTH_SHORT).show();*/
}
});
// restoring storage image path from saved instance state
// otherwise the path will be null on device rotation
restoreFromBundle(savedInstanceState);
然后我将这段代码用于签名:
//this is for signature
signatureButton.setOnClickListener(new View.OnClickListener()
{
@Override
public void onClick(View v)
{
/*// Use an intent to launch an email app.
// Send the order summary in the email body.
Intent intent = new Intent(Intent.ACTION_SENDTO);
intent.setData(Uri.parse("mailto:")); // only email apps should handle this
intent.putExtra(Intent.EXTRA_SUBJECT,
getString(R.string.order_summary_email_subject));
if (intent.resolveActivity(getPackageManager()) != null) {
startActivity(intent);
}*/
Intent intent = new Intent(DriverActivity.this, SignatureActivity.class);
startActivity(intent);
Toast.makeText(DriverActivity.this, "Now Loading Signature Sign", Toast.LENGTH_LONG).show();
}
});
这段代码来自我的SignatureActivity.java文件(请注意,上面的两个代码示例来自另一个Activity.java文件(即:DriverActivity.java):
//capture signature
btnSave.setOnClickListener(new View.OnClickListener()
{
@Override
public void onClick(View v)
{
view.setDrawingCacheEnabled(true);
mSignature.save(view,StoredPath);
Intent intent2 = new Intent(getBaseContext(), DriverActivity.class);
startActivity(intent2);
finish();
Toast.makeText(getApplicationContext(), "Successfully Saved", Toast.LENGTH_SHORT).show();
}
});
答案 0 :(得分:0)
您可以按照下面的步骤进行操作
Boolean
变量并将其值初始化为false
Button
单击,好像值是false
,然后执行
不保存图片或数据,并且如果值为true
,则保存图像
或您的数据。对我有用。
答案 1 :(得分:0)
在保存ImageView的布局中,您可以将“ tag”属性用于照片的ImageView。如果标签为“ false”,则没有与ImageView关联的图像,然后可以禁用“保存”按钮;如果它是“ true”,那么就存在一个,您可以启用“保存”按钮。
<ImageView
android:id="@+id/image"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:tag="false" />
行为
ImageView image = findViewById(R.id.image);
if ((Boolean) image.getTag()) { // No image
// Disable save button
mBtnSave.setEnabled(false);
} else {
mBtnSave.setEnabled(true);
}
每次拍照时,都应将ImageView的标签更改为“ true”
image.setTag("true");
编辑:
当您使用其他活动进行签名时,还必须使用startActivityForResult()
,它将启动SignatureActivity并等待结果完成;您可以按照上述过程将签名图像标签设置为“ true”(如果收到成功的签名)或“ false”(如果没有)。
Here您可以找到如何使用startActivityForResult()