gpt4 book ai didi

android - 如何将水平 ScrollView 中的图像设置到android中的viewpager中?

转载 作者:行者123 更新时间:2023-11-29 20:58:02 25 4
gpt4 key购买 nike

我编写了一个程序,在其中显示图像的 GridView ,当我单击图像时,另一个 Activity 打开,其中有一个 viewpager 来滑动我的图像,并且在同一页面的底部还有一个水平 ScrollView 具有与我的 gridview 中看到的相同的图像,直到这里一切正常,是的,所有图像都从我的 sdcard 中读取现在,当我点击我的水平 ScrollView 中的图像时,显示在我的 viewpager 中的图像应该改变,例如,像 s4 的画廊,所以我不知道该怎么做,需要一些帮助

我的代码:在我的 imageview.onclick 中,我已经用我的 viewpager 设置了当前项目位置,但它不起作用

public class FullScreenViewActivity extends Activity {

private Utils utils;
private FullScreenImageAdapter adapter;
private ViewPager viewPager;
LinearLayout myGallery;
ImageView iView;
int i;
String path;
int id;
File[] files;
HorizontalScrollView scrollView;
int position;

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_fullscreen_view);

viewPager = (ViewPager) findViewById(R.id.pager);
myGallery = (LinearLayout) findViewById(R.id.mygallery);
scrollView = (HorizontalScrollView) findViewById(R.id.horizontal1);
scrollView.setBackground(getResources().getDrawable(R.drawable.border));
String ExternalStorageDirectoryPath = Environment
.getExternalStorageDirectory().getAbsolutePath();

String targetPath = ExternalStorageDirectoryPath + "/Pictures/raw";
Toast.makeText(getApplicationContext(), targetPath, Toast.LENGTH_LONG)
.show();
File targetDirector = new File(targetPath);

files = targetDirector.listFiles();

for (File file : files) {

myGallery.addView(insertPhoto(file.getAbsolutePath()));

}

utils = new Utils(getApplicationContext());

Intent i = getIntent();
position = i.getIntExtra("position", 0);

adapter = new FullScreenImageAdapter(FullScreenViewActivity.this,
utils.getFilePaths());

viewPager.setAdapter(adapter);

// displaying selected image first
viewPager.setCurrentItem(position);
}

private View insertPhoto(final String path) {

final Bitmap bm = decodeSampledBitmapFromUri(path, 220, 220);

LinearLayout layout = new LinearLayout(getApplicationContext());
layout.setLayoutParams(new LayoutParams(250, 250));
layout.setGravity(Gravity.CENTER);

ImageView imageView = new ImageView(getApplicationContext());
imageView.setLayoutParams(new LayoutParams(220, 220));
imageView.setScaleType(ImageView.ScaleType.CENTER_CROP);
imageView.setImageBitmap(bm);

// imageView.setId(i);
// iView.setId(i);
// viewPager.setId(i);

imageView.setOnClickListener(new View.OnClickListener() {

@Override
public void onClick(View v) {
int id = v.getId();
viewPager.setCurrentItem(id);

}

});

layout.addView(imageView);

return layout;
}

public Bitmap decodeSampledBitmapFromUri(String path, int reqWidth,
int reqHeight) {

Bitmap bm = null;

// First decode with inJustDecodeBounds=true to check dimensions final
BitmapFactory.Options options = new BitmapFactory.Options();
options.inJustDecodeBounds = true;
BitmapFactory.decodeFile(path, options);

// Calculate inSampleSize
options.inSampleSize = calculateInSampleSize(options, reqWidth,
reqHeight);

// Decode bitmap with inSampleSize set
options.inJustDecodeBounds = false;
bm = BitmapFactory.decodeFile(path, options);

return bm;
}

任何建议都会有很大帮助谢谢你

最佳答案

在下面的代码中,id 似乎与 viewpager 的索引不同

 imageView.setOnClickListener(new View.OnClickListener() {

@Override
public void onClick(View v) {
int id = v.getId();
viewPager.setCurrentItem(id);

}

});

也许您可以使用一个arrayList 来放置所有图像,并根据arrayList 顺序创建水平 ScrollView 和viewpager。因此,当您单击图像时,您将获得 Arraylist 的索引,然后传递给将设置其当前 fragment 的 viewpager,因为顺序将始终相同。

关于android - 如何将水平 ScrollView 中的图像设置到android中的viewpager中?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27040736/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com