小编Fel*_*ann的帖子

如何判断我的上下文是否仍然有效?

我现在正处理一个相当常见的情况 - 通过网络下载一些数据,然后更新视图以显示它.显然,我想在后台进行Web下载,然后在主UI线程上更新视图.现在看看我的代码,我有点担心我的Activity和它的UI元素在我更新它们之前被杀掉了.这是我心中的本质:

Thread update = new Thread() {
    public void run() {
        final Data newData = requestData();                     
        if (newData != null) {
            post(new Runnable() {
                public void run() {
                    Toast.makeText(MyClass.this, "I'll do things here that depend on my context and views being valid", Toast.LENGTH_SHORT).show();
                }
            });
        }
    }
};
update.start();
Run Code Online (Sandbox Code Playgroud)

似乎有可能在我下载数据时,活动可能会被破坏.那么会发生什么?我的线程会继续执行吗?我最终会尝试访问死对象吗?

通常我是通过AsycTask来做的,但这次工作看起来很简单,只是内联线程启动线程的东西.我会通过使用AsyncTask来改善目标吗?

java android

12
推荐指数
3
解决办法
8830
查看次数

RecyclerView在回收时会导致问题

我有一个我创建的项目列表RecyclerView.当用户点击其中一个时,我会更改所选项目的背景颜色.问题是,当我滚动浏览我的项目并且它们被回收时,一些项目会获得所选项目的背景颜色(这是错误的).在这里你可以看到我Adapter的代码:

public class OrderAdapter extends RecyclerView.Adapter<OrderAdapter.ViewHolder> {

private static final String SELECTED_COLOR = "#ffedcc";

private List<OrderModel> mOrders;

public OrderAdapter() {
    this.mOrders = new ArrayList<>();
}

public void setOrders(List<OrderModel> orders) {
    mOrders = orders;
}

public void addOrders(List<OrderModel> orders) {
    mOrders.addAll(0, orders);
}

public void addOrder(OrderModel order) {
    mOrders.add(0, order);
}

@Override
public ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
    Context context = parent.getContext();
    LayoutInflater inflater = LayoutInflater.from(context);

    // Inflate the custom layout
    View contactView = inflater.inflate(R.layout.order_main_item, parent, …
Run Code Online (Sandbox Code Playgroud)

android android-recyclerview recyclerview-layout

11
推荐指数
1
解决办法
1万
查看次数

负边框 (css)

我知道如何用 css 制作一个如下所示的边框:

    ___________
  _/           \_
 /               \
|                 |
|                 |
Run Code Online (Sandbox Code Playgroud)

但是是否有可能制作一个看起来像这样的边框:

|\_             _/|
|  \___________/  |
|                 |
|                 |
Run Code Online (Sandbox Code Playgroud)

提前致谢!

html css

4
推荐指数
1
解决办法
2万
查看次数

返回的类实例的 JSDoc 类型

我将 Node.js 与两个模块和一个依赖于它们的脚本一起使用:

库/Bar.js

module.exports = class Bar {
  // ..
};
Run Code Online (Sandbox Code Playgroud)

库/Foo.js

const Bar = require('./Bar.js');

module.exports = class Foo {
  /**
   * @return {Bar} A Bar instance
  */
  get someBar() {
    return new Bar();
  }
};
Run Code Online (Sandbox Code Playgroud)

主文件

const Foo = require('./lib/Foo.js');

checkFoo(new Foo());

/**
 * @param {Foo} foo A Foo instance
*/
function checkFoo(foo) {
  foo. // I get suggestions for Foo properties
  foo.someBar. // I get suggestions for Bar properties

  checkBar(foo.someBar);
}

/**
 * @param {Bar} bar …
Run Code Online (Sandbox Code Playgroud)

node.js jsdoc jsdoc3 visual-studio-code es6-modules

4
推荐指数
1
解决办法
3597
查看次数

Android共享元素到对话actvitiy

我有一个活动,其中包含一个工具栏中的图像,以及一个活动,其主题就像一个具有相同图像的对话框.这些是布局文件:

my_activity.xml:

...

<com.makeramen.roundedimageview.RoundedImageView
    android:id="@+id/my_image"
    android:layout_width="40dp"
    android:layout_height="40dp"
    android:scaleType="centerCrop"
    android:src="@drawable/my_drawable"
    android:transitionName="@string/my_image_transition"
    app:riv_oval="true" />

...
Run Code Online (Sandbox Code Playgroud)

my_dialog_activity.xml:

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical">

    <ImageView
        android:id="@id/my_image"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:scaleType="centerCrop"
        android:src="@drawable/my_drawable"
        android:tint="@color/accent"
        android:transitionName="@string/my_image_transition" />

</LinearLayout>
Run Code Online (Sandbox Code Playgroud)

通过在清单中应用此主题,对话框活动变为对话框:

<style name="MyDialogActivity" parent="Theme.AppCompat.Light.Dialog.MinWidth">
    <item name="windowNoTitle">true</item>
    <item name="android:windowMinWidthMajor">@dimen/abc_dialog_min_width_major</item>
    <item name="android:windowMinWidthMinor">@dimen/abc_dialog_min_width_minor</item>
</style>
Run Code Online (Sandbox Code Playgroud)

活动和对话框看起来都是我希望它们看起来的样子.

现在我想用这些ImageView实现共享元素动画:当用户点击第一个活动的图像时,它必须增长并移动到屏幕中间,以便它适合更大的对话框图像.

所以我写了这段代码:

Intent intent = new Intent(MyActivity.this, MyDialogActivity.class);

if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {
    ActivityOptionsCompat options = ActivityOptionsCompat.makeSceneTransitionAnimation(
        MyActivity.this, v, getString(R.string.my_image_transition)
    );
    startActivityForResult(intent, 999, options.toBundle());
} else {
    startActivityForResult(intent, 999);
}
Run Code Online (Sandbox Code Playgroud)

动画确实发生了,但移动的图像仅在对话框区域内可见.因此,您会看到来自对话框左上角的图像,但您没有看到它从对话框外的第一个活动移动.

这是一个HTML版本,它应该是什么样子以及它目前的样子:https://jsfiddle.net/wutqdh9d/1/

android android-dialog android-activity

2
推荐指数
1
解决办法
1528
查看次数

如何创建一个圆形绘图?

如何创建一个drawable圆圈,蓝色笔划为5像素,透明填充.

我将把它传给drawable一个人ItemizedOverlay.

我想用代码做这个,我会知道圆的半径.

android drawable android-drawable

0
推荐指数
1
解决办法
9249
查看次数