- android - 多次调用 OnPrimaryClipChangedListener
- android - 无法更新 RecyclerView 中的 TextView 字段
- android.database.CursorIndexOutOfBoundsException : Index 0 requested, 光标大小为 0
- android - 使用 AppCompat 时,我们是否需要明确指定其 UI 组件(Spinner、EditText)颜色
根据标题,我需要从运行时加载的 ImageView 中设置相对布局的背景图像,从 URL 读取。我试过outer.setBackground(background.getDrawable());但它对我不起作用:
//OUTER
RelativeLayout outer = (RelativeLayout)findViewById(R.id.outer);
//BACKGROUND
ImageView background = new ImageView(getApplicationContext());
Background reader = new Background(this, this, background);
reader.execute();
outer.setBackground(background.getDrawable());
加载器类:
public class Background extends AsyncTask<Void, Void, Bitmap> {
ImageView MyView = null;
ProgressDialog dialog;
private OnTaskComplete mlistener;
public Background(Context context, OnTaskComplete mlistener, ImageView view) {
this.mlistener = mlistener;
MyView = view;
}
@Override
protected Bitmap doInBackground(Void... params) {
Bitmap image = null;
try {
URL url = new URL("http://www.youth-stories.com/public/admin/CH_Settings/background.jpg");
image = BitmapFactory.decodeStream(url.openConnection().getInputStream());
} catch (IOException e) {
e.printStackTrace();
}
return image;
}
@Override
protected void onPostExecute(Bitmap bitmap) {
super.onPostExecute(bitmap);
mlistener.callBackFunction(bitmap);
MyView.setImageBitmap(bitmap);
}
}
public class Home extends ActionBarActivity implements OnTaskComplete, ScrollViewListener {
Scroller scrollview = null;
@Override
public void onScrollChanged(Scroller scrollView, int x, int y, int oldx, int oldy) {
// Toast.makeText(this,"sl",Toast.LENGTH_LONG).show();
list();
}
LinearLayout wrapper = null;
Context context = this;
public Bitmap imageHandler;
@Override
public void callBackFunction(Bitmap image) {
imageHandler = image;
/*
RelativeLayout outer = (RelativeLayout)findViewById(R.id.outer);
BitmapDrawable bd = new BitmapDrawable(getResources(), image);
outer.setBackground(bd);
*/
}
public class Post{
String id;
String title;
String description;
String release;
public String getTitle() {
return title;
}
public String getDescription() {
return description;
}
public String getRelease() {
return release;
}
public void setTitle(String title) {
this.title = title;
}
public void setDescription(String description) {
this.description = description;
}
public void setRelease(String release) {
this.release = release;
}
public void setId(String id) {
this.id = id;
}
public String getId() {
return id;
}
}
@Override
protected void onCreate(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_home);
//OUTER
RelativeLayout outer = (RelativeLayout)findViewById(R.id.outer);
//BACKGROUND
ImageView background = new ImageView(getApplicationContext());
Background reader = new Background(this, this, background);
reader.execute();
BitmapDrawable bd = new BitmapDrawable(getResources(), background);
outer.setBackground(bd);
//SCROLLER
Scroller scroller = new Scroller(this, this);
scroller.setLayoutParams(new RelativeLayout.LayoutParams(
RelativeLayout.LayoutParams.FILL_PARENT, RelativeLayout.LayoutParams.FILL_PARENT));
//WRAPPER
wrapper = new LinearLayout(this);
wrapper.setOrientation(LinearLayout.VERTICAL);
outer.addView(scroller);
scroller.addView(wrapper);
Globals.FOCUSON_PAGE = 0;
list();
}
public void list(){
ProgressDialog dialog = new ProgressDialog(context);
dialog.setMessage("loading contents, please wait..");
dialog.setCancelable(false);
dialog.show();
String result = null;
ArrayList<Post> focusOn = new ArrayList<Post>();
try {
URL address = new URL("http://www.youth-stories.com/api/focusOnAll.php");
URLDataReader reader = new URLDataReader(context);
result = reader.execute(address).get();
}catch (IOException e){
e.printStackTrace();
} catch(InterruptedException e){
e.printStackTrace();
} catch (ExecutionException e){
e.printStackTrace();
}
try {
JSONObject obj = new JSONObject(result);
String success = (String) obj.getString("success");
JSONArray records = obj.getJSONArray("records");
int start = (Globals.FOCUSON_PAGE * Globals.FOCUSON_STEP);
int limit = start + Globals.FOCUSON_STEP;
for(int i = start ; i < limit; i++) {
Post tmp = new Post();
tmp.setId(records.getJSONObject(i).getString("id"));
tmp.setTitle(records.getJSONObject(i).getString("title"));
tmp.setDescription(records.getJSONObject(i).getString("contents"));
tmp.setRelease(records.getJSONObject(i).getString("data_post"));
focusOn.add(tmp);
}
}catch (JSONException e){
e.printStackTrace();
}
//wrapper
LinearLayout container = wrapper;
for(int i = 0; i < focusOn.size(); i++) {
//item
LinearLayout item = new LinearLayout(getApplicationContext());
String select = focusOn.get(i).getId();
item.setId(new Integer(select));
item.setClickable(true);
//setUp new activity
final Intent intent = new Intent(getApplicationContext(),HomeOnSelect.class);
Bundle bundle = new Bundle();
int id = item.getId();
String strid = new Integer(id).toString();
bundle.putString("id", strid);
bundle.putString("title", focusOn.get(i).getTitle());
bundle.putString("contents", focusOn.get(i).getDescription());
bundle.putString("release", focusOn.get(i).getRelease());
intent.putExtras(bundle);
item.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
startActivity(intent);
}
});
container.addView(item);
item.setOrientation(LinearLayout.HORIZONTAL);
item.setPadding(0, 40, 0, 40);
item.setGravity(Gravity.CENTER_VERTICAL);
item.setBackgroundResource(R.drawable.postlayout);
//image
ImageView asset = new ImageView(getApplicationContext());
URL address = null;
try {
address = new URL("http://www.youth-stories.com/public/admin/CH_FocusOn/images/" + focusOn.get(i).getId() + "_thumb2.jpg");
URLImageReader reader = new URLImageReader(this, this, asset, dialog, i, focusOn.size());
reader.execute(address);
} catch (MalformedURLException e) {
e.printStackTrace();
}
item.addView(asset);
LinearLayout.LayoutParams imgSettings = new LinearLayout.LayoutParams(300, 300);
asset.setLayoutParams(imgSettings);
asset.setPadding(50,0,0,0);
//inside
LinearLayout contents = new LinearLayout(getApplicationContext());
contents.setOrientation(LinearLayout.VERTICAL);
contents.setPadding(55, 0, 100, 0);
item.addView(contents);
//title
TextView title = new TextView(getApplicationContext());
title.setText(focusOn.get(i).getTitle());
title.setTextAppearance(this, R.style.title);
contents.addView(title);
//description
TextView description = new TextView(getApplicationContext());
description.setText(focusOn.get(i).getDescription());
description.setTextAppearance(this, R.style.description);
contents.addView(description);
//date
TextView date = new TextView(getApplicationContext());
date.setText(focusOn.get(i).getRelease());
date.setTextAppearance(this, R.style.description);
contents.addView(date);
//div
LinearLayout div = new LinearLayout(getApplicationContext());
div.setLayoutParams(new LinearLayout.LayoutParams(200, 40));
div.setBackgroundColor(Color.parseColor("#00000000"));
container.addView(div);
}
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
MenuInflater inflater = getMenuInflater();
inflater.inflate(R.menu.menu_home, menu);
SearchManager searchManager = (SearchManager) getSystemService(Context.SEARCH_SERVICE);
SearchView searchView = (SearchView) menu.findItem(R.id.search).getActionView();
return true;
}
@Override
public boolean onOptionsItemSelected(MenuItem item){
switch(item.getItemId()){
case R.id.search:
return true;
default:
return super.onOptionsItemSelected(item);
}
}
}
最佳答案
您的Activity
实现OnTaskComplete
接口(interface),并在onPostExecute
上调用callBackFunction(bitmap)
。您需要的是将所有与后台相关的逻辑移至此方法内。
例如
public void callBackFunction(Bitmap bitmap) {
RelativeLayout outer = (RelativeLayout)findViewById(R.id.outer);
BitmapDrawable bd = new BitmapDrawable(getResources(), bitmap);
outer.setBackground(bd);
}
关于java - 从 ImageView 设置背景图像,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28894329/
我正在尝试创建一个演示应用程序,我想在其中创建一个 ImageView ,该 ImageView 相互重叠,x 和 y 坐标略有变化(类似于所有纸牌相互重叠的任何纸牌游戏,但我们可以看到数字)。如果用
您好,我有一个要求,我需要通过拖动 ImageView 的右角来调整 ImageView 的大小和旋转 ImageView 。 我可以通过拖动 ImageView 的角成功地调整 ImageView
我目前正在尝试使用 JavaFX 在 ImageView 中居中图像。 所以我在 View 中加载图像: Image img = new Image("..."); imageView.setImag
我有一个非常简单的问题要问:我需要在屏幕右下角的 ImageView 上放一个小 Logo ,整个屏幕都很大,但我不知道如何设置坐标或如何设置说 ImageViews 处于相对位置。 像这样: 最佳答
我想像这样制作一个 ImageView 覆盖另一个 ImageView;只有一半的绿色圆圈覆盖了图像: 我试过使用 RelativeLayout 并将两个 ImageView 都放在里面。然后我使用
我们如何使 ImageView 的宽度和高度等于父 ConstraintLayout 的宽度?所以它显示一个全宽的方形 ImageView。 通常如何设置某个小部件的高度等于其他小部件的宽度? 最佳答
有点像刽子手 如果 ImageView 中有东西,如何跳过 ImageView 并检查其中是否有东西尝试检查 imageView 中是否有图像 代码 final boolean imageT
我正在用 swift 制作一种“保持在线条之间”iPhone 应用程序,我有一个移动 ImageView 和 2 个代表线条的 ImageView 。如何检测移动 ImageView 何时撞击或接触线
我正在做一个应用程序,用户通过单击图像(ImageView1)可以在另一个ImageView2中看到它。所以我尝试在变量中获取 ImageView1 的图像 BufferedImage img= Sw
我有以下看法: 如果我点击任何 ImageButton 以全屏模式显示相应的图像。例如,如果我点击 Black ,它会显示 ImageView ,如: 我还为一些图像按钮将背景设置为全屏颜色:如果我单
我在名为 DialButton2 的类中扩展了 ImageView 类(不要担心类的名称,它无关紧要)。 DialButton2 类所做的只是显示位于可绘制文件夹中的任 Intent 像。 packa
我正在使用 Xcode 8.1 和 swift 3.0 开发应用。 使用 Storyboard ,我扩展了一个 ImageView 以占据整个 View ,并为其设置了一张图片以用作背景图像(使用 s
如何将我的 imageView 裁剪成我在项目中有图像的气泡形状。 最佳答案 以下是调整大小或裁剪图像的简单代码,您只需根据需要为图像传递高度或宽度即可: 获取裁剪图像: UIImage *cropp
我有 92 张图像,我希望有一个指示符(例如复选标记)来指示图像已解锁。我在 .png 文件中有复选标记,我首先尝试的是为每个图像制作单独的副本,并将复选标记放在 Photoshop 中的图像顶部。但
我有两个 ImageView ,它们看起来像这样。我想将 TouchListener 添加到 imageview1。但听众无法正常工作。我正在将 imageview2 添加到 android:foc
我有一个列表布局,其中包含如下所示的项目: 首先有一个 ImageView(灯光),然后是两个 textView。所有这些都在 TableLayout 中。 (来源:http://code.googl
我想知道如何将 ImageView 元素添加到 JavaFx 2.1 中的区域元素。 也许我把这个元素的用法弄错了,但 AFAIK 它也是子元素的容器。 背景是我需要一个定义大小的区域,该区域应显示独
我在调整 StackPane 中的 ImageView 大小时遇到了问题:如果 StackPane 是根容器并且我将图像的高度和宽度绑定(bind)到 StackPane,那么一切都很好。
** 我有两个 ImageView ,一个用于背景,一个用于前景,我正在前景 ImageView 上绘图。对于删除功能,我这样做是因为我不想在删除时删除背景图像。它正在执行很好。现在我想保存该图像(背
我正在尝试为 watch 应用程序创建 ImageView ,我正在尝试以编程方式创建,但经典 View Controller 中使用的代码不起作用。 let imageName = "yourIma
我是一名优秀的程序员,十分优秀!