小编azi*_*ian的帖子

isAttachedToWindow() 返回 false

谁能解释为什么isAttachedToWindow()false而不是true?我似乎有附件问题。

据我了解,setContentView(rl)应该将其附加RelativeLayout到窗户上。我缺少什么?

public class TestActivity extends Activity {
    protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);

            final RelativeLayout rl = new RelativeLayout(this);
            setContentView(rl);
            boolean isAttached = rl.isAttachedToWindow();
    }
}
Run Code Online (Sandbox Code Playgroud)

android android-view

5
推荐指数
1
解决办法
2449
查看次数

LifecycleObserver无法正常工作

没有调用Observer方法.我ViewPagerCycler按照旧学校的方式测试并且工作完美.感谢帮助.

public final class ViewPagerCycler implements LifecycleObserver {

    private static final int PERIOD = 3000;

    private Timer mTimer;
    private TimerTask mTask;
    private Activity mActivity;
    private ViewPager mPager;

    public ViewPagerCycler(Activity activity, ViewPager pager) {
        mActivity = activity;
        mPager = pager;
    }

    @OnLifecycleEvent(Lifecycle.Event.ON_RESUME) public void start() {
        int count = mPager
            .getAdapter()
            .getCount();

        mTimer = new Timer();
        mTask = new TimerTask() {
            @Override public void run() {
                mActivity.runOnUiThread(new TimerTask() {
                    @Override public void run() {
                        mPager.setCurrentItem((mPager.getCurrentItem() + 1) % count, …
Run Code Online (Sandbox Code Playgroud)

android android-lifecycle android-architecture-components

5
推荐指数
2
解决办法
7568
查看次数

Gradle 3.0.0 alpha变体输出问题

我希望在构建类型中使用不同versionCodedebug构建类型而不是release构建类型.这曾经在Gradle Android插件v2.3.2(Gradle v3.3)中使用下面的配置工作,但现在在v3.0.0-alpha5(Gradle v4.1-milestone-1)中没有任何效果.关于最新的Gradle插件中哪些内容发生了变化的想法让它忽略了variant.mergedFlavor.versionCode属性?

buildTypes {    
      debug {
                applicationIdSuffix ".debug"
                versionNameSuffix "-" + buildTime()
                android.applicationVariants.all { variant ->
                    if (variant.buildType.name != buildTypes.debug.name) return
                    variant.outputs.all {
                        outputFileName = "${archivesBaseName}-${variant.name}-v${variant.versionName}-signed.apk"
                        variant.mergedFlavor.versionCode = Integer.parseInt(buildTimeSmall())
                    }
                }
            }
}
Run Code Online (Sandbox Code Playgroud)

groovy android gradle build.gradle android-gradle-plugin

5
推荐指数
1
解决办法
1831
查看次数

如何从屏幕的底部到顶部为ConstraintLayout设置动画?

我一直在寻找ConstraintLayout从A点到B点动画对象的最简单方法,能够改变其持续时间和加速度.例如,在屏幕上设置约束的情况下,将布局/视图从屏幕底部移动到其预期位置.我无法找到如何为对象做到这一点ConstraintLayout.任何人都可以指出我正确的方向?谢谢.

animation android android-animation kotlin android-constraintlayout

5
推荐指数
1
解决办法
5064
查看次数

重新启动AnimatedVectorDrawableCompat的AnimatorSet

这是我需要实现的效果AnimatedVectorDrawableCompat

vector_drawable_anim.xml

<animated-vector xmlns:android="http://schemas.android.com/apk/res/android"
                 android:drawable="@drawable/vector_drawable">
    <target
        android:name="star"
        android:animation="@animator/star_anim"/>
</animated-vector>
Run Code Online (Sandbox Code Playgroud)

vector_drawable.xml

<vector xmlns:android="http://schemas.android.com/apk/res/android"
        android:width="500px"
        android:height="500px"
        android:viewportHeight="500"
        android:viewportWidth="500">
    <group
        android:name="star_group"
        android:scaleX="5.0"
        android:scaleY="5.0">
        <path
            android:name="star"
            android:pathData="M 50.0,90.0 L 82.9193546357,27.2774101308 L 12.5993502926,35.8158045183 Z"
            android:strokeColor="@color/colorAccent"
            android:strokeWidth="1"/>
    </group>
</vector>
Run Code Online (Sandbox Code Playgroud)

star_anim.xml

<set xmlns:android="http://schemas.android.com/apk/res/android"
     android:ordering="sequentially">

    <objectAnimator
        android:duration="1000"
        android:propertyName="trimPathStart"
        android:valueFrom="1"
        android:valueTo="0"/>

    <objectAnimator
        android:duration="1000"
        android:propertyName="trimPathEnd"
        android:valueFrom="1"
        android:valueTo="0"/>

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

但是AnimatorSet不能设置repeatMode

如果我设置objectAnimatorrepeatMode,第二个objectAnimator将不显示。

我该怎么办?

android android-animation android-vectordrawable animatorset

5
推荐指数
1
解决办法
1428
查看次数

使用自定义意图操作仅在特定应用程序上下文中启动活动

我需要使用意图过滤器指定我的登录活动:

    <activity
        android:name=".view.LoginActivity"
        android:label="@string/app_name">
        <intent-filter>
            <action android:name="com.example.sdk.LOGIN" />
            <category android:name="android.intent.category.DEFAULT" />
        </intent-filter>
    </activity>
Run Code Online (Sandbox Code Playgroud)

我想这样做的原因是我正在开发一个我想在几个项目中使用的 SDK,这是我能弄清楚如何通知 SDK 是登录活动的最好方法,而它是仅在 app 模块中定义。

在我做这样的声明后,我开始像这样的登录活动(在库和应用程序中):

    Intent intent = new Intent();
    intent.setAction("com.example.sdk.LOGIN");
    context.startActivity(intent);
Run Code Online (Sandbox Code Playgroud)

有可能在同一设备上同时安装两个或多个依赖于同一个 SDK 的应用程序。如果我理解正确,在这种情况下,在这些应用程序中的每一个中,Activity start 将启动一个随机登录活动(应用程序 A 中的调用可能会启动应用程序 B 的登录)。

  1. 我对自定义意图过滤器的工作原理的理解是否正确?
  2. 有没有办法告诉应用程序 A 中的调用只使用应用程序 A 中的意图过滤器声明

也欢迎提出重用登录相关逻辑的替代方法的建议,而不是依赖意图过滤器。

android intentfilter android-intent android-activity android-intent-chooser

5
推荐指数
1
解决办法
4684
查看次数

动态膨胀视图时滚动到底部

我有一个LinearLayout,我正在CardView像这样膨胀一个:

final LinearLayout itineraryDetailLL = (LinearLayout) findViewById(R.id.itineraryDetailLinearlayout);
final View childView = getLayoutInflater().inflate(R.layout.cardview, null);
itineraryDetailLL.addView(childView);
Run Code Online (Sandbox Code Playgroud)

子视图的膨胀是通过单击按钮完成的。每当新的卡片视图膨胀时,我都想滚动到屏幕底部。我是这样做的:

ScrollView scrollview = ((ScrollView) findViewById(R.id.masterScrollView));
scrollview.fullScroll(View.FOCUS_DOWN);
Run Code Online (Sandbox Code Playgroud)

但这会滚动到屏幕中间而不是底部。我究竟做错了什么?

android scrollview android-layout android-scrollview android-view

5
推荐指数
1
解决办法
574
查看次数

圆角 ItemDecoration

我有一个RecyclerViewwith GridLayoutManager,其中包含各种ViewTypes(以及SpanSizes )的项目。我需要为所有R.layout.item_image类型圆角,如下图所示

圆角示例

所以我创建了一个ItemDecoration计算Rect这些项目将被绘制的对象。然后将其剪辑Canvas到此Rect(用于Path圆角):

public class RoundCornersDecoration extends RecyclerView.ItemDecoration {
    private final float radius;
    private final RectF defaultRectToClip;

    public RoundCornersDecoration(float radius) {
        this.radius = radius;
        defaultRectToClip = new RectF(Float.MAX_VALUE, Float.MAX_VALUE, 0, 0);
    }

    @Override
    public void onDraw(Canvas canvas, RecyclerView parent, RecyclerView.State state) {
        final RectF rectToClip = getRectToClip(parent);

        // has no items with ViewType == `R.layout.item_image`
        if (rectToClip.equals(defaultRectToClip)) {
            return;
        } …
Run Code Online (Sandbox Code Playgroud)

android android-custom-view android-canvas android-view android-recyclerview

5
推荐指数
1
解决办法
1471
查看次数

Loader <Cursor>仅加载选定的行+下一行

活动A中,我正在加载一个包含我表中所有值的列表,并设置了一个setOnItemClickListener来启动活动B并通过发送数据发送带有所选项的id [ 1 ] 的uri

[ 1 ] Uri currentTestUri = ContentUris.withAppendedId(TestEntry.CONTENT_URI, id);

活动B中,我的onCreateLoader包含投影:

String[] projection = {
       TestEntry._ID,
       TestEntry.COLUMN_TEST_ONE,
       TestEntry.COLUMN_TEST_TWO}
Run Code Online (Sandbox Code Playgroud)

...带有return语句

return new CursorLoader(this,  
    mCurrentTestUri, //Got this from Activity A         
    projection,             
    null,                   
    null,                   
    null);  
Run Code Online (Sandbox Code Playgroud)

我的onLoadFinished看起来像这样:

if (cursor.moveToFirst()) {
      int oneColumnIndex = cursor.getColumnIndex(TestEntry.COLUMN_TEST_ONE);
      int twoColumnIndex = cursor.getColumnIndex(TestEntry.COLUMN_TEST_TWO);

      String currentOne = cursor.getString(oneColumnIndex);
      String currentTwo = cursor.getString(twoColumnIndex);

      textViewOne.setText(currentOne);
      textViewTwo.setText(currentTwo);
}
Run Code Online (Sandbox Code Playgroud)

到目前为止一切顺利,现在我希望显示下一行(右下方)的值,但是使用不同的投影(我只需要_IDCOLUMN_TEST_ONE)并且onLoadFinished显示COLUMN_TEST_ONE的值textViewThree.

[两行的值应该同时显示,而不是一个或另一个]

我可以使用[ …

sqlite android android-cursorloader android-loader android-sqlite

5
推荐指数
1
解决办法
295
查看次数

重写 ViewModelStore

是否可以提供一次自己的ViewModelStoreforViewModelProviders实现来代替默认的实现?

更准确地说,我有兴趣添加fun clear(vm: ViewModel)(或使用索引或类似的东西)功能,以便ViewModelStore我可以清除我选择的单个视图模型,而不仅仅是使用内置的ViewModelStore#clear

public final void clear() {
    for (ViewModel vm : mMap.values()) {
        vm.onCleared();
    }
    mMap.clear();
}
Run Code Online (Sandbox Code Playgroud)

这会清除所有视图模型。

java inheritance android android-viewmodel android-architecture-components

5
推荐指数
1
解决办法
1804
查看次数