Android 如何在ImageButton上动态设置图像?

Android 如何在ImageButton上动态设置图像?,android,android-bitmap,android-imagebutton,Android,Android Bitmap,Android Imagebutton,我想在我的应用程序中的按钮上设置一个图像,动态地从SD卡上的文件中设置。我尝试过这个代码,但它不起作用。我尝试将图像转换为位图对象,并将该对象设置为ImageButton,但它没有显示任何内容。我如何解决这个问题 我的代码: @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activi

我想在我的应用程序中的按钮上设置一个图像,动态地从SD卡上的文件中设置。我尝试过这个代码,但它不起作用。我尝试将图像转换为位图对象,并将该对象设置为ImageButton,但它没有显示任何内容。我如何解决这个问题

我的代码:

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

    File  imageFile = new File("/sdcard0/DCIM/camera/jbn.jpg");
    Bitmap bmp = BitmapFactory.decodeFile(imageFile.getAbsolutePath());

    ImageButton button1 = (ImageButton)findViewById(R.id.imgBtn);
    button1.setImageBitmap(bmp);
}

   XML 

   <ImageButton
   android:layout_width="200dip"
   android:layout_height="200dip"
   android:id="@+id/imgBtn"
   />

尝试获取图像文件的绝对路径:

File  imageFile = new File("/sdcard0/DCIM/camera/jibin.jpg");
Bitmap bmp = BitmapFactory.decodeFile(imageFile.getAbsolutePath());

尝试获取图像文件的绝对路径:

File  imageFile = new File("/sdcard0/DCIM/camera/jibin.jpg");
Bitmap bmp = BitmapFactory.decodeFile(imageFile.getAbsolutePath());

你可以试试这样的东西-

    String path = Environment.getExternalStorageDirectory()
            + "/Images/test.jpg";

    File imgFile = new File(path);
    if (imgFile.exists()) {
        Bitmap myBitmap = BitmapFactory.decodeFile(imgFile
                .getAbsolutePath());
        ImageView imageView = (ImageView) findViewById(R.id.imageView);
        imageView.setImageBitmap(myBitmap);
    }

你可以试试这样的东西-

    String path = Environment.getExternalStorageDirectory()
            + "/Images/test.jpg";

    File imgFile = new File(path);
    if (imgFile.exists()) {
        Bitmap myBitmap = BitmapFactory.decodeFile(imgFile
                .getAbsolutePath());
        ImageView imageView = (ImageView) findViewById(R.id.imageView);
        imageView.setImageBitmap(myBitmap);
    }

如果要从任何URL动态设置图像,请按以下方式设置图像。您还可以设置位图的宽度和高度

private class LoadImage extends AsyncTask<Bundle, String, Bitmap> {
    Bitmap bitmap;
    @Override
    protected Bitmap doInBackground(Bundle... args) {
        extras=args[0];
        try {
            InputStream in = new java.net.URL("Enter your URL").openStream();
            bitmap = BitmapFactory.decodeStream(in);

        } catch (Exception e) {
            e.printStackTrace();
        }
        return bitmap;
    }

    protected void onPostExecute(Bitmap image) {
         imageButton.setImageBitmap(image);      
    }
}
私有类LoadImage扩展了异步任务{
位图;
@凌驾
受保护位图doInBackground(捆绑…args){
extras=args[0];
试一试{
InputStream in=new java.net.URL(“输入您的URL”).openStream();
位图=BitmapFactory.decodeStream(in);
}捕获(例外e){
e、 printStackTrace();
}
返回位图;
}
受保护的void onPostExecute(位图图像){
设置图像位图(图像);
}
}
如果您想从本地目录或资源文件夹中设置图像,则只需从文件夹中获取图像并在图像中设置,而无需将其转换为位图。
谢谢

如果您想从任何URL动态设置图像,请以这种方式设置图像。您还可以设置位图的宽度和高度

private class LoadImage extends AsyncTask<Bundle, String, Bitmap> {
    Bitmap bitmap;
    @Override
    protected Bitmap doInBackground(Bundle... args) {
        extras=args[0];
        try {
            InputStream in = new java.net.URL("Enter your URL").openStream();
            bitmap = BitmapFactory.decodeStream(in);

        } catch (Exception e) {
            e.printStackTrace();
        }
        return bitmap;
    }

    protected void onPostExecute(Bitmap image) {
         imageButton.setImageBitmap(image);      
    }
}
私有类LoadImage扩展了异步任务{
位图;
@凌驾
受保护位图doInBackground(捆绑…args){
extras=args[0];
试一试{
InputStream in=new java.net.URL(“输入您的URL”).openStream();
位图=BitmapFactory.decodeStream(in);
}捕获(例外e){
e、 printStackTrace();
}
返回位图;
}
受保护的void onPostExecute(位图图像){
设置图像位图(图像);
}
}
如果您想从本地目录或资源文件夹中设置图像,则只需从文件夹中获取图像并在图像中设置,而无需将其转换为位图。
谢谢

试着做一些简单的事情,比如:

String baseDir = Environment.getExternalStorageDirectory().getAbsolutePath();
String fileName = "jbn.jpg";
String pathName = baseDir + "/your/folder(s)/" +_ fileName; //maybe your folders are /DCIM/camera/

Bitmap bmp = BitmapFactory.decodeFile(pathName);
ImageButton button1 = (ImageButton)findViewById(R.id.imgBtn);
button1.setImageBitmap(bmp);

试着做一些简单的事情,例如:

String baseDir = Environment.getExternalStorageDirectory().getAbsolutePath();
String fileName = "jbn.jpg";
String pathName = baseDir + "/your/folder(s)/" +_ fileName; //maybe your folders are /DCIM/camera/

Bitmap bmp = BitmapFactory.decodeFile(pathName);
ImageButton button1 = (ImageButton)findViewById(R.id.imgBtn);
button1.setImageBitmap(bmp);


看看这个库,它帮了我很多…你能发布你的布局文件吗?你的jpg有多大?您添加了从文件系统读取文件的权限吗?@user3431672:我添加了读取权限,请查看我的编辑查看此库它对我帮助很大…您可以发布布局文件吗?你的jpg有多大?您添加了从文件系统读取文件的权限吗?@user3431672:我添加了读取权限,请查看我的编辑查看此库它对我帮助很大…您可以发布布局文件吗?你的jpg有多大?您添加了从文件系统读取文件的权限吗?@user3431672:我添加了读取权限,请查看我的editIt works!!Thanx.如何在ImageButton上动态设置用户最近保存在我设备的camera文件夹(通过拍摄快照)中的图像??(如果我不知道文件名,如何将设备摄像头拍摄的最后一张图像设置为“我的图像”按钮)您可以使用以下算法:1.从摄像头文件夹获取所有文件;2.获取文件的创建日期如下:和3.获取最新文件作为资源谢谢,我已经尝试了前两个步骤,现在我在我的相机目录中找到了上次修改文件的日期。如何获取最新文件作为资源??你能帮我吗?请查看我的编辑。请稍候,我将给你写一个简单的例子,这就是我所说的:我认为你应该遍历目录中的所有文件,看看哪个是最新的文件,因为它不确定这些文件是否按字母顺序排列。另外,我刚刚看到我在第13行中犯了一个错误->它是
file.lastModified()
with()它可以工作!!Thanx.如何在ImageButton上动态设置用户最近保存在我设备的camera文件夹(通过拍摄快照)中的图像??(如果我不知道文件名,如何将设备摄像头拍摄的最后一张图像设置为“我的图像”按钮)您可以使用以下算法:1.从摄像头文件夹获取所有文件;2.获取文件的创建日期如下:和3.获取最新文件作为资源谢谢,我已经尝试了前两个步骤,现在我在我的相机目录中找到了上次修改文件的日期。如何获取最新文件作为资源??你能帮我吗?请查看我的编辑。请稍候,我将给你写一个简单的例子,这就是我所说的:我认为你应该遍历目录中的所有文件,看看哪个是最新的文件,因为它不确定这些文件是否按字母顺序排列。另外,我刚刚看到我在第13行中犯了一个错误->它是
file.lastModified()
with()它可以工作!!Thanx.如何在ImageButton上动态设置用户最近保存在我设备的camera文件夹(通过拍摄快照)中的图像??(如果我不知道文件名,如何将设备摄像头拍摄的最后一张图像设置为“我的图像”按钮)您可以使用以下算法:1.从摄像头文件夹获取所有文件;2.获取文件的创建日期如下:和3.获取最新文件作为资源谢谢,我已经尝试了前两个步骤,现在我在我的相机目录中找到了上次修改文件的日期。如何获取最新文件作为资源??你能帮我吗?请查看我的编辑。请稍候,我将给你写一个简单的例子,这就是我所说的:我认为你应该遍历目录中的所有文件,看看哪个是最新的文件,因为它不确定这些文件是否按字母顺序排列。另外,我刚刚看到我在第13行中犯了一个错误->它是
file.lastModified()