我正在使用类似于Android SDK的Finger Paint演示的Canvas应用程序.我的问题是我正在使用的时候PorterDuff.Mode.CLEAR.当绘制和画布时,如果我试图擦除某些东西,它工作正常.但是如果我试图将我的图像保存为PNG文件,则橡皮擦的笔划会变成黑色,我不确定为什么会发生这种情况.这是我正在做的一个例子:
@Override
protected void onDraw(Canvas canvas) {
canvas.drawColor(Color.WHITE);
canvas.drawBitmap(mBitmap, 0, 0, mBitmapPaint);
canvas.drawPath(mPath, mPaint);
}
Run Code Online (Sandbox Code Playgroud)
橡皮擦:
case ERASE_MENU_ID:
mPaint.setXfermode(new PorterDuffXfermode(
PorterDuff.Mode.CLEAR));
return true;
Run Code Online (Sandbox Code Playgroud)
以及我如何保存图像:
Calendar currentDate = Calendar.getInstance();
SimpleDateFormat formatter= new SimpleDateFormat("yyyyMMMddHmmss");
String dateNow = formatter.format(currentDate.getTime());
File dir = new File(mImagePath);
if(!dir.exists())
dir.mkdirs();
File file = new File(mImagePath + "/" + dateNow +".png");
FileOutputStream fos;
try {
fos = new FileOutputStream(file);
mBitmap.compress(Bitmap.CompressFormat.PNG, 100, fos);
fos.close();
Toast.makeText(getApplicationContext(), "File saved at \n"+mImagePath + "/" + dateNow …Run Code Online (Sandbox Code Playgroud) 我正在我的应用程序开头创建一个警报对话框,让用户选择存储我的应用程序从Web下载的数据的位置.我现在想要实现的是取决于我想要设置所选项之一的内部/外部存储的大小.这是我用来创建对话框的代码:
@SuppressWarnings("static-access")
public void createDialog(){
final CharSequence[] items = {"Phone Memory - "+memorysize+" free space", "SD Card - "+megAvailable+" MB free space"};
final int userId = rpc.getUserId(this);
final String servername = rpc.getCurrentServerName(this);
SharedPreferences stampiiSettings = PreferenceManager.getDefaultSharedPreferences(MyCollectionList.this);
final SharedPreferences.Editor editor = stampiiSettings.edit();
AlertDialog.Builder builder = new AlertDialog.Builder(this.getParent());
builder.setTitle("Select Storage Path");
builder.setSingleChoiceItems(items, -1, new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int item) {
if(item == 0){
rpc.createFoldersInInternalStorage(servername, userId, MyCollectionList.this);
Toast.makeText(getApplicationContext(), "Selected Storage Path : Phone Memory", Toast.LENGTH_SHORT).show();
editor.putInt("storagePath", 1);
editor.commit();
} else …Run Code Online (Sandbox Code Playgroud) 我在应用程序中打开键盘时遇到了一些问题.我这是在页面的底部,并在某些情况下,标签栏,并不总是当我在编辑文本并单击键盘的显示出来,它的移动我的标签栏在它的上面.这是一个例子:

所以我的问题是:有没有办法禁用它.我希望我的标签栏在显示时保持隐藏在键盘下方.
提前致谢!
我将创建一个旨在使用的应用程序Tabhost,但据我所知,它已被弃用.所以我的问题是我应该使用Tabhost或者如何替换它...使用按钮而不是在每个xml或任何其他建议中声明它们?
我正在尝试使用NDK为我的Android应用程序构建FFMPEG库.我已经从它的网站上下载了源代码,我想我是在构建它(这是我第一次尝试使用NDK和ffmpeg).我已经创建了一个build.sh文件,我用它来从Mac OS X上的命令行执行它.但是我有几个问题......
首先,我知道我需要Android.mk文件,所以我可以在我的应用程序中使用构建库,但我不知道如何做到这一点,原因我上面告诉你.在我运行带有几个文件夹和一些库的build.shI get android文件夹之后.所以我的第一个问题是,我如何构建我需要的Android.mk文件......也许如果有人能解释我为什么需要它.

我的第二个问题是我需要一些来自ffmpeg的库才能在我的应用程序中使用它们,但是在构建之后我无法在源代码树中看到它们.我知道我必须在我身上启用它们,我build.sh想我做到了,但我看不到它们.因此,有关我的构建文件的任何类型的信息将有助于我了解如何配置它.这是它的样子:
#!/bin/bash
######################################################
# Usage:
# put this script in top of FFmpeg source tree
# ./build_android
# It generates binary for following architectures:
# ARMv6
# ARMv6+VFP
# ARMv7+VFPv3-d16 (Tegra2)
# ARMv7+Neon (Cortex-A8)
# Customizing:
# 1. Feel free to change ./configure parameters for more features
# 2. To adapt other ARM variants
# set $CPU and $OPTIMIZE_CFLAGS
# call build_one
######################################################
NDK=~/Desktop/android-ndk-r5b
PLATFORM=$NDK/platforms/android-8/arch-arm/
PREBUILT=$NDK/toolchains/arm-linux-androideabi-4.4.3/prebuilt/darwin-x86
function …Run Code Online (Sandbox Code Playgroud) 当用户停止在特定视图中移动时,我需要在我的应用程序中进行检测.我在我的应用程序中创建类似于marque文本的东西,当用户触摸视图并在其上移动时,它可以进行交互.我需要在用户抬起手指后开始滚动视图.正如我注意到,如果我将手指移过视图几秒钟,当我抬起手指时,我的手指MotionEvent.ACTION_UP没有被调用.我捕获的最后一个事件是ACTION_MOVE.那么我怎样才能检测用户在几秒钟内移动视线后何时抬起手指?有某种功能可以检测出来吗?
这是我正在使用的代码:
txt.setOnTouchListener(new View.OnTouchListener() {
@Override
public boolean onTouch(View v, final MotionEvent event) {
switch (event.getAction()) {
case MotionEvent.ACTION_DOWN:
Log.e("","event down : "+event.getAction());
handler.removeCallbacks(runnable);
break;
case MotionEvent.ACTION_UP:
Log.e("","event up : "+event.getAction());
if(myTimer!=null){
myTimer.cancel();
}
break;
case MotionEvent.ACTION_MOVE:
Log.d("","move");
// handler.removeCallbacks(runnable);
checkX();
break;
}
return true;
}
});
Run Code Online (Sandbox Code Playgroud)
提前致谢!
我不是PHP编码器所以我需要一点PHP AES加密帮助.
我正在编写代码,我在PHP中加密图像文件,然后在Java(Android)中解密它们.当我加密/解密PNG文件时,一切正常,但当我尝试对JPG执行相同操作时,Java解密会引发异常:
WARN/System.err(345): java.io.IOException: data not block size aligned
Run Code Online (Sandbox Code Playgroud)
基于在线搜索,似乎这是因为我没有正确填充.
我该怎么做呢?
这是加密的PHP代码:
<?php
$secret_key = "01234567890abcde";
$iv = "fedcba9876543210";
$infile = "5.png";
$outfile = "5_encrypted.png";
$crypttext = file_get_contents($infile);
$plaintext = mcrypt_encrypt(MCRYPT_RIJNDAEL_128, $secret_key, $crypttext, MCRYPT_MODE_CBC, $iv);
header('Content-Type: application/octet-stream');
header('Content-Length: ' . strlen($plaintext));
header('Content-Disposition: attachment; filename=' . ($outfile));
echo $plaintext;
//file_put_contents($outfile,$plaintext);
//save the file in the folder of server
Run Code Online (Sandbox Code Playgroud) 我现在在两三天内尝试在发布模式下签署我的应用程序时遇到问题.我已经尝试了所有我在互联网/ stackoverflow中找到的信息,但对我来说没有任何效果.我更新了我的全部SDK,更新proguard到4.7版本,检查了jar文件和冲突包,但找不到任何解决方案.我已经将库包含在我的主项目中,但是到目前为止我在签署我的应用程序时没有任何问题.
任何想法我还可以尝试,所以我可以解决这个问题,因为我仍在通过互联网阅读一些信息,但仍无法找到任何解决方案.
PS我没有建立调试版本和在设备上运行的问题.我得到的唯一问题是,当我尝试在发布模式下签署我的应用程序时,我得到Failed to export application错误.
我试图在我的Android应用程序上以编程方式创建按钮,具体取决于我在sqlite数据库上有多少项目.按钮在那里,但我的问题是设置onClick每个按钮,因为我想在用户点击按钮时显示不同的内容.我现在正在使用此代码:
for(cursorCol.move(0); cursorCol.moveToNext(); cursorCol.isAfterLast()){
Id = Integer.parseInt(cursorCol.getString(cursorCol.getColumnIndex("id")));
Log.i("Id","Id : "+Id);
titleButton = cursorCol.getString(cursorCol.getColumnIndex("title"));
Log.i("titleButton","titleButton : " + titleButton);
elemOrder1 = Integer.parseInt(cursorCol.getString(cursorCol.getColumnIndex("elemOrder")));
Log.i("elemOrder1 ","elemOrder1 : " + elemOrder1 );
btn = new Button(this);
btn.setText(" " + titleButton + " ");
btn.setId(Id);
btn.setTextColor(Color.parseColor("#000000"));
btn.setTextSize(12);
btn.setPadding(10, 10, 10, 10);
btn.setBackgroundResource(R.drawable.gray_button);
btnlayout.addView(btn,params);
btn.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
infoCard.removeAllViews();
for(int i=0;i<=cursorCol.getCount();i++){
Log.i("","titleButton : "+titleButton);
}
}
}
Run Code Online (Sandbox Code Playgroud)
但问题是当我点击按钮时它只显示最后一个titleButton.实际上我不需要展示titleButton,我只是为测试目的而做.任何想法如何onClick为每个按钮创建不同的方法?
我正在尝试找到一种方法来实现拖放功能并在我的 Android 应用程序中旋转位图。我希望能够在画布上拖动图像并旋转它。这是我将位图添加到画布的方法:
Bitmap bm = BitmapFactory.decodeResource(getResources(), R.drawable.dog);
mCanvas.drawBitmap(bm,x-100,y-100 , mPaint);
Run Code Online (Sandbox Code Playgroud)
其中x & y等于event.getX(); / event.getY();。
任何想法我怎么能做到这一点?
提前致谢!:)