Android 如何从viewpager保存当前图像?
我在Android 如何从viewpager保存当前图像?,android,Android,我在查看页面中有图像,我希望用户可以通过单击按钮将图像保存到手机的sd卡来保存当前图像 这是我的demoactivity.java public class DemoActivity extends Activity { Button play; MediaPlayer mp; public int playstop = 0; private Button extisaw; public void onCreate(Bundle ww) { super.onCreate(ww);
查看页面中有图像,我希望用户可以通过单击按钮将图像保存到手机的sd卡来保存当前图像
这是我的demoactivity.java
public class DemoActivity extends Activity {
Button play;
MediaPlayer mp;
public int playstop = 0;
private Button extisaw;
public void onCreate(Bundle ww) {
super.onCreate(ww);
setContentView(R.layout.activity_main);
play = (Button) findViewById(R.id.saw);
mp = MediaPlayer.create(this, R.raw.raj);
show1();
show2();
play.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
if (playstop == 0) {
MediaHandler(mp, 1);
mp.start();
playstop = 1;
} else {
MediaHandler(mp, 2);
mp.pause();
playstop = 0;
}
}
});
}
private void show2()
{
// TODO: Implement this method
this.extisaw =
(Button)this.findViewById
(R.id.about);
this.extisaw.setOnClickListener
(new OnClickListener() {
@Override
public void onClick(View v) {
finish();
}
});}
public void MediaHandler
(MediaPlayer mp, int e) {
if (e == 1) {
mp.start();
} else {
mp.pause();
}
}
public void show1() {
ViewPager viewPager = (ViewPager) findViewById(R.id.view_pager);
ImagePagerAdapter adapter = new ImagePagerAdapter();
viewPager.setAdapter(adapter);
}
private class ImagePagerAdapter extends PagerAdapter {
private int[] mImages = new int[]{
R.drawable.a1, R.drawable.a2,
R.drawable.a3, R.drawable.a4,
R.drawable.a5, R.drawable.a6,
R.drawable.a7, R.drawable.a8
, R.drawable.a9, R.drawable.a10, R.drawable.a11, R.drawable.a12
, R.drawable.a13, R.drawable.a14, R.drawable.a15
, R.drawable.a16, R.drawable.a17, R.drawable.a18, R.drawable.a19
, R.drawable.a20, R.drawable.a21, R.drawable.a22, R.drawable.a23
,
R.drawable.a24, R.drawable.a25,
R.drawable.a26, R.drawable.a27
, R.drawable.a29,
R.drawable.a30, R.drawable.a31
, R.drawable.a32, R.drawable.a33, R.drawable.a34, R.drawable.a35
, R.drawable.a36, R.drawable.a37, R.drawable.a38
, R.drawable.a39, R.drawable.a40, R.drawable.a42
, R.drawable.a43, R.drawable.a44, R.drawable.a45, R.drawable.a46,
R.drawable.a47, R.drawable.a48,
R.drawable.a49
, R.drawable.a51,
R.drawable.a52, R.drawable.a53
, R.drawable.a54, R.drawable.a55, R.drawable.a56
, R.drawable.a58, R.drawable.a59, R.drawable.a60
, R.drawable.a61, R.drawable.a62, R.drawable.a63
, R.drawable.a64, R.drawable.a65, R.drawable.a66, R.drawable.a67, R.drawable.a68, R.drawable.a69
, R.drawable.a70,
R.drawable.a71, R.drawable.a72
, R.drawable.a73, R.drawable.a74, R.drawable.a75
, R.drawable.a76, R.drawable.a77, R.drawable.a78
, R.drawable.a79, R.drawable.a80, R.drawable.a81
, R.drawable.a82, R.drawable.a83, R.drawable.a84, R.drawable.a85, R.drawable.a86, R.drawable.a87
, R.drawable.a88,
R.drawable.a89, R.drawable.a90
, R.drawable.a91, R.drawable.a93
, R.drawable.a94, R.drawable.a95, R.drawable.a96
, R.drawable.a97, R.drawable.a98, R.drawable.a99
};
@Override
public int getCount() {
return mImages.length;
}
@Override
public boolean isViewFromObject(View view, Object object) {
return view == ((ImageView) object);
}
@Override
public Object instantiateItem(ViewGroup container, int position) {
Context context = DemoActivity.this;
ImageView imageView = new ImageView(context);
int padding = context.getResources().getDimensionPixelSize(
R.dimen.padding_medium);
imageView.setPadding(padding, padding, padding, padding);
imageView.setScaleType(ImageView.ScaleType.CENTER_INSIDE);
imageView.setImageResource(mImages[position]);
((ViewPager) container).addView(imageView, 0);
return imageView;
}
@Override
public void destroyItem(ViewGroup container, int position, Object object) {
((ViewPager) container).removeView((ImageView) object);
}
}
public class DemoActivity extends Activity {
Button play;
MediaPlayer mp;
public int playstop = 0;
private Button extisaw;
public void onCreate(Bundle ww) {
super.onCreate(ww);
setContentView(R.layout.activity_main);
play = (Button) findViewById(R.id.saw);
mp = MediaPlayer.create(this, R.raw.raj);
show1();
show2();
play.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
if (playstop == 0) {
MediaHandler(mp, 1);
mp.start();
playstop = 1;
} else {
MediaHandler(mp, 2);
mp.pause();
playstop = 0;
}
}
});
}
private void show2()
{
// TODO: Implement this method
this.extisaw =
(Button)this.findViewById
(R.id.about);
this.extisaw.setOnClickListener
(new OnClickListener() {
@Override
public void onClick(View v) {
finish();
}
});}
public void MediaHandler
(MediaPlayer mp, int e) {
if (e == 1) {
mp.start();
} else {
mp.pause();
}
}
public void show1() {
ViewPager viewPager = (ViewPager) findViewById(R.id.view_pager);
ImagePagerAdapter adapter = new ImagePagerAdapter();
viewPager.setAdapter(adapter);
}
private class ImagePagerAdapter extends PagerAdapter {
private int[] mImages = new int[]{
R.drawable.a1, R.drawable.a2,
R.drawable.a3, R.drawable.a4,
R.drawable.a5, R.drawable.a6,
R.drawable.a7, R.drawable.a8
, R.drawable.a9, R.drawable.a10, R.drawable.a11, R.drawable.a12
, R.drawable.a13, R.drawable.a14, R.drawable.a15
, R.drawable.a16, R.drawable.a17, R.drawable.a18, R.drawable.a19
, R.drawable.a20, R.drawable.a21, R.drawable.a22, R.drawable.a23
,
R.drawable.a24, R.drawable.a25,
R.drawable.a26, R.drawable.a27
, R.drawable.a29,
R.drawable.a30, R.drawable.a31
, R.drawable.a32, R.drawable.a33, R.drawable.a34, R.drawable.a35
, R.drawable.a36, R.drawable.a37, R.drawable.a38
, R.drawable.a39, R.drawable.a40, R.drawable.a42
, R.drawable.a43, R.drawable.a44, R.drawable.a45, R.drawable.a46,
R.drawable.a47, R.drawable.a48,
R.drawable.a49
, R.drawable.a51,
R.drawable.a52, R.drawable.a53
, R.drawable.a54, R.drawable.a55, R.drawable.a56
, R.drawable.a58, R.drawable.a59, R.drawable.a60
, R.drawable.a61, R.drawable.a62, R.drawable.a63
, R.drawable.a64, R.drawable.a65, R.drawable.a66, R.drawable.a67, R.drawable.a68, R.drawable.a69
, R.drawable.a70,
R.drawable.a71, R.drawable.a72
, R.drawable.a73, R.drawable.a74, R.drawable.a75
, R.drawable.a76, R.drawable.a77, R.drawable.a78
, R.drawable.a79, R.drawable.a80, R.drawable.a81
, R.drawable.a82, R.drawable.a83, R.drawable.a84, R.drawable.a85, R.drawable.a86, R.drawable.a87
, R.drawable.a88,
R.drawable.a89, R.drawable.a90
, R.drawable.a91, R.drawable.a93
, R.drawable.a94, R.drawable.a95, R.drawable.a96
, R.drawable.a97, R.drawable.a98, R.drawable.a99
};
@Override
public int getCount() {
return mImages.length;
}
@Override
public boolean isViewFromObject(View view, Object object) {
return view == ((ImageView) object);
}
@Override
public Object instantiateItem(ViewGroup container, int position) {
Context context = DemoActivity.this;
ImageView imageView = new ImageView(context);
int padding = context.getResources().getDimensionPixelSize(
R.dimen.padding_medium);
imageView.setPadding(padding, padding, padding, padding);
imageView.setScaleType(ImageView.ScaleType.CENTER_INSIDE);
imageView.setImageResource(mImages[position]);
((ViewPager) container).addView(imageView, 0);
return imageView;
}
@Override
public void destroyItem(ViewGroup container, int position, Object object) {
((ViewPager) container).removeView((ImageView) object);
}
}
}首先将访问外部存储的权限添加到清单中:
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
Bitmap imageBitmap = ((BitmapDrawable) image.getDrawable()).getBitmap();
File sdCardDirectory = Environment.getExternalStorageDirectory();
File imageFile = new File(sdCardDirectory, "image.png");
最后将位图写入文件:
FileOutputStream outStream;
try {
outStream = new FileOutputStream(image);
bitmap.compress(Bitmap.CompressFormat.PNG, 100, outStream);
outStream.flush();
} catch (IOException e) {
e.printStackTrace();
}finally{
outStream.close();
}
您可以引入一个布尔值来检查写入过程是否正确完成。试试这可能会对您有所帮助。
try this:-
int position = viewPager.setCurrentItem(mPager.getCurrentItem() - 1);
String imagePath= list.get(position);
Bitmap bmp=BitmapFactory.decodeStream(context.getContentResolver().openInputSteam(Uri.fromFile(new File(imagePath))));
File sdCardDirectory = Environment.getExternalStorageDirectory();
File imageFile = new File(sdCardDirectory, "image.png");
FileOutputStream out = null;
try {
out = new FileOutputStream(imageFile);
bmp.compress(Bitmap.CompressFormat.JPEG, 80, out);
} catch (Exception e) {
e.printStackTrace();
} finally {
try {
if (out != null) {
out.close();
}
} catch (IOException e) {
e.printStackTrace();
}
}
private void saveImageIntoSdcard(Bitmap bitmap) {
File filename = null;
FileOutputStream out = null;
String destination;
try {
String path = Environment.getExternalStorageDirectory().toString();
destination ="/DESTINATIONFOLDER NAME/";
new File(path + destination).mkdirs();
filename = new File(path + destination + ".jpg");
out = new FileOutputStream(filename);
bitmapReceipt.compress(Bitmap.CompressFormat.JPEG, 100,
out);
MediaStore.Images.Media.insertImage(getActivity()
.getContentResolver(), filename.getAbsolutePath(),
filename.getName(), filename.getName());
}
catch (Exception e) {
e.printStackTrace();
} finally {
if (out != null) {
try {
out.flush();
out.close();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
}
这是我的密码
有两个按钮
播放并停止音乐
和退出按钮,一切正常
但我想添加一个按钮,用户可以保存查看寻呼机的当前图像到手机内存
}我将我的代码添加到您的活动类中,现在试试这个
public class DemoActivity extends Activity {
Button play;
MediaPlayer mp;
private int[] mImages = new int[]{
R.drawable.a1, R.drawable.a2,
R.drawable.a3, R.drawable.a4,
R.drawable.a5, R.drawable.a6,
R.drawable.a7, R.drawable.a8
, R.drawable.a9, R.drawable.a10, R.drawable.a11, R.drawable.a12
, R.drawable.a13, R.drawable.a14, R.drawable.a15
, R.drawable.a16, R.drawable.a17, R.drawable.a18, R.drawable.a19
, R.drawable.a20, R.drawable.a21, R.drawable.a22, R.drawable.a23
,
R.drawable.a24, R.drawable.a25,
R.drawable.a26, R.drawable.a27
, R.drawable.a29,
R.drawable.a30, R.drawable.a31
, R.drawable.a32, R.drawable.a33, R.drawable.a34, R.drawable.a35
, R.drawable.a36, R.drawable.a37, R.drawable.a38
, R.drawable.a39, R.drawable.a40, R.drawable.a42
, R.drawable.a43, R.drawable.a44, R.drawable.a45, R.drawable.a46,
R.drawable.a47, R.drawable.a48,
R.drawable.a49
, R.drawable.a51,
R.drawable.a52, R.drawable.a53
, R.drawable.a54, R.drawable.a55, R.drawable.a56
, R.drawable.a58, R.drawable.a59, R.drawable.a60
, R.drawable.a61, R.drawable.a62, R.drawable.a63
, R.drawable.a64, R.drawable.a65, R.drawable.a66, R.drawable.a67, R.drawable.a68, R.drawable.a69
, R.drawable.a70,
R.drawable.a71, R.drawable.a72
, R.drawable.a73, R.drawable.a74, R.drawable.a75
, R.drawable.a76, R.drawable.a77, R.drawable.a78
, R.drawable.a79, R.drawable.a80, R.drawable.a81
, R.drawable.a82, R.drawable.a83, R.drawable.a84, R.drawable.a85, R.drawable.a86, R.drawable.a87
, R.drawable.a88,
R.drawable.a89, R.drawable.a90
, R.drawable.a91, R.drawable.a93
, R.drawable.a94, R.drawable.a95, R.drawable.a96
, R.drawable.a97, R.drawable.a98, R.drawable.a99
};
public int playstop = 0;
private Button extisaw;
private ImagePagerAdapter adapter;
private ViewPager viewPager;
public void onCreate(Bundle ww) {
super.onCreate(ww);
setContentView(R.layout.activity_main);
play = (Button) findViewById(R.id.saw);
mp = MediaPlayer.create(this, R.raw.raj);
show1();
show2();
play.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
if (playstop == 0) {
MediaHandler(mp, 1);
mp.start();
playstop = 1;
} else {
MediaHandler(mp, 2);
mp.pause();
playstop = 0;
}
}
});
}
private void show2()
{
// TODO: Implement this method
this.extisaw =
(Button)this.findViewById
(R.id.about);
this.extisaw.setOnClickListener
(new OnClickListener() {
@Override
public void onClick(View v) {
finish();
}
});
}
public void MediaHandler
(MediaPlayer mp, int e) {
if (e == 1) {
mp.start();
} else {
mp.pause();
}
}
private void saveImageIntoSdcard(Bitmap bitmap) {
File filename = null;
FileOutputStream out = null;
String destination;
try {
String path = Environment.getExternalStorageDirectory().toString();
destination ="/DESTINATIONFOLDER NAME/";
File sdCardDirectory = new File(Environment.getExternalStorageDirectory(),destination);
filename = new File(sdCardDirectory, System.currentTimeMillis()+"image.jpg");
out = new FileOutputStream(filename);
bitmap.compress(Bitmap.CompressFormat.JPEG, 100,
out);
MediaStore.Images.Media.insertImage(getContentResolver(), filename.getAbsolutePath(),
filename.getName(), filename.getName());
}
catch (Exception e) {
e.printStackTrace();
} finally {
if (out != null) {
try {
out.flush();
out.close();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
}
public void show1() {
viewPager = (ViewPager) findViewById(R.id.view_pager);
adapter = new ImagePagerAdapter();
viewPager.setAdapter(adapter);
Button b1 = (Button) findViewById(R.id.save);
b1.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
int position=viewPager.getCurrentItem();
int selectedImage=mImages[position];
Bitmap largeIcon = BitmapFactory.decodeResource(getResources(),selectedImage);
saveImageIntoSdcard(largeIcon);
}
});
}
private class ImagePagerAdapter extends PagerAdapter {
@Override
public int getCount() {
return mImages.length;
}
@Override
public boolean isViewFromObject(View view, Object object) {
return view == ((ImageView) object);
}
@Override
public Object instantiateItem(ViewGroup container, int position) {
Context context = DemoActivity.this;
ImageView imageView = new ImageView(context);
int padding = context.getResources().getDimensionPixelSize(
R.dimen.padding_medium);
imageView.setPadding(padding, padding, padding, padding);
imageView.setScaleType(ImageView.ScaleType.CENTER_INSIDE);
imageView.setImageResource(mImages[position]);
((ViewPager) container).addView(imageView, 0);
return imageView;
}
@Override
public void destroyItem(ViewGroup container, int position, Object object) {
((ViewPager) container).removeView((ImageView) object);
}
}
}
如何显示图像,即使用哪个库显示图像。你能发布你的代码吗..我已经发布了我的代码,看到它不起作用,请给我另一个代码或保存图像的示例项目我不懂你的意思,,你能解释一下吗…或者给我一个例子有问题…请你把这个代码添加到我的主活动代码中吗???我的代码在mediafire的链接中…我正在等待uI发布我的代码请查看并添加到它按钮以在查看页面中保存当前图像请确保您传递的位图不是空的谢谢您,但我是java新手,我希望您将此代码放到我的demoavity.java并将其交给我…请等待uButton b1=(按钮)findViewById(R.id.save);b1.setOnClickListener(新视图{谢谢。我复制了代码并粘贴了它。但是当我点击按钮时,什么都没有发生……我已经将承诺添加到mainfest,代码没有错误。请尝试代码以查找问题所在。为什么它不保存图像,而图像必须保存在sd crd中?我在sd卡中搜索,但没有找到任何im年龄已保存。首先,您需要在清单中为writeExternal目录添加premission并查找DestinationFolder名称。存储在此文件夹中的所有图像都将此添加到mainfest
public class DemoActivity extends Activity {
Button play;
MediaPlayer mp;
private int[] mImages = new int[]{
R.drawable.a1, R.drawable.a2,
R.drawable.a3, R.drawable.a4,
R.drawable.a5, R.drawable.a6,
R.drawable.a7, R.drawable.a8
, R.drawable.a9, R.drawable.a10, R.drawable.a11, R.drawable.a12
, R.drawable.a13, R.drawable.a14, R.drawable.a15
, R.drawable.a16, R.drawable.a17, R.drawable.a18, R.drawable.a19
, R.drawable.a20, R.drawable.a21, R.drawable.a22, R.drawable.a23
,
R.drawable.a24, R.drawable.a25,
R.drawable.a26, R.drawable.a27
, R.drawable.a29,
R.drawable.a30, R.drawable.a31
, R.drawable.a32, R.drawable.a33, R.drawable.a34, R.drawable.a35
, R.drawable.a36, R.drawable.a37, R.drawable.a38
, R.drawable.a39, R.drawable.a40, R.drawable.a42
, R.drawable.a43, R.drawable.a44, R.drawable.a45, R.drawable.a46,
R.drawable.a47, R.drawable.a48,
R.drawable.a49
, R.drawable.a51,
R.drawable.a52, R.drawable.a53
, R.drawable.a54, R.drawable.a55, R.drawable.a56
, R.drawable.a58, R.drawable.a59, R.drawable.a60
, R.drawable.a61, R.drawable.a62, R.drawable.a63
, R.drawable.a64, R.drawable.a65, R.drawable.a66, R.drawable.a67, R.drawable.a68, R.drawable.a69
, R.drawable.a70,
R.drawable.a71, R.drawable.a72
, R.drawable.a73, R.drawable.a74, R.drawable.a75
, R.drawable.a76, R.drawable.a77, R.drawable.a78
, R.drawable.a79, R.drawable.a80, R.drawable.a81
, R.drawable.a82, R.drawable.a83, R.drawable.a84, R.drawable.a85, R.drawable.a86, R.drawable.a87
, R.drawable.a88,
R.drawable.a89, R.drawable.a90
, R.drawable.a91, R.drawable.a93
, R.drawable.a94, R.drawable.a95, R.drawable.a96
, R.drawable.a97, R.drawable.a98, R.drawable.a99
};
public int playstop = 0;
private Button extisaw;
private ImagePagerAdapter adapter;
private ViewPager viewPager;
public void onCreate(Bundle ww) {
super.onCreate(ww);
setContentView(R.layout.activity_main);
play = (Button) findViewById(R.id.saw);
mp = MediaPlayer.create(this, R.raw.raj);
show1();
show2();
play.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
if (playstop == 0) {
MediaHandler(mp, 1);
mp.start();
playstop = 1;
} else {
MediaHandler(mp, 2);
mp.pause();
playstop = 0;
}
}
});
}
private void show2()
{
// TODO: Implement this method
this.extisaw =
(Button)this.findViewById
(R.id.about);
this.extisaw.setOnClickListener
(new OnClickListener() {
@Override
public void onClick(View v) {
finish();
}
});
}
public void MediaHandler
(MediaPlayer mp, int e) {
if (e == 1) {
mp.start();
} else {
mp.pause();
}
}
private void saveImageIntoSdcard(Bitmap bitmap) {
File filename = null;
FileOutputStream out = null;
String destination;
try {
String path = Environment.getExternalStorageDirectory().toString();
destination ="/DESTINATIONFOLDER NAME/";
File sdCardDirectory = new File(Environment.getExternalStorageDirectory(),destination);
filename = new File(sdCardDirectory, System.currentTimeMillis()+"image.jpg");
out = new FileOutputStream(filename);
bitmap.compress(Bitmap.CompressFormat.JPEG, 100,
out);
MediaStore.Images.Media.insertImage(getContentResolver(), filename.getAbsolutePath(),
filename.getName(), filename.getName());
}
catch (Exception e) {
e.printStackTrace();
} finally {
if (out != null) {
try {
out.flush();
out.close();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
}
public void show1() {
viewPager = (ViewPager) findViewById(R.id.view_pager);
adapter = new ImagePagerAdapter();
viewPager.setAdapter(adapter);
Button b1 = (Button) findViewById(R.id.save);
b1.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
int position=viewPager.getCurrentItem();
int selectedImage=mImages[position];
Bitmap largeIcon = BitmapFactory.decodeResource(getResources(),selectedImage);
saveImageIntoSdcard(largeIcon);
}
});
}
private class ImagePagerAdapter extends PagerAdapter {
@Override
public int getCount() {
return mImages.length;
}
@Override
public boolean isViewFromObject(View view, Object object) {
return view == ((ImageView) object);
}
@Override
public Object instantiateItem(ViewGroup container, int position) {
Context context = DemoActivity.this;
ImageView imageView = new ImageView(context);
int padding = context.getResources().getDimensionPixelSize(
R.dimen.padding_medium);
imageView.setPadding(padding, padding, padding, padding);
imageView.setScaleType(ImageView.ScaleType.CENTER_INSIDE);
imageView.setImageResource(mImages[position]);
((ViewPager) container).addView(imageView, 0);
return imageView;
}
@Override
public void destroyItem(ViewGroup container, int position, Object object) {
((ViewPager) container).removeView((ImageView) object);
}
}
}