Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/228.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android:SD卡上的ViewPager图库_Android_Gallery_Sd Card - Fatal编程技术网

Android:SD卡上的ViewPager图库

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

我有一些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.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
可以通过一行或两行更改来修改,以满足您的需要