嗨,谢谢你提前。
我正在尝试为imageView中的图像创建一个onclick缩放动画。
我正在使用Android Developer中的此示例Here。
效果很好..而且正是我想要的。但是,它扩展的图像似乎来自drawable文件夹。
我希望它展开的图片是由用户通过相机创建的,并存储在应用程序文件夹中。
这是我调用图片并将其设置为我想使用的imageView的方式:
ContextWrapper cw = new ContextWrapper(getApplicationContext());
File directory = cw.getDir("imageDir", Context.MODE_PRIVATE);
final File mypath=new File(directory,"Pic_"+fileName+".jpg");
loadImageFromStorage(mypath.toString());
private void loadImageFromStorage(String path)
{
try {
File f=new File(path);
Bitmap b = BitmapFactory.decodeStream(new FileInputStream(f));
ImageView img=(ImageView)findViewById(R.id.imageView7);
img.setImageBitmap(b);
}
catch (FileNotFoundException e)
{
e.printStackTrace();
}
}
以下是android开发人员示例的相关部分:
final View thumb1View = findViewById(R.id.thumb_button_1);
thumb1View.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
zoomImageFromThumb(thumb1View, R.drawable.image1);
}
});
private void zoomImageFromThumb(final View thumbView, int imageResId) {
// If there's an animation in progress, cancel it
// immediately and proceed with this one.
if (mCurrentAnimator != null) {
mCurrentAnimator.cancel();
}
// Load the high-resolution "zoomed-in" image.
final ImageView expandedImageView = (ImageView) findViewById(
R.id.expanded_image);
expandedImageView.setImageResource(imageResId);
你可以看到“imageResid”来自r.drawable.image1
我知道动画工作正常...因为我可以保存一个示例来绘制并测试它。
然而......我不知道如何使用ImageView中的图像。
我尝试了几件事......比如将Android Developer示例更改为expandImageView.setImageBitmap(b)而不是expandImageView.setImageResource()
并且可以得到位图加载...并且做动画......并且它扩展了图片......但是图像质量非常差,我认为这是由原始压缩引起的,尽管我在.png让它减少损失的印象。
我这样做了:
try {
fos = new FileOutputStream(mypath);
imageBitmap.compress(Bitmap.CompressFormat.PNG, 100, fos);
fos.close();
} catch (Exception e) {
e.printStackTrace();
}
我仍然非常擅长设计android,我相信可能有一种简单的方法可以做我想要的事情。先感谢您。
编辑 - 1/21/16
嗯......因为没有人回答。我想我会在做一些阅读之后加上评论......位图仅返回缩略图。所以基本上我只是扩展缩略图,无论质量如何。
我将不得不尝试不同的根来获取图片。我在Android开发人员中尝试了这个例子......它没有用。相机从未初始化。
我想要的是拍照...将其保存到文件中,不是SD卡,而是用户媒体库,而是私人文件夹。然后可以将该图像从活动调用到图像视图中。如果有人有一些建议,我将不胜感激。
答案 0 :(得分:0)
我猜您是在引用此链接https://developer.android.com/training/animation/zoom#java,对吗? 我和你以前有同样的问题,我设法解决了。
final View thumb1View = findViewById(R.id.thumb_button_1);
thumb1View.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
zoomImageFromThumb(thumb1View, R.drawable.image1);
}
});
移除R.drawable.image1
onclick侦听器内的thumb1View
。
private void zoomImageFromThumb(final View thumbView, int imageResId) {
// If there's an animation in progress, cancel it
// immediately and proceed with this one.
if (mCurrentAnimator != null) {
mCurrentAnimator.cancel();
}
// Load the high-resolution "zoomed-in" image.
final ImageView expandedImageView = (ImageView) findViewById(R.id.expanded_image);
expandedImageView.setImageResource(imageResId);
在私用int imageResId
处删除zoomImageFromThumb
。
并将expandedImageView
链接到我自己的链接,而不是expandedImageView.setImageResource(imageResId)
。
private void zoomImageFromThumb(final View thumbView) {
// If there's an animation in progress, cancel it
// immediately and proceed with this one.
String imageUrl = getIntent().getStringExtra("photo");
final String localPath = Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_DOWNLOADS).getAbsolutePath() + "/" + imageUrl;
new File(localPath);
if (mCurrentAnimator != null) {
mCurrentAnimator.cancel();
}
// Load the high-resolution "zoomed-in" image.
final ImageView expandedImageView = (ImageView) findViewById(R.id.expanded_image);
expandedImageView.setImageBitmap(BitmapFactory.decodeFile(localPath));
然后变成这样,这就是我修改代码的方式,然后我可以从外部链接而不是可绘制资源扩展imageview
,您需要找到自己的方式获取链接并将其链接到expandedImageView
。