Android 从 Java 设置 ImageView 源
Android Set ImageView Source from Java
我想在 Android、
中设置图像源
XML :
<ImageView
android:layout_width="200dp"
android:layout_height="300dp"
android:id="@+id/main"
android:src="@drawable/malayali"
android:layout_marginTop="100dp"
android:layout_marginLeft="80dp"
/>
Java :
public class MainActivity extends ActionBarActivity {
public SharedPreferences exactPreferences;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
exactPreferences = getSharedPreferences("details",MODE_PRIVATE);
getSupportActionBar().hide();
new RetriveIcon().execute(); //Api Calling & Storing value in SharedPreference
String value = exactPreferences.getString("main_url",null);
Log.i("from exactpreference",value); // Working fine !!! (http://www.exampple.com/storage/images/filename.jpeg)
ImageView banner = (ImageView)findViewById(R.id.main);
banner.setImageDrawable(getResources().getDrawable(R.drawable.value));
setContentView(R.layout.activity_main);
}
}
androidStudio 将以下值行中的错误显示为红色。
banner.setImageDrawable(getResources().getDrawable(R.drawable.value));
错误:
Cannot resolve symbol 'value'
我该如何解决这个错误?
试试这个:
String uri = "@drawable/myresource.png";
int imageResource = getResources().getIdentifier(uri, null, getPackageName());
imageview= (ImageView)findViewById(R.id.imageView);
Drawable res = getResources().getDrawable(imageResource);
imageView.setImageDrawable(res);
注意:这是示例代码。
如果您正在处理 Resources
文件夹中的可绘制对象名称,那么您的问题是这些选项之一:-
1)您的资源中没有 drawable
值。
确保它存在于您的资源文件夹中。
2)您在 activity
中导入了错误的 R
确保您导入的是 R
而非 android 应用程序。
如果您对图像使用直接 URL。我建议您为此使用 Universal Lazy Loader 第三方。您所要做的就是直接传递图像 URL 和 ImageView
它会为您完成工作。
在您的 Gradle
文件中 "Module:app"
dependencies {
compile 'com.nostra13.universalimageloader:universal-image-loader:1.9.3'
....
}
试试这个简单的代码
ImageView banner = (ImageView)findViewById(R.id.main);
banner.setBackgroundResource(R.drawable.value);
但图像名称必须是值并存储在您的可绘制文件夹中。
您是要从可绘制文件夹加载图像还是从 Internet 下载图像?
这个:
banner.setImageDrawable(getResources().getDrawable(R.drawable.value));
如果您的一个可绘制文件夹中有一个 value.png 文件,则可以使用。如果您尝试从网络加载图像(即像这样的东西:http://www.exampple.com/storage/images/filename.jpeg), you'll need to download it first and set the bitmap as an ImageView source. There are many 3rd party libraries doing this. Take a look at Picasso:
Picasso.with(this).load(value).into(banner);
编辑:
为了添加 Picasso,您需要更新 build.gradle
文件(指模块而非项目的文件)。你应该有这样的部分:
dependencies {
...
}
你需要在其中添加这一行:
compile 'com.squareup.picasso:picasso:2.5.2'
您想使用联机图像文件设置 imageview 的背景。您可以在项目中使用 this example。使用起来非常简单。
同样在你的代码中,你应该在从上面添加 类 之后更改一些行 link:
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
exactPreferences = getSharedPreferences("details",MODE_PRIVATE);
getSupportActionBar().hide();
new RetriveIcon().execute(); //Api Calling & Storing value in SharedPreference
String value = exactPreferences.getString("main_url",null);
Log.i("from exactpreference",value); // Working fine !!! (http://www.exampple.com/storage/images/filename.jpeg)
// ImageLoader class instance
ImageLoader imgLoader = new ImageLoader(getApplicationContext());
ImageView banner = (ImageView)findViewById(R.id.main);
imgLoader.DisplayImage(value, 0, banner);
}
祝你好运。
我想在 Android、
中设置图像源XML :
<ImageView
android:layout_width="200dp"
android:layout_height="300dp"
android:id="@+id/main"
android:src="@drawable/malayali"
android:layout_marginTop="100dp"
android:layout_marginLeft="80dp"
/>
Java :
public class MainActivity extends ActionBarActivity {
public SharedPreferences exactPreferences;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
exactPreferences = getSharedPreferences("details",MODE_PRIVATE);
getSupportActionBar().hide();
new RetriveIcon().execute(); //Api Calling & Storing value in SharedPreference
String value = exactPreferences.getString("main_url",null);
Log.i("from exactpreference",value); // Working fine !!! (http://www.exampple.com/storage/images/filename.jpeg)
ImageView banner = (ImageView)findViewById(R.id.main);
banner.setImageDrawable(getResources().getDrawable(R.drawable.value));
setContentView(R.layout.activity_main);
}
}
androidStudio 将以下值行中的错误显示为红色。
banner.setImageDrawable(getResources().getDrawable(R.drawable.value));
错误:
Cannot resolve symbol 'value'
我该如何解决这个错误?
试试这个:
String uri = "@drawable/myresource.png";
int imageResource = getResources().getIdentifier(uri, null, getPackageName());
imageview= (ImageView)findViewById(R.id.imageView);
Drawable res = getResources().getDrawable(imageResource);
imageView.setImageDrawable(res);
注意:这是示例代码。
如果您正在处理 Resources
文件夹中的可绘制对象名称,那么您的问题是这些选项之一:-
1)您的资源中没有 drawable
值。
确保它存在于您的资源文件夹中。
2)您在 activity
中导入了错误的 R
确保您导入的是 R
而非 android 应用程序。
如果您对图像使用直接 URL。我建议您为此使用 Universal Lazy Loader 第三方。您所要做的就是直接传递图像 URL 和 ImageView
它会为您完成工作。
在您的 Gradle
文件中 "Module:app"
dependencies {
compile 'com.nostra13.universalimageloader:universal-image-loader:1.9.3'
....
}
试试这个简单的代码
ImageView banner = (ImageView)findViewById(R.id.main);
banner.setBackgroundResource(R.drawable.value);
但图像名称必须是值并存储在您的可绘制文件夹中。
您是要从可绘制文件夹加载图像还是从 Internet 下载图像? 这个:
banner.setImageDrawable(getResources().getDrawable(R.drawable.value));
如果您的一个可绘制文件夹中有一个 value.png 文件,则可以使用。如果您尝试从网络加载图像(即像这样的东西:http://www.exampple.com/storage/images/filename.jpeg), you'll need to download it first and set the bitmap as an ImageView source. There are many 3rd party libraries doing this. Take a look at Picasso:
Picasso.with(this).load(value).into(banner);
编辑:
为了添加 Picasso,您需要更新 build.gradle
文件(指模块而非项目的文件)。你应该有这样的部分:
dependencies {
...
}
你需要在其中添加这一行:
compile 'com.squareup.picasso:picasso:2.5.2'
您想使用联机图像文件设置 imageview 的背景。您可以在项目中使用 this example。使用起来非常简单。
同样在你的代码中,你应该在从上面添加 类 之后更改一些行 link:
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
exactPreferences = getSharedPreferences("details",MODE_PRIVATE);
getSupportActionBar().hide();
new RetriveIcon().execute(); //Api Calling & Storing value in SharedPreference
String value = exactPreferences.getString("main_url",null);
Log.i("from exactpreference",value); // Working fine !!! (http://www.exampple.com/storage/images/filename.jpeg)
// ImageLoader class instance
ImageLoader imgLoader = new ImageLoader(getApplicationContext());
ImageView banner = (ImageView)findViewById(R.id.main);
imgLoader.DisplayImage(value, 0, banner);
}
祝你好运。