Android:SD卡上的ViewPager图库
我有一些ViewPager图库的代码,但是图像是从drawable文件夹中获取的,而我需要它们从SD卡上的文件夹中获取Android:SD卡上的ViewPager图库,android,gallery,sd-card,Android,Gallery,Sd Card,我有一些ViewPager图库的代码,但是图像是从drawable文件夹中获取的,而我需要它们从SD卡上的文件夹中获取 protected Integer[] mImageIds = { R.drawable.sample_1, R.drawable.sample_2, R.drawable.sample_3, R.drawable.sample_4, R.drawable.sample_5, R.d
protected Integer[] mImageIds = {
R.drawable.sample_1,
R.drawable.sample_2,
R.drawable.sample_3,
R.drawable.sample_4,
R.drawable.sample_5,
R.drawable.sample_6,
R.drawable.sample_7
};
这是需要更改的代码,如何用SD卡中的图像替换drawable文件夹中的这些代码
完整代码
import android.app.Activity;
import android.content.Context;
import android.content.res.TypedArray;
import android.database.Cursor;
import android.os.Bundle;
import android.os.Handler;
import android.provider.MediaStore;
import android.support.v4.app.Fragment;
import android.support.v4.app.FragmentActivity;
import android.support.v4.app.FragmentManager;
import android.support.v4.app.FragmentPagerAdapter;
import android.support.v4.view.PagerAdapter;
import android.support.v4.view.ViewPager;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.*;
public class Main extends FragmentActivity implements AdapterView.OnItemSelectedListener, ViewPager.OnPageChangeListener {
private ViewPager viewPager;
private Gallery gallery;
protected Integer[] mImageIds = {
R.drawable.sample_1,
R.drawable.sample_2,
R.drawable.sample_3,
R.drawable.sample_4,
R.drawable.sample_5,
R.drawable.sample_6,
R.drawable.sample_7
};
private TextView textView;
private Handler handler;
/**
* Called when the activity is first created.
*/
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
viewPager = (ViewPager) findViewById(R.id.view_pager);
viewPager.setAdapter(new MyAdapter(getSupportFragmentManager()));
viewPager.setOnPageChangeListener(this);
gallery = (Gallery) findViewById(R.id.gallery);
gallery.setAdapter(new ImageAdapter());
gallery.setOnItemSelectedListener(this);
textView = (TextView) findViewById(R.id.title);
handler = new Handler();
}
// gallery item selected
public void onItemSelected(AdapterView<?> adapterView, View view, int i, long l) {
updateUI(i);
}
// view pager item selected
public void onPageSelected(int i) {
updateUI(i);
}
private void updateUI(final int i) {
handler.post(new Runnable() {
public void run() {
gallery.setSelection(i);
viewPager.setCurrentItem(i);
textView.setText("Photo #" + i);
}
});
}
public void onNothingSelected(AdapterView<?> adapterView) { }
public void onPageScrolled(int i, float v, int i1) { }
public void onPageScrollStateChanged(int i) { }
public class ImageAdapter extends BaseAdapter {
public int getCount() {
return mImageIds.length;
}
public Object getItem(int position) {
return position;
}
public long getItemId(int position) {
return position;
}
public View getView(int position, View convertView, ViewGroup parent) {
ImageView imageView = new ImageView(Main.this);
imageView.setImageResource(mImageIds[position]);
imageView.setLayoutParams(new Gallery.LayoutParams(150, 100));
imageView.setScaleType(ImageView.ScaleType.FIT_XY);
return imageView;
}
}
public class MyAdapter extends FragmentPagerAdapter {
public MyAdapter(FragmentManager fm) {
super(fm);
}
@Override
public int getCount() {
return mImageIds.length;
}
@Override
public Fragment getItem(final int position) {
return new Fragment() {
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
ImageView imageView = new ImageView(Main.this);
imageView.setImageResource(mImageIds[position]);
return imageView;
}
};
}
}
}
导入android.app.Activity;
导入android.content.Context;
导入android.content.res.TypedArray;
导入android.database.Cursor;
导入android.os.Bundle;
导入android.os.Handler;
导入android.provider.MediaStore;
导入android.support.v4.app.Fragment;
导入android.support.v4.app.FragmentActivity;
导入android.support.v4.app.FragmentManager;
导入android.support.v4.app.FragmentPagerAdapter;
导入android.support.v4.view.PagerAdapter;
导入android.support.v4.view.ViewPager;
导入android.view.LayoutInflater;
导入android.view.view;
导入android.view.ViewGroup;
导入android.widget.*;
公共类Main扩展FragmentActivity实现AdapterView.OnItemSelectedListener、ViewPager.OnPageChangeListener{
私人视页机视页机;
私人画廊;
受保护的整数[]图像ID={
R.可拉拔样品1,
R.可拉拔样品2,
R.可拉拔样品3,
R.drawable.sample_4,
R.可拉拔样品_5,
R.drawable.sample_6,
R.可拉拔样品7
};
私有文本视图文本视图;
私人经办人;
/**
*在首次创建活动时调用。
*/
@凌驾
创建时的公共void(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
viewPager=(viewPager)findViewById(R.id.view\u pager);
setAdapter(新的MyAdapter(getSupportFragmentManager());
viewPager.setOnPageChangeListener(此);
画廊=(画廊)findViewById(R.id.gallery);
setAdapter(新的ImageAdapter());
gallery.setOnItemSelectedListener(此);
textView=(textView)findViewById(R.id.title);
handler=新的handler();
}
//选定的库项目
已选择公共视图(AdapterView AdapterView、View视图、int i、long l){
更新(i);
}
//查看所选的寻呼机项目
已选择页面上的公共无效(int i){
更新(i);
}
私有void updateUI(最终整数i){
handler.post(新的Runnable(){
公开募捐{
旁听席:选举(一);
viewPager.setCurrentItem(i);
textView.setText(“Photo#”+i);
}
});
}
未选公共无效(AdapterView AdapterView){}
页面上的公共无效已滚动(int i,float v,int i1){}
公共无效onPageScrollStateChanged(int i){}
公共类ImageAdapter扩展了BaseAdapter{
public int getCount(){
返回mImageIds.length;
}
公共对象getItem(int位置){
返回位置;
}
公共长getItemId(int位置){
返回位置;
}
公共视图getView(int位置、视图转换视图、视图组父视图){
ImageView ImageView=新的ImageView(Main.this);
setImageResource(mimageId[position]);
imageView.setLayoutParams(新的Gallery.LayoutParams(150100));
imageView.setScaleType(imageView.ScaleType.FIT_XY);
返回图像视图;
}
}
公共类MyAdapter扩展了FragmentPagerAdapter{
公共MyAdapter(FragmentManager fm){
超级(fm);
}
@凌驾
public int getCount(){
返回mImageIds.length;
}
@凌驾
公共片段getItem(最终int位置){
返回新片段(){
@凌驾
CreateView上的公共视图(布局、充气机、视图组容器、捆绑包保存状态){
ImageView ImageView=新的ImageView(Main.this);
setImageResource(mimageId[position]);
返回图像视图;
}
};
}
}
}
不要调用setImageResource
,而是使用从SD卡加载的位图调用setImageDrawable
。例如,从SD卡路径创建位图
,然后setImageDrawable
:
Bitmap bitmap = BitmapFactory.decodeFile(path_of_file);
imageView.setImageDrawable(bitmap);
注意,图像解码不应该在UI线程中完成。android文档讨论了这一点。所讨论的AsyncTask
可以通过一行或两行更改来修改,以满足您的需要