public class EyeLinerActivity extends Activity {
int position;
private ShareActionProvider provider;
ELImageAdapter adapter;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_eyeliner);
//ViewPager viewPager = (ViewPager) findViewById(R.id.view_pager);
//adapter = new ELImageAdapter(this);
//viewPager.setAdapter(adapter);
//ViewPager.setCurrentItem(0);
ViewPager pager = (ViewPager) findViewById(R.id.view_pager);
adapter = new ELImageAdapter(this);
pager.setAdapter(new ELImageAdapter(this));
// ImageView imageView = new ImageView(context);
// imageView.setImageResource(GalImages[position]);
// if (pager.getAdapter() != null)
// pager.setAdapter(adapter);
// pager.setCurrentItem(position);
}
@SuppressLint("NewApi")
@Override
public boolean onCreateOptionsMenu(Menu menu) {
getMenuInflater().inflate(R.menu.main, menu);
MenuItem shareitem= (MenuItem)menu.findItem(R.id.action_share);
ShareActionProvider provider = (ShareActionProvider)shareitem.getActionProvider();
Bitmap bitmap;
OutputStream output;
//ArrayList<Uri> imageUris = intent.getParcelableArrayListExtra(Intent.EXTRA_STREAM);
bitmap = BitmapFactory.decodeResource(getResources(),adapter.GalImages[position]);
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);
provider.setShareIntent(share);
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
return true;
}
//return super.onCreateOptionsMenu(menu);
private void setShareIntent(Intent intent) {
if (provider != null) {
provider.setShareIntent(intent);
}
}
}
adapter.java
public class ELImageAdapter extends PagerAdapter {
Context context;
public int[] GalImages = new int[] {
R.drawable.l_1,
R.drawable.l_2,
R.drawable.l_3,
R.drawable.l_4,
R.drawable.l_5,
R.drawable.l_6,
R.drawable.l_7,
R.drawable.l_8,
R.drawable.l_9,
R.drawable.l_10,
R.drawable.l_11,
R.drawable.l_12,
R.drawable.l_13,
R.drawable.l_14,
R.drawable.l_15,
R.drawable.l_16,
R.drawable.l_17
};
ELImageAdapter(Context context){
this.context=context;
}
@Override
public int getCount() {
return GalImages.length;
}
@Override
public boolean isViewFromObject(View view, Object object) {
return view == ((ImageView) object);
}
@Override
public Object instantiateItem(ViewGroup container, int position) {
ImageView imageView = new ImageView(context);
int padding = context.getResources().getDimensionPixelSize(R.dimen.activity_horizontal_margin);
imageView.setPadding(padding, padding, padding, padding);
imageView.setScaleType(ImageView.ScaleType.CENTER_INSIDE);
imageView.setImageResource(GalImages[position]);
((ViewPager) container).addView(imageView, 0);
return imageView;
}
@Override
public void destroyItem(ViewGroup container, int position, Object object) {
((ViewPager) container).removeView((ImageView) object);
}
}
我想分享图片..我正在使用viewpager 我怎么能得到图像ID分享。因为viewpager不支持onclickitemlistener属性。请建议我如何获得图像ID到dhare
答案 0 :(得分:0)
如果您实施FragmentStatePagerAdapter
,ViewPager
的每个页面都可以托管您设计Fragment
的实例,其布局以XML格式定义。这将允许您包含构建自定义共享UI所需的View
。
来自Creating Swipe Views with Tabs | Android Developers:
这最适合在未确定页数的对象集合中进行分页。它会在用户导航到其他页面时销毁片段,从而最大限度地减少内存使用。
例如,以下是您使用
FragmentStatePagerAdapter
在Fragment
个对象集合中滑动的方式:
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;
}
}
答案 1 :(得分:0)
在您的情况下,您可以更改每个页面选定事件的共享意图,如下所示:
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 :(得分:0)
如何让图片ID分享。?
使用ViewPager.getCurrentItem()
从ViewPager获取当前图片ID:
1。在ELImageAdapter
课程中创建一个方法,以获取当前所选的图片ID:
public int getImageId(int pos){
return GalImages[pos];
}
2。使用getImageId
方法中的适配器对象调用onCreateOptionsMenu
方法:
int currentPos=pager.getCurrentItem();
int currentImgId=adapter.getImageId(currentPos);
现在使用currentImgId
id分享所选图片。
答案 3 :(得分:0)
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:"));
如果适配器是CustomAdapter
为viewpager
创建网页的对象,myPager
是ViewPager
enter code here
的引用变量,而图像是存储图像路径的arraylist。