我有一个绘图应用程序,并且有一些保存绘制图片的方法。但是我只用保存按钮得到了一张黑色的位图图片。问题出在哪里 ?
有我的XML
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:id="@+id/all"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="@color/black"
tools:context=".Circle"
>
<org.vkedco.mobappdev.draw_touch_drive_00001.krouzky
android:id="@+id/pntr"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentLeft="true"
android:layout_alignParentTop="true"
android:tag="Painter" />
<TextView
android:id="@+id/textView3"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignLeft="@+id/textView3"
android:layout_below="@+id/button4"
android:layout_marginTop="50dp"
android:text="value"
android:textColor="@color/white" />
<Button
android:id="@+id/button3"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentTop="true"
android:layout_toRightOf="@+id/button2"
android:text="Add" />
<Button
android:id="@+id/button4"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentRight="true"
android:layout_alignParentTop="true"
android:text="Delete" />
<Button
android:id="@+id/button6"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentLeft="true"
android:layout_alignParentTop="true"
android:text="Save"
android:layout_marginTop="45dp"
android:layout_alignLeft="@+id/button3" />
<Button
android:id="@+id/button5"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentRight="true"
android:layout_alignParentTop="true"
android:text="Clear"
android:layout_marginTop="45dp"
android:layout_alignRight="@+id/button3" />
<LinearLayout
android:orientation="vertical"
android:layout_height="match_parent"
android:id="@+id/linearLayout"
android:layout_width="match_parent" />
而我的主要活动:
public class aktivita extends Activity{
Button btn;
public LinearLayout mContent;
krouzky mTicTacToeView = null;
public static String tempDir;
public File mypath;
public static Bitmap mBitmap;
public static int width;
public static int height;
public static float x;
public static float y;
public static float X;
public static float Y;
public static double vzdalenost;
public String current = null;
private String uniqueId;
public krouzky mSignature;
public View mView;
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.zaznam_ran);
krouzky.t = 0;
File directory = new File(Environment.getExternalStorageDirectory() + "/Images");
if(!directory.exists())
directory.mkdir();
uniqueId = getTodaysDate() + "_" + getCurrentTime();
current = uniqueId + ".png";
mypath= new File(directory,current);
mContent = (LinearLayout) findViewById(R.id.linearLayout);
mSignature = new krouzky(this, null);
mSignature.setBackgroundColor(Color.TRANSPARENT);
mContent.addView(mSignature, LayoutParams.FILL_PARENT, LayoutParams.FILL_PARENT);
mView = mContent;
Display display = getWindowManager().getDefaultDisplay();
width = (display.getWidth());
height = (display.getHeight());
mTicTacToeView = (krouzky) this.findViewById(R.id.pntr);
Button btn6 = (Button) findViewById(R.id.button6);
btn6.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Log.v("log_tag", "Panel Saved");
mView.setDrawingCacheEnabled(true);
save(v);
}
});
}
private boolean prepareDirectory()
{
try
{
if (makedirs())
{
return true;
}
else
{
return false;
}
}
catch (Exception e)
{
e.printStackTrace();
Toast.makeText(this, "Could not initiate File System.. Is Sdcard mounted properly?", 1000).show();
return false;
}
}
private boolean makedirs()
{
File tempdir = new File(tempDir);
if (!tempdir.exists())
tempdir.mkdirs();
if (tempdir.isDirectory())
{
File[] files = tempdir.listFiles();
for (File file : files)
{
if (!file.delete())
{
System.out.println("Failed to delete " + file);
}
}
}
return (tempdir.isDirectory());
}
保存方法
public void save(View v)
{
Log.v("log_tag", "Width: " + v.getWidth());
Log.v("log_tag", "Height: " + v.getHeight());
if(mBitmap == null)
{
mBitmap = Bitmap.createBitmap (width, height, Bitmap.Config.RGB_565);
}
Canvas canvas = new Canvas(mBitmap);
try
{
FileOutputStream mFileOutStream = new FileOutputStream(mypath);
v.draw(canvas);
mBitmap.compress(Bitmap.CompressFormat.PNG, 90, mFileOutStream);
mFileOutStream.flush();
mFileOutStream.close();
}
catch(Exception e)
{
Log.v("log_tag", e.toString());
}
}
我的问题已解决,但是我有一个小细节。当我更改xml时,我的应用程序崩溃了。为此。
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:id="@+id/rl"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="@color/black"
tools:context=".Circle" >
<org.vkedco.mobappdev.draw_touch_drive_00001.krouzky
android:id="@+id/pntr"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentLeft="true"
android:layout_alignParentTop="true"
android:tag="Painter" />
<Button
android:id="@+id/button3"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentTop="true"
android:layout_toRightOf="@+id/button2"
android:text="Add" />
<Button
android:id="@+id/button4"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentRight="true"
android:layout_alignParentTop="true"
android:text="Delete" />
<Button
android:id="@+id/button6"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentLeft="true"
android:layout_alignParentTop="true"
android:text="Save"
android:layout_marginTop="45dp"
android:layout_alignLeft="@+id/button3" />
<Button
android:id="@+id/button5"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentRight="true"
android:layout_alignParentTop="true"
android:text="Clear"
android:layout_marginTop="45dp"
android:layout_alignRight="@+id/button3" />
<LinearLayout
android:orientation="vertical"
android:layout_height="match_parent"
android:id="@+id/linearLayout"
android:layout_width="match_parent" >
</LinearLayout>
<TextView
android:id="@+id/textView3"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentLeft="true"
android:layout_below="@+id/button6"
android:layout_marginTop="21dp"
android:text="value"
android:textColor="@color/blue" />
实际上,您正在通过方法传递 Button btn6 的视图(v)
save(v)
-通过是mcontent
或的线性布局对象mView
,那么它将是save(mContent)
,这将解决您的问题
您也可以尝试此方法-
在方法中传递您的父级布局或视图
Bitmap file = save(mcontent);
Bitmap save(View v)
{
Bitmap b = Bitmap.createBitmap(v.getWidth(), v.getHeight(), Bitmap.Config.ARGB_8888);
Canvas c = new Canvas(b);
v.draw(c);
return b;
}
嗨,我想实现,就像,我想把它放在列表中,这样每个元素都可以被刷, 在这里,和在向右滑动时将不可见,view1将像视图分页一样可见。 我尝试使用,但它在滑动时不显示隐藏视图。 为了实现这一点,我想使用源代码,viewpager.java基本上是,但是我不能将view Group添加到listview中。我尝试了swipeListView,但也没有帮助。 谁能帮助我如何实现它呢
问题内容: 我正在显示一组图像,然后,如果用户希望,可以将图像保存到SD卡。我需要将其保存到外部存储的帮助。有人可以帮我这个忙吗? 网格视图: ImageAdapter: 问题答案: 嗨,我还没有使用过作为应用程序一部分提供的代码,但是我确实使用它来调试了其中一个应用程序在运行时生成的位图。 使用此代码,只要您有位图,就只需要此+清单权限 希望能帮到您 杰森
保存图像 能将图像保存至Memory Stick™或主机内存。 1. 让指针对准想要保存的图像,从选单列中选择[档案] > [保存图像]。 2. 选择[保存]。 提示 若想变更文件名或保存位置,请选择各项输入栏,并执行决定。
我对JavaCV FFMPEGFrameRecOrder的使用有点困惑。我有几个字节[]或短[]数组(取决于我的图像是8位还是16位),如果我有几个图像的相关数据。现在,我的想法是使用JavaCPP将每个图像发送到ffmpeg,这样它就可以在我希望的framerate上从这个集合中创建一个静音视频。到目前为止,我有: 但我经常犯这样的错误 谢了!
谁能指导我怎么做这件事吗? 我是一个新的android所以请,如果我能有一个详细的程序,我会很感激。