标签: android-view

AlphaAnimation 优于 SurfaceView?

我正在尝试使用淡入 ( AlphaAnimation) 效果。我的视图根目录包含全屏SurfaceView(不是 GLSurfaceView),如果我使用mSurfaceView.startAnimation(mMyAnimation),它不起作用,什么也不会发生。

我想这是因为它是 aSurfaceView而不是 a View。解决办法是什么?(我希望整个屏幕淡入。)如果最简单的解决方案是将 a 括起来SurfaceViewView然后AlphaAnimation在封闭的 上使用View,那么执行此操作的确切代码是什么?(例如 XML)

android surfaceview android-animation android-view

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

Android getDrawable() 已弃用/如何使用 Android getDrawable()

谁能告诉我使用 getDrawable() 的正确方法,我记得上次使用它只需要一个参数就可以了,但现在我收到了 this method is deprecated 错误,有人吗?下面是我尝试使用的片段

 private void toggleUi() {
    ImageView imageView = (ImageView) findViewById(R.id.silent_icon);
    Drawable silentImage;

    if(silent) {
        silentImage = getResources().getDrawable(R.drawable.silent_on);
    } else {
        silentImage = getResources().getDrawable(R.drawable.silent_off);
    }
    imageView.setImageDrawable(silentImage);
}
Run Code Online (Sandbox Code Playgroud)

如果有人可以帮忙,我会很高兴谢谢。

android android-view android-drawable

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

向右浮动 android

无法使线性布局中的视图向右浮动。下面是我的代码。如果layout_gravity将视图与其父视图对齐,那么第三个视图(下面代码中的第二个ImageView)应该在右侧,但事实并非如此。如何解决这个问题?

<LinearLayout
android:layout_width="match_parent"
android:layout_height="?attr/actionBarSize"
android:background="#456abc"
android:gravity="center"
android:orientation="horizontal">

<ImageView
    android:id="@+id/left"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:src="@mipmap/arrow_down" />

<TextView
    android:id="@+id/info"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:text="ABDEF" />

<ImageView
    android:id="@+id/right"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_gravity="right"
    android:src="@mipmap/arrow_right" />
</LinearLayout>
Run Code Online (Sandbox Code Playgroud)

android android-layout android-linearlayout android-view

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

布局-开始-结束,左右概念

我对以下属性的使用有点困惑。

> android:layout_marginRight and   android:layout_marginEnd
> android:layout_marginLeft and android:layout_marginStart
> android:layout_toLeftOf and android:layout_toStartOf
> android:layout_toRightOf and android:layout_toEndOf
> android:layout_gravity="right|end"
> android:layout_gravity="left|start"
Run Code Online (Sandbox Code Playgroud)

以下是我提到的一些事实。如果我错了,请纠正我。

  • 为了支持 Ltr 和 Rtl 布局并支持 api 级别 17 之前的版本,建议将上述属性始终成对放置。

  • “开始”和“结束”概念是在 API 级别 17 中添加的,将
    优先用于 api 级别>=17 的 Ltr 设备,“右”和“左”概念将优先用于 api 级别 <17 的 Ltr 设备

  • 如果我们的应用程序 minskdversion >=17 那么我们可以忽略“right”和
    “left”属性而只使用“start”和“end”属性

  • “开始”和“结束”概念在所有 Rtl 设备中优先

另外,我想知道如果我成对添加上述属性,对性能/优化是否有任何不利影响,例如-

 <TextView
     android:layout_width="wrap_content"
     android:layout_height="wrap_content"
     android:layout_gravity="right|end"
     android:layout_marginRight="@dimen/dp10"
     android:layout_marginEnd="@dimen/dp10"
     android:layout_marginLeft="@dimen/dp10"
     android:layout_marginStart="@dimen/dp10"
     android:layout_toLeftOf="@+id/bar"
     android:layout_toStartOf="@+id/bar"
     />
Run Code Online (Sandbox Code Playgroud)

layout android android-layout android-view android-api-levels

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

使用 com.github.clans.fab.FloatingActionButton 时命名空间“fab”未绑定错误

我正在尝试使用Clans/FloatingActionButton创建浮动操作菜单,但我在布局文件中收到命名空间“fab”未绑定错误。我已经包含了的依赖,compile 'com.github.clans:fab:1.6.4'所以我不知道出了什么问题。

这是我的布局文件。

<?xml version="1.0" encoding="utf-8"?>
<android.support.design.widget.CoordinatorLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:fitsSystemWindows="true"
    tools:context="com.kabricks.betterapp.MainActivity">

    <android.support.design.widget.AppBarLayout
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:theme="@style/AppTheme.AppBarOverlay">

        <android.support.v7.widget.Toolbar
            android:id="@+id/toolbar"
            android:layout_width="match_parent"
            android:layout_height="?attr/actionBarSize"
            android:background="?attr/colorPrimary"
            app:popupTheme="@style/AppTheme.PopupOverlay" />

    </android.support.design.widget.AppBarLayout>

    <include layout="@layout/content_main" />

    <com.github.clans.fab.FloatingActionButton
        android:id="@+id/material_design_android_floating_action_menu"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignParentBottom="true"
        android:layout_alignParentRight="true"
        android:layout_marginBottom="11dp"
        android:layout_marginLeft="11dp"
        android:layout_marginRight="11dp"
        app:menu_animationDelayPerItem="55"
        app:menu_backgroundColor="@android:color/transparent"
        fab:menu_buttonSpacing="0dp"
        fab:menu_colorNormal="#da3c2f"
        fab:menu_colorPressed="#dc4b3f"
        fab:menu_colorRipple="#99d4d4d4"
        fab:menu_fab_label="Floating Action Menu"
        fab:menu_fab_size="normal"
        fab:menu_icon="@drawable/fab_add"
        fab:menu_labels_colorNormal="#333"
        fab:menu_labels_colorPressed="#444"
        fab:menu_labels_colorRipple="#66efecec"
        fab:menu_labels_cornerRadius="3dp"
        fab:menu_labels_ellipsize="none"
        fab:menu_labels_hideAnimation="@anim/fab_slide_out_to_right"
        fab:menu_labels_margin="0dp"
        fab:menu_labels_maxLines="-1"
        fab:menu_labels_padding="8dp"
        fab:menu_labels_position="left"
        fab:menu_labels_showAnimation="@anim/fab_slide_in_from_right"
        fab:menu_labels_showShadow="true"
        fab:menu_labels_singleLine="false"
        fab:menu_labels_textColor="#f2f1f1"
        fab:menu_labels_textSize="15sp"
        fab:menu_openDirection="up"
        fab:menu_shadowColor="#66aff198"
        fab:menu_shadowRadius="4dp"
        fab:menu_shadowXOffset="1dp"
        fab:menu_shadowYOffset="4dp"
        fab:menu_showShadow="true">

        <com.github.clans.fab.FloatingActionButton
            android:id="@+id/material_design_floating_action_menu_item1"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:src="@drawable/ic_action_send"
            fab:fab_label="Menu …
Run Code Online (Sandbox Code Playgroud)

java xml android android-view floating-action-button

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

视图绘制完成回调

什么事件表示a的抽签View完成?

我了解ViewTreeObserver听众,但我找不到“最终”听众,这表明工作已完成。

android textview android-layout android-view android-viewtreeobserver

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

WindowManager.addView() 导致 BadTokenException

我正在尝试创建一个覆盖窗口,但是当我尝试将视图添加到 WindowManager 时,它给了我一个异常。我添加了“SYSTEM_ALERT_WINDOW”权限,并在应用信息中启用了“绘制其他应用”。我从服务的 onCreate 函数中调用它。

  • 设备:运行 8.0.0 的模拟器
  • 目标 SDK 和编译的 SDK 版本:26
  • AppCompat 版本:26.0.0

代码:

    WindowManager manager = (WindowManager)getSystemService(WINDOW_SERVICE);
    LayoutInflater inflater = (LayoutInflater) getSystemService(LAYOUT_INFLATER_SERVICE);

    RelativeLayout overlay = (RelativeLayout) inflater.inflate(R.layout.button_main, null);

    final WindowManager.LayoutParams params =
            new WindowManager.LayoutParams(
                    WindowManager.LayoutParams.MATCH_PARENT,
                    WindowManager.LayoutParams.WRAP_CONTENT,
                    WindowManager.LayoutParams.TYPE_APPLICATION_PANEL,
                    0,
                    PixelFormat.TRANSLUCENT);


    params.gravity = Gravity.TOP | Gravity.START;
    params.x = 0;
    params.y = 0;

    manager.addView(overlay, params);
Run Code Online (Sandbox Code Playgroud)

异常堆栈跟踪:

Caused by: android.view.WindowManager$BadTokenException: Unable to add window -- token null is not valid; is your activity running?
    at android.view.ViewRootImpl.setView(ViewRootImpl.java:764
    at android.view.WindowManagerGlobal.addView(WindowManagerGlobal.java:356)
    at android.view.WindowManagerImpl.addView(WindowManagerImpl.java:92)
Run Code Online (Sandbox Code Playgroud)

无论我为 …

android android-service android-layout android-view android-windowmanager

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

EditText 多行带有“下一个视图按钮”而不是“新行按钮”

EditText目标是将多行与“下一个视图按钮”一起使用android:inputType="textMultiLine",例如android:inputType="text"(见图 2)。

<EditText
    android:id="@+id/addAffirmationContent"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:inputType="textMultiLine"
    android:maxLength="255"
    android:imeOptions="flagNoExtractUi" />
Run Code Online (Sandbox Code Playgroud)

我尝试了许多与: 的组合 android:inputType, singleLine, nextFocusDown, nextFocusUp, nextFocusLeft, nextFocusRight, nextFocusForward, imeOptions, lines,但android:inputType="textMultiLine"总是强制换行按钮。

在 Nexus 5 Android 7 上测试。

图一:换行按钮:
新行按钮

图2.:下一个视图按钮:
下一个视图按钮

android android-edittext android-view

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

Android:抽象自定义视图和常见布局膨胀

因此,我做了一些研究,似乎在init抽象基类的/构造函数中查看膨胀并不是真正的最佳实践。我明白这是因为基类初始值设定项发生在init派生类的 /构造函数之前。由于抽象类是非最终类,所以有一个关于块this中泄漏的不错的 IDE 消息init

这就是我所追求的:

abstract class Foo @JvmOverloads constructor(
    context: Context,
    attrs: AttributeSet? = null,
    defStyleAttr: Int = 0
) : FrameLayout(context, attrs, defStyleAttr) {

    private val myView: View

    init {
        // todo@patches fix leaking "this"
        View.inflate(context, R.layout.view_foo, this)
        myView = requireNotNull(findViewById(R.id.my_view))
    }
}
Run Code Online (Sandbox Code Playgroud)
class Bar @JvmOverloads constructor(
    context: Context,
    attrs: AttributeSet? = null,
    defStyleAttr: Int = 0
) : Foo(context, attrs, defStyleAttr) 
Run Code Online (Sandbox Code Playgroud)

我真的不想向派生类的 init 添加任何内容,或者创建myView稍后在抽象类中设置的可为空/可变变量。

还有其他人觉得这有点令人沮丧或有什么建议吗?似乎想要从基类膨胀相同的布局并不罕见。

android android-custom-view android-view kotlin

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

Android : 在锁屏上显示视图(如谷歌地图)

我想在锁屏上显示个性化视图(实时显示一些数据)(之后用户将手机锁定在活动上)。
谷歌地图和百度地图(以及其他一些我忘记名字的应用)已经完全实现了我想要的。

所以我试图在我的 BroadcastReceiver 被触发时添加一个视图。
我从这个答案这个答案中尝试了一些观点。我也试过这个
在我根据许可出现错误之前:

窗口类型 2XXX 的权限被拒绝

现在我没有任何错误,但我的视图没有显示。
我的情况是:
MainActivity.kt:

import android.content.Intent
import android.net.Uri
import android.os.Bundle
import android.provider.Settings
import androidx.appcompat.app.AppCompatActivity


class MainActivity : AppCompatActivity() {
    private val REQUEST_CODE = 10001

    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.activity_main)
        checkDrawOverlayPermission()
    }
    fun checkDrawOverlayPermission() {
        /** check if we already  have permission to draw over other apps */
        if (!Settings.canDrawOverlays(this)) {
            /** if not construct intent to request permission */
            val intent = …
Run Code Online (Sandbox Code Playgroud)

android lockscreen android-view android-windowmanager android-permissions

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