Android 如何使用查看寻呼机共享图像
我想分享一些图片。。我正在使用viewpager 如何获取要共享的图像ID。?因为viewpager不支持onclickitemlistener属性。请建议我如何将图像id获取到dhare如果您实现了,您的每个页面都可以承载您设计的一个实例,其布局用XML定义。这将允许您包含任何您需要的内容来组成您的自定义共享UI 发件人: 这最适合在页面数量不确定的对象集合中进行分页。它会在用户导航到其他页面时销毁片段,从而最大限度地减少内存使用 例如,您可以使用以下方法在对象集合上滑动:Android 如何使用查看寻呼机共享图像,android,android-viewpager,shareactionprovider,Android,Android Viewpager,Shareactionprovider,我想分享一些图片。。我正在使用viewpager 如何获取要共享的图像ID。?因为viewpager不支持onclickitemlistener属性。请建议我如何将图像id获取到dhare如果您实现了,您的每个页面都可以承载您设计的一个实例,其布局用XML定义。这将允许您包含任何您需要的内容来组成您的自定义共享UI 发件人: 这最适合在页面数量不确定的对象集合中进行分页。它会在用户导航到其他页面时销毁片段,从而最大限度地减少内存使用 例如,您可以使用以下方法在对象集合上滑动: 在您的情况下,您
在您的情况下,您可以更改每个页面所选事件的共享意图,如下所示:
public class CollectionDemoActivity extends FragmentActivity {
// When requested, this adapter returns a DemoObjectFragment,
// representing an object in the collection.
DemoCollectionPagerAdapter mDemoCollectionPagerAdapter;
ViewPager mViewPager;
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_collection_demo);
// ViewPager and its adapters use support library
// fragments, so use getSupportFragmentManager.
mDemoCollectionPagerAdapter =
new DemoCollectionPagerAdapter(
getSupportFragmentManager());
mViewPager = (ViewPager) findViewById(R.id.pager);
mViewPager.setAdapter(mDemoCollectionPagerAdapter);
}
}
// Since this is an object collection, use a FragmentStatePagerAdapter,
// and NOT a FragmentPagerAdapter.
public class DemoCollectionPagerAdapter extends FragmentStatePagerAdapter {
public DemoCollectionPagerAdapter(FragmentManager fm) {
super(fm);
}
@Override
public Fragment getItem(int i) {
Fragment fragment = new DemoObjectFragment();
Bundle args = new Bundle();
// Our object is just an integer :-P
args.putInt(DemoObjectFragment.ARG_OBJECT, i + 1);
fragment.setArguments(args);
return fragment;
}
@Override
public int getCount() {
return 100;
}
@Override
public CharSequence getPageTitle(int position) {
return "OBJECT " + (position + 1);
}
}
// Instances of this class are fragments representing a single
// object in our collection.
public static class DemoObjectFragment extends Fragment {
public static final String ARG_OBJECT = "object";
@Override
public View onCreateView(LayoutInflater inflater,
ViewGroup container, Bundle savedInstanceState) {
// The last two arguments ensure LayoutParams are inflated
// properly.
View rootView = inflater.inflate(
R.layout.fragment_collection_object, container, false);
Bundle args = getArguments();
((TextView) rootView.findViewById(android.R.id.text1)).setText(
Integer.toString(args.getInt(ARG_OBJECT)));
return rootView;
}
}
如何获取要共享的图像ID
使用ViewPager.getCurrentItem()
从ViewPager获取当前图像id:
1。在ELImageAdapter
类中创建一个方法以获取当前选定的图像id:
pager.setOnPageChangeListener(new ViewPager.OnPageChangeListener() {
@Override
public void onPageScrolled(int i, float v, int i2) {
}
@Override
public void onPageSelected(int i) {
setShareIntentForPosition(i);
}
@Override
public void onPageScrollStateChanged(int i) {
}
});
private void setShareIntentForPosition(int currentPosition){
Bitmap bitmap;
OutputStream output;
bitmap = BitmapFactory.decodeResource(getResources(),adapter.GalImages[currentPosition]);
File filepath = Environment.getExternalStorageDirectory();
File dir = new File(filepath.getAbsolutePath() + "/Eye Liner/");
dir.mkdirs();
File file = new File(dir, "Image.png");
try {
Intent share = new Intent(Intent.ACTION_SEND);
share.setAction(Intent.ACTION_SEND);
share.setType("image/jpeg");
output = new FileOutputStream(file);
bitmap.compress(Bitmap.CompressFormat.PNG, 100, output);
output.flush();
output.close();
Uri uri = Uri.fromFile(file);
share.putExtra(Intent.EXTRA_STREAM, uri);
setShareIntent(share);
}
private void setShareIntent(Intent intent) {
if (provider != null) {
provider.setShareIntent(intent);
}
}
2.调用getImageId
方法,使用oncreateoptions菜单中的适配器对象
方法:
public int getImageId(int pos){
return GalImages[pos];
}
现在使用currentImgId
id共享所选图像
int currentPos=pager.getCurrentItem();
int currentImgId=adapter.getImageId(currentPos);
其中适配器是
CustomAdapter
为viewpager
创建页面的对象,myPager
是viewpager
的参考变量,在此处输入代码,图像是存储图像路径的数组列表 要获取哪个映像id用于共享?用户选择的映像在映像适配器类中Thanx alot:)m尝试实现它不起作用。。每当我点击打开活动。。活动已停止error@user4440416:是否在currentImgId
中获取正确的id?位图=BitmapFactory.decodeResource(getResources(),adapter.GalImages[currentImgId]);不,我用过这个。。它不起作用。和currentImgId=adapter.getImageId(currentPos);作为你suggest@user4440416:我的意思是在currentImgId
中得到什么值?@user4440416:并查看下面的帖子以获取所选图像的文件public void onPageSelected(int i){Intent it=getIntent();//selected image id position=it.getExtras().getInt(“position”);}我用过这个,但当我刷到下一张图片时。。活动已经停止
public int getImageId(int pos){
return GalImages[pos];
}
int currentPos=pager.getCurrentItem();
int currentImgId=adapter.getImageId(currentPos);
File file = new File(adapter.images.get(myPager.getCurrentItem()));
Intent mShareIntent = new Intent(Intent.ACTION_SEND);
mShareIntent.setType("image/*");
mShareIntent.putExtra(Intent.EXTRA_STREAM,Uri.fromFile(file));
startActivity(Intent.createChooser(mShareIntent,"Shareith:"));