从SD卡或内部存储显示图像查看寻呼机android
问题描述:
有一个活动,从可绘制的文件夹中读取图像,并在幻灯片放映视图中显示它们。下面是我的代码。现在我想从我的SD卡或内部存储器中显示图像到viewpager。在下面的代码中应该做些什么改变才能读取SD卡或内部存储器中的图像,并将它们以幻灯片的形式显示在viewpager中。从SD卡或内部存储显示图像查看寻呼机android
活动
public class MainActivity extends AppCompatActivity {
ViewPager viewPager;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
requestWindowFeature(Window.FEATURE_NO_TITLE);
setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE);
getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN, WindowManager.LayoutParams.FLAG_FULLSCREEN);
getWindow().addFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON);
setContentView(R.layout.activity_main);
viewPager = (ViewPager) findViewById(R.id.viewPager);
ViewPagerAdapter viewPagerAdapter = new ViewPagerAdapter(this);
viewPager.setAdapter(viewPagerAdapter);
Timer timer = new Timer();
timer.scheduleAtFixedRate(new MyTimerTask(), 3000,3000);
}
public class MyTimerTask extends TimerTask {
@Override
public void run() {
MainActivity.this.runOnUiThread(new Runnable() {
@Override
public void run() {
if (viewPager.getCurrentItem() == 0) {
viewPager.setCurrentItem(1);
} else if (viewPager.getCurrentItem() == 1) {
viewPager.setCurrentItem(2);
} else if (viewPager.getCurrentItem() == 2) {
viewPager.setCurrentItem(3);
} else if (viewPager.getCurrentItem() == 3) {
viewPager.setCurrentItem(4);
} else {
viewPager.setCurrentItem(0);
}
}
;
});
}
}
}
ViewPagerAdapter
public class ViewPagerAdapter extends PagerAdapter {
private Context context;
private LayoutInflater layoutInflater;
private Integer [] images = {R.drawable.index1,R.drawable.index2,R.drawable.index3,R.drawable.index4,R.drawable.index5};
public ViewPagerAdapter(Context context) {
this.context = context;
}
@Override
public int getCount() {
return images.length;
}
@Override
public boolean isViewFromObject(View view, Object object) {
return view == object;
}
@Override
public Object instantiateItem(ViewGroup container, final int position) {
layoutInflater = (LayoutInflater) context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
View view = layoutInflater.inflate(R.layout.custom_layout, null);
ImageView imageView = (ImageView) view.findViewById(R.id.imageView);
imageView.setImageResource(images[position]);
ViewPager vp = (ViewPager) container;
vp.addView(view, 0);
return view;
}
@Override
public void destroyItem(ViewGroup container, int position, Object object) {
ViewPager vp = (ViewPager) container;
View view = (View) object;
vp.removeView(view);
}
}
答
您可以使用毕加索从SD卡载入图像。莅临指导:
Picasso Library
你的情况:
String baseDir = Environment.getExternalStorageDirectory().getAbsolutePath(); // retrieve the storage dir
Picasso.with(context).load(new File(baseDir + File.separator + your_filename)).into(imageView);
检查了这一点:https://stackoverflow.com/a/11237382/5402482 –
太复杂了,林困惑 – emin
@emin,首先需要基本上有一个函数来将图像加载为位图。之后,你可以把它们放在任何你想要的地方。 –