小编Mat*_*ini的帖子

处理按钮在RecyclerView中的行内单击

我正在使用以下代码来处理行点击.(来源)

static class RecyclerTouchListener implements RecyclerView.OnItemTouchListener {

    private GestureDetector gestureDetector;
    private ClickListener clickListener;

    public RecyclerTouchListener(Context context, final RecyclerView recyclerView, final ClickListener clickListener) {
        this.clickListener = clickListener;
        gestureDetector = new GestureDetector(context, new GestureDetector.SimpleOnGestureListener() {
            @Override
            public boolean onSingleTapUp(MotionEvent e) {
                return true;
            }

            @Override
            public void onLongPress(MotionEvent e) {
                View child = recyclerView.findChildViewUnder(e.getX(), e.getY());
                if (child != null && clickListener != null) {
                    clickListener.onLongClick(child, recyclerView.getChildPosition(child));
                }
            }
        });
    }

    @Override
    public boolean onInterceptTouchEvent(RecyclerView rv, MotionEvent e) {

        View child …
Run Code Online (Sandbox Code Playgroud)

android android-recyclerview

76
推荐指数
4
解决办法
9万
查看次数

SYSTEM_ALERT_WINDOW - 如何在Android 6.0和targetSdkVersion 23上自动获得此权限

Facebook,Evernote,Pocket - 所有应用程序都会自动在Android 6.0上获得此权限,即使它们的目标是23(targetSdkVersion=23).

关于新的Marshmallow权限模型有很多文档.其中一个SYSTEM_ALERT_WINDOW被"提升"为"高于危险"的权限级别,因此需要特殊的用户干预才能授予应用程序这些权限.如果应用程序有targetSdkVersion22或更低,app会自动获得此权限(如果在清单中请求).

但是,我注意到一些获得此权限的应用程序,无需将用户发送到设置特殊页面的Draw over other apps权限.我看到Facebook,Evernote,Pocket - 也许还有更多.

任何人都知道在没有用户通过的情况下如何授予应用程序此权限Settings -> Apps -> Draw over other apps

谢谢

android android-permissions target-sdk system-alert-window android-6.0-marshmallow

73
推荐指数
4
解决办法
6万
查看次数

从Glide库中的缓存中删除图像

我在我的一个项目中使用Glide来显示文件中的图像.

下面是我的代码如何显示图像:

Glide.with(DemoActivity.this)
     .load(Uri.parse("file://" + imagePath))
     .into(mImage);
Run Code Online (Sandbox Code Playgroud)

此位置(imagePath)的图像不断变化.默认情况下,滑动缓存它在中显示的图像ImageView.因此,Glide正在缓存中显示该位置新图像的第一张图像.

如果我imagePath使用具有相同名称的其他图像更改位置处的图像,则Glide将显示第一个图像而不是新图像.

两个查询是:

  1. 是否可以始终从文件中的图像而不是缓存?这样问题就解决了.

  2. 在获取新替换的图像之前,是否可以从缓存中清除图像?这也将解决问题.

android caching android-glide

55
推荐指数
13
解决办法
6万
查看次数

Google PlacePicker在发布后立即关闭

我正在开发一个Android应用程序,并正在研究Google Places以获取应用程序中的某些功能.谷歌最近发布了我正在使用的PlacePicker功能.我遵循了Google指南和"T"的快速入门指南.这个功能在三小时前工作得很好,现在当我去测试它时,它启动然后立即关闭,堆栈跟踪中没有错误.以下是我使用代码的方式:

这是一个片段.

// The Location Selection from Google Place Picker
where.setOnClickListener(new View.OnClickListener() {
    @Override
    public void onClick(View v) {
        try {
            launchPlace();
        } catch (GooglePlayServicesNotAvailableException |  GooglePlayServicesRepairableException e) {
            e.printStackTrace();
        }
    }
});
Run Code Online (Sandbox Code Playgroud)

这是在onCreateView的片段内.

方法launchPlace()定义如下.

// Start Google Place Picker Code **************************************************************
public void launchPlace() throws GooglePlayServicesNotAvailableException,
        GooglePlayServicesRepairableException {
    PLACE_PICKER_REQUEST = 1;
    PlacePicker.IntentBuilder builder = new PlacePicker.IntentBuilder();

    Context context = getActivity().getApplicationContext();
    startActivityForResult(builder.build(context), PLACE_PICKER_REQUEST);
}

public void onActivityResult(int requestCode, int resultCode, Intent data) {

    String badLocation = "That location is …
Run Code Online (Sandbox Code Playgroud)

android android-fragments google-places

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

在应用更新时删除了活动别名

我已经实现了两个activity-alias用户应该能够在运行时启用或禁用的功能.

<activity-alias
    android:name=".ui.alias.open_location"
    android:targetActivity=".ui.activity.location"
    android:enabled="false">

    <intent-filter>
        <action android:name="android.intent.action.MAIN"/>
        <category android:name="android.intent.category.LAUNCHER"/>
    </intent-filter>
</activity-alias>
Run Code Online (Sandbox Code Playgroud)

我不希望在开始时启用它们,以免弄乱用户设备的应用程序屏幕.但在运行时,用户应该能够启用别名.我这样做是通过PackageManager:

PackageManager pm  = getApplicationContext().getPackageManager();
ComponentName componentName = new ComponentName(context, ".ui.alias.open_location");
pm.setComponentEnabledSetting(componentName,
                              PackageManager.COMPONENT_ENABLED_STATE_ENABLED,
                              PackageManager.DONT_KILL_APP);
Run Code Online (Sandbox Code Playgroud)

这在开始时就像魅力一样,但是当安装了我的应用程序的更新时,别名会再次被禁用.如何防止系统被清单覆盖启用状态?我不希望用户在开始时使用Launcher,我不希望用户在更新后重新创建所有别名快捷方式.

我想我需要类似的东西PackageManager.COMPONENT_ENABLED_STATE_DISABLED_USER,但仅限于启用状态.

谢谢!

android android-manifest android-activity android-activity-alias

18
推荐指数
1
解决办法
778
查看次数

应用程序不会在设备上运行:DELETE_FAILED_INTERNAL_ERROR?

问题:

我对gradle文件进行了一些更改,每当我尝试运行我的应用程序时,我都会DELETE_FAILED_INTERNAL_ERROR在被告知必须卸载应用程序路径然后重新安装以运行应用程序后才会收到错误.我批准卸载然后DELETE_FAILED_INTERNAL_ERROR抛出并执行完全停止.

这是我的gradle文件:

apply plugin: 'com.android.application'

android {
    compileSdkVersion 21
    buildToolsVersion "21.1.2"

    defaultConfig {
        applicationId "benyamephrem.tilt"
        minSdkVersion 14
        targetSdkVersion 21
        versionCode 19
        versionName "3"
    }
    buildTypes {
        release {
            minifyEnabled true
            proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro'
        }
    }
}

dependencies {
    compile fileTree(dir: 'libs', include: ['*.jar'])
    compile 'com.android.support:appcompat-v7:21.0.3'
    compile 'com.google.android.gms:play-services:7.0.0'
    compile 'com.nineoldandroids:library:2.4.0'
    compile 'com.daimajia.easing:library:1.0.0@aar'
    compile 'com.daimajia.androidanimations:library:1.0.8@aar'
}
Run Code Online (Sandbox Code Playgroud)

这是ADB Logcat:

Installing benyamephrem.tilt
DEVICE SHELL COMMAND: pm install -r "/data/local/tmp/benyamephrem.tilt"
pkg: /data/local/tmp/benyamephrem.tilt
Failure [INSTALL_FAILED_DEXOPT]


DEVICE SHELL COMMAND: pm uninstall …
Run Code Online (Sandbox Code Playgroud)

dependencies android gradle android-studio

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

当按下菜单键时,不会触发升级到AppCompat v22.1.0以及现在的onKeyDown和onKeyUp

我刚刚升级了我的应用程序以使用新发布的v22.1.0 AppCompat,现在onKeyDown并且onKeyUp在按下菜单键时不会触发.其他键正确触发onKeyDownonKeyUp,但是当我按下菜单键没有反应.如果我降级到v22.0.0,一切都恢复正常.

我如何解决它?

android onkeydown onkeyup android-support-library

16
推荐指数
1
解决办法
3654
查看次数

Android M上配置文件GPU栏的颜色

当设置档案GPU渲染开发功能"在屏幕上吧"我曾经看到在Android棒棒糖,蓝色,紫色,红色,和橙色条所描述这里.

但在Android Marshmallow上,这些酒吧由七种不同的颜色组成:深绿色,中绿色,浅绿色,蓝色,浅蓝色,红色和橙色.

在Android M上配置GPU屏幕栏

我没有在Android开发者身上找到任何与这些颜色相关的信息.那么这些新颜色意味着什么呢?

performance android gpu android-6.0-marshmallow

15
推荐指数
1
解决办法
3564
查看次数

表格布局中的行之间的分隔

我正在显示一个表格布局,因为我想要在表格中的行之间分隔线.也可以在表格布局中进行列方式分离.请帮助我.

以下是我的xml表格布局:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    android:orientation="vertical"
    android:paddingBottom="6dip"
    android:paddingTop="4dip">

    <TableLayout
        android:id="@+id/tablelayout"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:paddingRight="2dip">

        <TableRow>

            <TextView
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:text="Income"></TextView>

            <TextView
                android:layout_width="150px"
                android:layout_height="wrap_content"
                android:layout_marginLeft="150dp"
                android:text="Expense"></TextView>
        </TableRow>

        <TableRow android:layout_marginTop="30px">

            <TextView
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:text="Household:"></TextView>

            <TextView
                android:id="@+id/text50"
                android:layout_width="150px"
                android:layout_height="wrap_content"
                android:text="Household:"></TextView>
        </TableRow>


        <TableRow android:layout_marginTop="40px">

            <TextView
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_span="2"
                android:text="Travel:"></TextView>

            <TextView
                android:id="@+id/text51"
                android:layout_width="150px"
                android:layout_height="wrap_content"
                android:layout_marginLeft="-250dp"
                android:text="Travel"></TextView>
        </TableRow>

        <TableRow android:layout_marginTop="40px">

            <TextView
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_span="2"
                android:text="Education:"></TextView>

            <TextView
                android:id="@+id/text52"
                android:layout_width="150px"
                android:layout_height="wrap_content"
                android:layout_marginLeft="-250dp"
                android:text="Education"></TextView>
        </TableRow>

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

android tablelayout

14
推荐指数
3
解决办法
4万
查看次数

appcompatDialogFragment与appcompat-v7:23.1.0有关

appcompat v7从版本23.0.1升级到版本23.1.0

我发现这个惊喜AppCompatDialogFragment:
在对话框顶部显示一个额外的空格

其他人都在经历这个?

在此输入图像描述

这是我的代码:

public class AlertDialogFragment extends AppCompatDialogFragment {

    public static final int ALERTDIALOG_STARTUP = 101;
    public static final int ALERTDIALOG_DELETE_SEARCH_HISTORY = 102;
    public static final int ALERTDIALOG_RATE_APP = 103;
    public static final int ALERTDIALOG_REACHED_FOLLOWS_FREE_LIMIT = 104;
    public static final int ALERTDIALOG_UNFOLLOW_ROUTE = 105;
    AlertDialogListener mListener;

    public static AlertDialogFragment newInstance(int type, String id, String[] params) {
        AlertDialogFragment frag = new AlertDialogFragment();
        Bundle args = new Bundle();
        args.putInt("type", type);
        args.putString("id", id); …
Run Code Online (Sandbox Code Playgroud)

android android-appcompat appcompatdialogfragment

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