小编Bam*_*amx的帖子

"ICU"在Android SDK中代表什么?

在Android SDK文档中看到了新的包.所有这些都在API级别24中可用,它对应于Android Nougat,似乎用' android.icu.xxx ' 替换' java.xxx '包.例如:

java.text.DateFormat中的包被复制在android.icu.text.DateFormat

此外,在一些icu类中出现以下注释:

[icu增强] ICU替代(类名).ICU特有的方法,字段和其他功能标记为"[icu]".

那么,ICU代表什么呢?java和android.icu包之间有什么区别?java包是否会很快被弃用?

java android package icu

19
推荐指数
2
解决办法
4714
查看次数

Android Activity使用Support v4过渡到最新的Android L.

我正在为我的应用程序实现材料设计.我看到可以在这里进行活动之间的转换:http://android-developers.blogspot.com.es/2014/10/implementing-material-design-in-your.html

所以我试着按照"真实动作"部分说的:

ActivityMain.java

Intent intent = new Intent();
String transitionName = getString(R.string.transition_album_cover);
…
ActivityOptionsCompat options =
ActivityOptionsCompat.makeSceneTransitionAnimation(activity,
    albumCoverImageView,   // The view which starts the transition
    transitionName    // The transitionName of the view we’re transitioning to
    );
ActivityCompat.startActivity(activity, intent, options.toBundle());
Run Code Online (Sandbox Code Playgroud)

activity_main.xml中

<ImageView
    …
    android:transitionName="@string/transition_album_cover" />
Run Code Online (Sandbox Code Playgroud)

activity_details.xml

<ImageView
    …
    android:transitionName="@string/transition_album_cover" />
Run Code Online (Sandbox Code Playgroud)

但是,这似乎使默认的android活动转换,我看不到动画.

请记住,我在这里调用了requestWindowFeature(Window.FEATURE_CONTENT_TRANSITIONS)http://developer.android.com/reference/android/support/v4/app/ActivityOptionsCompat.html#makeSceneTransitionAnimation (android.app.Activity ,android). view.View,java.lang.String)

所有这些都是使用Nexus4 API Level 19测试的

问题出在哪儿?

animation android android-support-library material-design

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

Android - 从通知中删除操作按钮

我想在点击这些操作按钮时关闭通知操作按钮(而不是整个通知).(可以说:带有停止操作按钮的下载通知.单击停止时,关闭停止按钮并将contentText更改为"下载已取消")

我唯一想到的是取消通知并通知另一个具有相同ID的通知,但这似乎是一个丑陋的解决方法......

那么,有没有办法从通知中删除动作按钮?

(我认为没有必要提供任何代码,但如果必要,我会...)

notifications android

14
推荐指数
1
解决办法
8780
查看次数

无法通过此堆栈跟踪找到崩溃的原因

我的应用程序的作用是显示通过windowManager.addView()WindowManager.LayoutParams.TYPE_SYSTEM_OVERLAY标记附加的系统覆盖视图.这是通过服务完成的,该服务管理视图可见性和其他一些事情.

但是,我收到崩溃报告,无法重现它们.崩溃堆栈跟踪也与我的应用程序包无关,所以我真的无法解决这个问题的根源.以下是来自不同来源的两个堆栈跟踪,但似乎是相关的:

java.lang.NullPointerException: Attempt to invoke virtual method 'void android.view.View.measure(int, int)' on a null object reference
at android.view.ViewRootImpl.performMeasure(ViewRootImpl.java:2388)
at android.view.ViewRootImpl.performTraversals(ViewRootImpl.java:2101)
at android.view.ViewRootImpl.doTraversal(ViewRootImpl.java:1297)
at android.view.ViewRootImpl$TraversalRunnable.run(ViewRootImpl.java:7011)
at android.view.Choreographer$CallbackRecord.run(Choreographer.java:777)
at android.view.Choreographer.doCallbacks(Choreographer.java:590)
at android.view.Choreographer.doFrame(Choreographer.java:560)
at android.view.Choreographer$FrameDisplayEventReceiver.run(Choreographer.java:763)
at android.os.Handler.handleCallback(Handler.java:739)
at android.os.Handler.dispatchMessage(Handler.java:95)
at android.os.Looper.loop(Looper.java:145)
at android.app.ActivityThread.main(ActivityThread.java:6938)
at java.lang.reflect.Method.invoke(Native Method)
at java.lang.reflect.Method.invoke(Method.java:372)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1404)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1199)
Run Code Online (Sandbox Code Playgroud)

.

java.lang.NullPointerException: Attempt to invoke virtual method 'int android.view.View.getMeasuredWidth()' on a null object reference
at android.view.ViewRootImpl.performLayout(ViewRootImpl.java:2484)
at android.view.ViewRootImpl.performTraversals(ViewRootImpl.java:2181)
at android.view.ViewRootImpl.doTraversal(ViewRootImpl.java:1293)
at android.view.ViewRootImpl$TraversalRunnable.run(ViewRootImpl.java:6599)
at android.view.Choreographer$CallbackRecord.run(Choreographer.java:800)
at android.view.Choreographer.doCallbacks(Choreographer.java:603)
at …
Run Code Online (Sandbox Code Playgroud)

service android view stack-trace

13
推荐指数
1
解决办法
1573
查看次数

扩展Activity和扩展ListActivity有什么区别?

我正在使用一个扩展Activity的类来从API获取列表...

在一些基本相同的应用程序中,开发人员扩展了ListActivity ...

哪些是差异?

android extend listactivity android-activity

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

删除RecyclerView项目

我有一个RecyclerView,它在每个特定时期添加项目.添加对象时,如果列表项超过(假设)500,则将删除第一个项目并添加新项目.

如果RecyclerView不能再向下滚动,!recyclerView.canScrollVertically(1);那么在添加新项目后,RecyclerView将smoothScroolToPosition()到达最后一个位置.

问题出在哪儿? 好吧,如果ReyclerView在移除旧物品时位于中间(不是底部,而不是顶部),它会突然跳起一些位置.我希望RecyclerView不会跳转位置并保持在顶部移除物品时的位置

我尝试过layoutManager.setStackFromEnd(true);但没有运气

有什么建议?

一些代码(不相关的代码被删除).当RecyclerView从中间显示列表项并按VOLUME_UP时,我的问题可以重现:

public class ActivityMain extends ActionBarActivity {

    public static final int MAX_LOG_ITEMS = 500;

    private RecyclerView mRecyclerView;
    private AdapterLog mRecyclerAdapter;
    private boolean mAutoScroll = true;

    private DataReceiver mDataReceiver;
    private Handler mLogHandler = new Handler() {
        @Override public void handleMessage(Message msg) {
            switch (msg.what){
                case DataReceiver.CAT_LOGS:
                    List<Log> catLogs = (List<Log>) msg.obj;
                    updateLogs(catLogs);
                    break;
                case DataReceiver .CLEAR_LOGS:
                    if (mRecyclerAdapter.getItemCount() > MAX_LOG_ITEMS)
                        mRecyclerAdapter.removeFirstItems(mRecyclerAdapter.getItemCount() - MAX_LOG_ITEMS);
                    break;
                case Logcat.REMOVE_LOGS:
                    mRecyclerAdapter.clear();
            }
        } …
Run Code Online (Sandbox Code Playgroud)

android listitem recycler-adapter android-recyclerview

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

这2个选项中哪一个更适合性能?

我在Android应用中使用片段.在这些片段中,我需要一个Context对象来重复使用它(大约10次)和一些方法调用.

如您所知,我有两个选择:

选项I:

public class MyFragment extends Fragment{
    public void onCreate(Bundle savedInstanceState){
        super(savedInstanceState);

        //call a lot of methods and use getActivity() a lot of times
    }
}
Run Code Online (Sandbox Code Playgroud)

方案二:

public class MyFragment extends Fragment{

    private Activity mActivity;

    public void onCreate(Bundle savedInstanceState){
        super(savedInstanceState);

        mActivity = getActivity();
        //call a lot of methods and use mActivity
    }
}
Run Code Online (Sandbox Code Playgroud)

我知道声明mActivity字段需要一些内存(多少?),但我认为调用getActivity需要一些CPU处理.

这两个选项中哪一个更好,为什么?


编辑:

那么,看看Android源代码,我可以在Fragment类中找到getActivity()方法的来源:

final public FragmentActivity getActivity() {
    return mActivity;
}
Run Code Online (Sandbox Code Playgroud)

因此,正如您所看到的,在选项II中,动态性被保留两次,这是浪费内存,所以从现在开始我将使用选项I.

谢谢你的回答,他们让我明白这个:)

memory cpu performance android field

6
推荐指数
1
解决办法
435
查看次数

我应该怎么做才能调用原生壁纸选择器为我在Android中的布局设置壁纸?

这是我的问题.对于那些不知道我在问什么的人,我想让这个菜单显示在我的应用程序http://db.tt/GQX9GBYF中.问题是我不知道该怎么做.我认为我必须创建一个intent,从中获取图像路径,然后将其设置为背景.但我不知道这样做的确切方法......

拜托,有人可以发一个例子,请???? ;)

我不得不说我设法通过启动原生图库应用程序,但我也想设置动态壁纸

android wallpaper picker android-intent

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

Android Studio - 导入项目和打开项目的区别

自从第一次发布以来,我一直在使用 Android Studio(大约一年前,自 I/O 2013 以来)

但是我最近注意到,在让您创建项目的第一个屏幕中,还有“打开”和“导入”项目选项,我找不到它们之间的任何区别

我记得在 Eclipse 中,导入项目会在工作区中复制项目......但是,据我所知,在 Android Studio 中没有工作区......

那么,Import project 和 Open project 有什么区别呢?

eclipse android intellij-idea android-studio android-ide

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

将 @SuppressLint("RestrictedApi") 与 AndroidX 库一起使用是否安全?

我现在想知道使用 @SuppressLint("RestrictedApi") 注释是否安全。我很确定答案是否定的,所以我也想问为什么。

我猜开发团队想restricted code向 API 用户隐藏这些内容。可能是由于未来的变化或者因为代码旨在用作内部功能

示例代码androidx.preference:preference:1.1.1

public abstract class CustomAdapterPreferenceFragment extends PreferenceFragmentCompat {

    @Override
    protected PreferenceGroupAdapter onCreateAdapter(PreferenceScreen preferenceScreen) {
        // this annotation removes warning that says PreferenceGroupAdapter can only be called from package names that start with androidx.preference        
        @SuppressLint("RestrictedApi")
        final PreferenceGroupAdapter adapter = new PreferenceGroupAdapter(preferenceScreen) {
            @Override
            public void onBindViewHolder(PreferenceViewHolder holder, int position) {
                super.onBindViewHolder(holder, position);
            }
        };
        return adapter;
    }
Run Code Online (Sandbox Code Playgroud)

链接到限制本示例中代码使用的注释:AOSP AndroidX

android annotations androidx

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