如何ViewPager当前图像保存到SD卡上按一下按钮 [英] how to save ViewPager Current image to sd card on button click
本文介绍了如何ViewPager当前图像保存到SD卡上按一下按钮的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
我的工作中,我对ViewPager刷卡图像的图像刷卡应用程序,我想保存按钮单击当前显示的图像到SD卡。
我的code:SwipeActivity.java
包com.td.gridview;进口android.app.Activity;
进口android.content.Context;
进口android.content.Intent;
进口android.os.Bundle;
进口android.support.v4.view.PagerAdapter;
进口android.support.v4.view.ViewPager;
进口android.support.v4.view.ViewPager.OnPageChangeListener;
进口android.view.View;
进口android.view.ViewGroup;
进口android.widget.Button;
进口android.widget.ImageView;公共类SwipeActivity延伸活动{ 保护INT curruntPosition;
保护INT HH; @覆盖
公共无效的onCreate(捆绑savedInstanceState){
super.onCreate(savedInstanceState);
的setContentView(R.layout.swipe_view); //获取数据的意图
意向I = getIntent(); //选择图片ID
最终诠释位置= i.getExtras()调用getInt(ID)。 最后ViewPager viewPager =(ViewPager)findViewById(R.id.view_pager);
ImagePagerAdapter适配器=新ImagePagerAdapter();
viewPager.setAdapter(适配器);
viewPager.setCurrentItem(位置);
viewPager.setOnPageChangeListener(新OnPageChangeListener(){ @覆盖
公共无效使用onPageSelected(INT为arg0){
// TODO自动生成方法存根
//在这里你可以设置壁纸
curruntPosition =为arg0;
如果(curruntPosition ==为arg0){
HH = 1;
}
} @覆盖
公共无效onPageScrolled(INT为arg0,ARG1浮球,诠释ARG2){
// TODO自动生成方法存根 } @覆盖
公共无效onPageScrollStateChanged(INT为arg0){
// TODO自动生成方法存根 } });
//
按钮BX =(按钮)findViewById(R.id.xoom);
bx.setOnClickListener(新View.OnClickListener(){
公共无效的onClick(查看VX){
// // TODO自动生成方法存根 如果(HH == 1){
//发送图片ID来FullScreenActivity
意图I2 =新意图(getApplicationContext()
Full_Zoom.class);
//传递数组索引
i2.putExtra(ID,curruntPosition);
startActivity(I 2);
}其他{
//获取数据的意图
意向I3 = getIntent(); //选择图片ID
INT位置= i3.getExtras()调用getInt(ID)。
//发送图片ID来FullScreenActivity
意图I2 =新意图(getApplicationContext()
Full_Zoom.class);
//传递数组索引
i2.putExtra(ID,位置);
startActivity(I 2);
} }
});
// //保存当前ViewPager形象SD卡上按一下按钮
按钮B1 =(按钮)findViewById(R.id.wll);
b1.setOnClickListener(新View.OnClickListener(){
公共无效的onClick(查看V2){
// // TODO自动生成方法存根 //保存ViewPager当前图像到SD卡 }
}); } 公共类ImagePagerAdapter扩展PagerAdapter {
INT []图标= MainActivity.ICONS; @覆盖
公众诠释的getCount(){
返回icons.length;
} @覆盖
公共布尔isViewFromObject(查看视图,Object对象){
返回查看==((ImageView的)对象);
} @覆盖
公共对象instantiateItem(ViewGroup中的容器,INT位置){
上下文的背景下= SwipeActivity.this;
ImageView的ImageView的=新ImageView的(上下文);
// INT填充= context.getResources()。getDimensionPixelSize(
// R.dimen.padding_large);
// imageView.setPadding(填充,填充,填充,填充);
imageView.setScaleType(ImageView.ScaleType.FIT_CENTER);
imageView.setImageResource(图标[位置]);
((ViewPager)容器).addView(ImageView的,0);
返回ImageView的;
} @覆盖
公共无效destroyItem(ViewGroup中的容器,INT位置,Object对象){
((ViewPager)容器).removeView((ImageView的)对象);
}
}}
在这上面code发现这个code:在这里我要执行从viewpager图像保存到SD卡
//保存当前ViewPager形象SD卡上按一下按钮
按钮B1 =(按钮)findViewById(R.id.wll);
b1.setOnClickListener(新View.OnClickListener(){
公共无效的onClick(查看V2){
// // TODO自动生成方法存根 //保存ViewPager当前图像到SD卡 }
});
解决方案
我发现我的回答:
包com.td.gridview;进口的java.io.File;
进口java.io.FileNotFoundException;
进口java.io.FileOutputStream中;
进口java.io.IOException异常;
进口了java.util.Random;进口android.app.Activity;
进口android.content.Context;
进口android.content.Intent;
进口android.graphics.Bitmap;
进口android.graphics.drawable.BitmapDrawable;
进口android.graphics.drawable.Drawable;
进口android.net.Uri;
进口android.os.Bundle;
进口android.os.Environment;
进口android.support.v4.view.PagerAdapter;
进口android.support.v4.view.ViewPager;
进口android.support.v4.view.ViewPager.OnPageChangeListener;
进口android.view.View;
进口android.view.ViewGroup;
进口android.widget.Button;
进口android.widget.ImageView;
进口android.widget.Toast;公共类SwipeActivity延伸活动{ 上下文mContext; //设置保存文件的位置例如:.getAbsolutePath()+/图片);
最终文件MYDIR =新的文件(Environment.getExternalStorageDirectory()
.getAbsolutePath()+/);
布尔成功= FALSE; 保护INT curruntPosition;
保护INT HH; @覆盖
公共无效的onCreate(捆绑savedInstanceState){
super.onCreate(savedInstanceState);
的setContentView(R.layout.swipe_view); 最后上下文mContext;
mContext =这一点; //获取数据的意图
意向I = getIntent(); //选择图片ID
最终诠释位置= i.getExtras()调用getInt(ID)。 最后ViewPager viewPager =(ViewPager)findViewById(R.id.view_pager);
最后ImagePagerAdapter适配器=新ImagePagerAdapter();
viewPager.setAdapter(适配器);
viewPager.setCurrentItem(位置);
viewPager.setOnPageChangeListener(新OnPageChangeListener(){ @覆盖
公共无效使用onPageSelected(INT为arg0){
// TODO自动生成方法存根
//在这里你可以设置壁纸
curruntPosition =为arg0;
如果(curruntPosition ==为arg0){
HH = 1;
}
} @覆盖
公共无效onPageScrolled(INT为arg0,ARG1浮球,诠释ARG2){
// TODO自动生成方法存根 } @覆盖
公共无效onPageScrollStateChanged(INT为arg0){
// TODO自动生成方法存根 } });
//
按钮BX =(按钮)findViewById(R.id.xoom);
bx.setOnClickListener(新View.OnClickListener(){
公共无效的onClick(查看VX){
// // TODO自动生成方法存根 如果(HH == 1){
//发送图片ID来FullScreenActivity
意图I2 =新意图(getApplicationContext()
Full_Zoom.class);
//传递数组索引
i2.putExtra(ID,curruntPosition);
startActivity(I 2);
}其他{
//获取数据的意图
意向I3 = getIntent(); //选择图片ID
INT位置= i3.getExtras()调用getInt(ID)。
//发送图片ID来FullScreenActivity
意图I2 =新意图(getApplicationContext()
Full_Zoom.class);
//传递数组索引
i2.putExtra(ID,位置);
startActivity(I 2);
} }
});
// //保存当前ViewPager形象SD卡上按一下按钮
按钮B1 =(按钮)findViewById(R.id.wll);
b1.setOnClickListener(新View.OnClickListener(){
公共无效的onClick(查看V2){
// // TODO自动生成方法存根 //保存ViewPager当前图像到SD卡 //
最后随机发生器=新的随机();
INT N = 10000;
N = generator.nextInt(N);
最后弦乐FNAME =temp_image+ N +巴纽; myDir.mkdirs(); 文件图像=新的文件(MYDIR,FNAME); INT CURRENTITEM = viewPager.getCurrentItem();
可绘制可绘制= mContext.getResources()。getDrawable(
adapter.mImages [CURRENTITEM]);
位图的位图=((BitmapDrawable)抽拉).getBitmap(); // EN code中的文件作为一个PNG图像。
FileOutputStream中outStream;
尝试{ outStream =新的FileOutputStream(图片);
bitmap.com preSS(Bitmap.Com pressFormat.PNG,100,outStream);
/ * 100,以保持图像的质量完全* / outStream.flush();
outStream.close();
成功= TRUE;
}赶上(FileNotFoundException异常五){
e.printStackTrace();
}赶上(IOException异常五){
e.printStackTrace();
} 如果(成功){
Toast.makeText(getApplicationContext(),
在/ SD卡/ temp_image图像保存成功,
Toast.LENGTH_LONG).show();
}其他{
Toast.makeText(getApplicationContext(),
图像存储过程中的错误,Toast.LENGTH_LONG)
。显示();
}
sendBroadcast(新意图(Intent.ACTION_MEDIA_MOUNTED,乌里
.parse(文件:// MNT / SD卡/
+ Environment.getExternalStorageDirectory()))); } // }); } 公共类ImagePagerAdapter扩展PagerAdapter {
保护INT [] = mImages MainActivity.ICONS;
INT []图标= MainActivity.ICONS; @覆盖
公众诠释的getCount(){
返回icons.length;
} @覆盖
公共布尔isViewFromObject(查看视图,Object对象){
返回查看==((ImageView的)对象);
} @覆盖
公共对象instantiateItem(ViewGroup中的容器,INT位置){
上下文的背景下= SwipeActivity.this;
ImageView的ImageView的=新ImageView的(上下文);
// INT填充= context.getResources()。getDimensionPixelSize(
// R.dimen.padding_large);
// imageView.setPadding(填充,填充,填充,填充);
imageView.setScaleType(ImageView.ScaleType.FIT_CENTER);
imageView.setImageResource(图标[位置]);
((ViewPager)容器).addView(ImageView的,0);
返回ImageView的;
} @覆盖
公共无效destroyItem(ViewGroup中的容器,INT位置,Object对象){
((ViewPager)容器).removeView((ImageView的)对象);
}
}}
i am working on a image swipe app in which i am swiping images on ViewPager and i want to save current showing image to sd card on button click.
my code: SwipeActivity.java
package com.td.gridview;
import android.app.Activity;
import android.content.Context;
import android.content.Intent;
import android.os.Bundle;
import android.support.v4.view.PagerAdapter;
import android.support.v4.view.ViewPager;
import android.support.v4.view.ViewPager.OnPageChangeListener;
import android.view.View;
import android.view.ViewGroup;
import android.widget.Button;
import android.widget.ImageView;
public class SwipeActivity extends Activity {
protected int curruntPosition;
protected int hh;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.swipe_view);
// get intent data
Intent i = getIntent();
// Selected image id
final int position = i.getExtras().getInt("id");
final ViewPager viewPager = (ViewPager) findViewById(R.id.view_pager);
ImagePagerAdapter adapter = new ImagePagerAdapter();
viewPager.setAdapter(adapter);
viewPager.setCurrentItem(position);
viewPager.setOnPageChangeListener(new OnPageChangeListener() {
@Override
public void onPageSelected(int arg0) {
// TODO Auto-generated method stub
// Here you can set the wallpaper
curruntPosition = arg0;
if (curruntPosition == arg0) {
hh = 1;
}
}
@Override
public void onPageScrolled(int arg0, float arg1, int arg2) {
// TODO Auto-generated method stub
}
@Override
public void onPageScrollStateChanged(int arg0) {
// TODO Auto-generated method stub
}
});
//
Button bx = (Button) findViewById(R.id.xoom);
bx.setOnClickListener(new View.OnClickListener() {
public void onClick(View vx) {
// // TODO Auto-generated method stub
if (hh == 1) {
// Sending image id to FullScreenActivity
Intent i2 = new Intent(getApplicationContext(),
Full_Zoom.class);
// passing array index
i2.putExtra("id", curruntPosition);
startActivity(i2);
} else {
// get intent data
Intent i3 = getIntent();
// Selected image id
int position = i3.getExtras().getInt("id");
// Sending image id to FullScreenActivity
Intent i2 = new Intent(getApplicationContext(),
Full_Zoom.class);
// passing array index
i2.putExtra("id", position);
startActivity(i2);
}
}
});
//
// Save ViewPager current image to sd card on button click
Button b1 = (Button) findViewById(R.id.wll);
b1.setOnClickListener(new View.OnClickListener() {
public void onClick(View v2) {
// // TODO Auto-generated method stub
// Save ViewPager current image to sd card
}
});
}
public class ImagePagerAdapter extends PagerAdapter {
int[] icons = MainActivity.ICONS;
@Override
public int getCount() {
return icons.length;
}
@Override
public boolean isViewFromObject(View view, Object object) {
return view == ((ImageView) object);
}
@Override
public Object instantiateItem(ViewGroup container, int position) {
Context context = SwipeActivity.this;
ImageView imageView = new ImageView(context);
// int padding = context.getResources().getDimensionPixelSize(
// R.dimen.padding_large);
// imageView.setPadding(padding, padding, padding, padding);
imageView.setScaleType(ImageView.ScaleType.FIT_CENTER);
imageView.setImageResource(icons[position]);
((ViewPager) container).addView(imageView, 0);
return imageView;
}
@Override
public void destroyItem(ViewGroup container, int position, Object object) {
((ViewPager) container).removeView((ImageView) object);
}
}
}
in this above code find this code: here i want to perform save image from viewpager to sd card
// Save ViewPager current image to sd card on button click
Button b1 = (Button) findViewById(R.id.wll);
b1.setOnClickListener(new View.OnClickListener() {
public void onClick(View v2) {
// // TODO Auto-generated method stub
// Save ViewPager current image to sd card
}
});
解决方案
i found my answer:
package com.td.gridview;
import java.io.File;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.util.Random;
import android.app.Activity;
import android.content.Context;
import android.content.Intent;
import android.graphics.Bitmap;
import android.graphics.drawable.BitmapDrawable;
import android.graphics.drawable.Drawable;
import android.net.Uri;
import android.os.Bundle;
import android.os.Environment;
import android.support.v4.view.PagerAdapter;
import android.support.v4.view.ViewPager;
import android.support.v4.view.ViewPager.OnPageChangeListener;
import android.view.View;
import android.view.ViewGroup;
import android.widget.Button;
import android.widget.ImageView;
import android.widget.Toast;
public class SwipeActivity extends Activity {
Context mContext;
//set save file location example: .getAbsolutePath() + "/Pictures");
final File myDir = new File(Environment.getExternalStorageDirectory()
.getAbsolutePath() + "/");
boolean success = false;
protected int curruntPosition;
protected int hh;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.swipe_view);
final Context mContext;
mContext = this;
// get intent data
Intent i = getIntent();
// Selected image id
final int position = i.getExtras().getInt("id");
final ViewPager viewPager = (ViewPager) findViewById(R.id.view_pager);
final ImagePagerAdapter adapter = new ImagePagerAdapter();
viewPager.setAdapter(adapter);
viewPager.setCurrentItem(position);
viewPager.setOnPageChangeListener(new OnPageChangeListener() {
@Override
public void onPageSelected(int arg0) {
// TODO Auto-generated method stub
// Here you can set the wallpaper
curruntPosition = arg0;
if (curruntPosition == arg0) {
hh = 1;
}
}
@Override
public void onPageScrolled(int arg0, float arg1, int arg2) {
// TODO Auto-generated method stub
}
@Override
public void onPageScrollStateChanged(int arg0) {
// TODO Auto-generated method stub
}
});
//
Button bx = (Button) findViewById(R.id.xoom);
bx.setOnClickListener(new View.OnClickListener() {
public void onClick(View vx) {
// // TODO Auto-generated method stub
if (hh == 1) {
// Sending image id to FullScreenActivity
Intent i2 = new Intent(getApplicationContext(),
Full_Zoom.class);
// passing array index
i2.putExtra("id", curruntPosition);
startActivity(i2);
} else {
// get intent data
Intent i3 = getIntent();
// Selected image id
int position = i3.getExtras().getInt("id");
// Sending image id to FullScreenActivity
Intent i2 = new Intent(getApplicationContext(),
Full_Zoom.class);
// passing array index
i2.putExtra("id", position);
startActivity(i2);
}
}
});
//
// Save ViewPager current image to sd card on button click
Button b1 = (Button) findViewById(R.id.wll);
b1.setOnClickListener(new View.OnClickListener() {
public void onClick(View v2) {
// // TODO Auto-generated method stub
// Save ViewPager current image to sd card
//
final Random generator = new Random();
int n = 10000;
n = generator.nextInt(n);
final String fname = "temp_image" + n + ".png";
myDir.mkdirs();
File image = new File(myDir, fname);
int currentItem = viewPager.getCurrentItem();
Drawable drawable = mContext.getResources().getDrawable(
adapter.mImages[currentItem]);
Bitmap bitmap = ((BitmapDrawable) drawable).getBitmap();
// Encode the file as a PNG image.
FileOutputStream outStream;
try {
outStream = new FileOutputStream(image);
bitmap.compress(Bitmap.CompressFormat.PNG, 100, outStream);
/* 100 to keep full quality of the image */
outStream.flush();
outStream.close();
success = true;
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
if (success) {
Toast.makeText(getApplicationContext(),
"Image saved with success at /sdcard/temp_image",
Toast.LENGTH_LONG).show();
} else {
Toast.makeText(getApplicationContext(),
"Error during image saving", Toast.LENGTH_LONG)
.show();
}
sendBroadcast(new Intent(Intent.ACTION_MEDIA_MOUNTED, Uri
.parse("file://mnt/sdcard/"
+ Environment.getExternalStorageDirectory())));
}
//
});
}
public class ImagePagerAdapter extends PagerAdapter {
protected int[] mImages = MainActivity.ICONS;
int[] icons = MainActivity.ICONS;
@Override
public int getCount() {
return icons.length;
}
@Override
public boolean isViewFromObject(View view, Object object) {
return view == ((ImageView) object);
}
@Override
public Object instantiateItem(ViewGroup container, int position) {
Context context = SwipeActivity.this;
ImageView imageView = new ImageView(context);
// int padding = context.getResources().getDimensionPixelSize(
// R.dimen.padding_large);
// imageView.setPadding(padding, padding, padding, padding);
imageView.setScaleType(ImageView.ScaleType.FIT_CENTER);
imageView.setImageResource(icons[position]);
((ViewPager) container).addView(imageView, 0);
return imageView;
}
@Override
public void destroyItem(ViewGroup container, int position, Object object) {
((ViewPager) container).removeView((ImageView) object);
}
}
}
这篇关于如何ViewPager当前图像保存到SD卡上按一下按钮的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文