安卓视图:在设置可见性之前检查可见性能否提高性能?
i具有辅助方法,可以根据传递到方法中的状态变量来设置某些View的可见性.有时,这些方法会被多次调用,并且可见性不会改变.因此,我发现自己开始检查每个View的可见性,然后再设置思维,"将视图的可见性更改为相同的可见性并无缘无故地引起刷新" . if (myView.getVisibility() != View.VISIBLE) { myView.setVisibility(View.VISIBLE); } etc... 但是,现在我想知道setVisibility的实现是否已经考虑到了这一点,并检查您是否将相同的可见性设置为View已经拥有的东西,并且不必要地刷新(我的代码正在尝试做什么). 那么,有人知道我的"优化"是否实际上正在改善任何性能,还是API已经领先于我? 解决方案 他们已经领先了一步.请参阅View.java:setVisibility()的
2 2023-05-23
编程技术问答社区
如何在子视图组和父视图组之间改变触摸事件
我决定在响应中发布此问题并回答 to此评论 如何处理在孩子的视图中,并在父景观组中触摸? 我会在这里粘贴评论: 假设我只想覆盖触摸事件以处理一些 孩子们,在此功能中我该怎么办才能使它起作用? 我的意思是,对于某些孩子而言,它会照常工作,而对于某些孩子来说 父级将决定他们是否会获得触摸事件. 所以问题是:我如何防止父母onTouchEvent()覆盖某些子元素的onTouchEvent(),同时使其覆盖其他孩子? 解决方案 嵌套视图组的onTouchEvents()可以由boolean onintercepttouchevent . OnInterceptTouchEvent的默认值为false. 父母的onTouchEvent是在孩子之前收到的.如果OnInterceptTouchEvent返回false,则将运动事件下降到链条上,将其发送到孩子的OnTouchEvent处理程序.如果返回正确的话,父母的将处理触摸事件. 但是,可能有一些实例,
6 2023-05-19
编程技术问答社区
重写onSaveInstanceState
我试图与 ViewGroup 并覆盖该方法来保存我自己的状态.但是当要保存状态时,我有一个例外: java.lang.IllegalStateException: Derived class did not call super.onSaveInstanceState() 这已经足够了,但是简单地称这种方法对我来说似乎还不够.那我该怎么做呢?如果该方法将通过我应该将此返回的对象作为我自己Parcelable表示的成员,并使用 解决方案 由于ZAPL没有将他的评论变成答案,我正在这样做. 是否有一些更好的方法来处理可穿戴物体的父母调用和链接? 实现这一目标的规范方法是让您自己的类用于从 .您可以调用父类的onSaveInstance处理程序,并将结果对象传递给您自己类的构造函数.还原数据时,getSuperState给出了针对父类的实例. 一个典型的代码示例看起来像这样: static class SavedState extends View.Base
0 2023-05-19
编程技术问答社区
Android FingerPaint的撤销/重做实现
我正在研究一个测试项目,该项目与Android SDK演示中的FingerPaint示例类似.我试图在项目中实现撤消/重做功能,但是我尝试的事情并没有按照我的期望.我发现一些与Internet上类似的问题,但是他们没有帮助我,这就是为什么我要问一个新问题. 这是我实际上在做什么: public class MyView extends View { //private static final float MINP = 0.25f; //private static final float MAXP = 0.75f; private Path mPath; private Paint mBitmapPaint; public MyView(Context c) { super(c); mPath = new Path(); mBitmapPaint = new
2 2023-05-16
编程技术问答社区
Android-如何有效地在TextView中加载大量的文本?
我正在编写一个读取单个文本文件并在TextView上显示的Android应用程序. 我现在正在做的是将整个文件读取到字符串中(使用BufferedReader和StringBuilder),然后在TextView上使用setText(string)显示. 700kb文本文件在屏幕上显示大约需要2到3秒. ,但我已经在市场上使用了其他一些电子书阅读器,它们几乎可以立即显示相同的文本.有人知道我如何实现这一目标吗? 谢谢你. 编辑:许多建议列表视图,但对我的特定情况不起作用.这是我对答案之一的答复:... [listView]出于几种原因对我不起作用. (1)要使ListView看起来像一个文本视图,我们必须在新的行字符上打破文本.如果我加载一个大段落,那就像加载文本视图一样慢. (2)由于ListView仅测量屏幕上的项目,因此我不知道整个文本的总"页面"或"高度". 解决方案 本质上,关键是仅在需要时加载所需的数据.做到这一点的一种方法是将每个段落放入其自
2 2023-05-16
编程技术问答社区
叠加一个视图不会禁用底层视图的操作
我有2个视图:查看A和视图B.视图A是渲染的,并且具有输入文本值的动作.我在此上显示覆盖视图 - 视图b.我希望视图中的操作是禁用的,但它们没有,并且我仍然能够在视图A上输入输入字段.如何禁用此操作? 解决方案 原因是您的覆盖层没有消耗触摸事件,因此,通过设计,如果视图不消耗触摸事件,则事件将传递给视图模型中的基础视图.因此,漫长的答案是使您的覆盖层可接触,聚焦和触摸听众并返回真实.简短的答案是将android:clickable="true"添加到您的覆盖视图中.
0 2023-05-15
编程技术问答社区
在一个服务上接收隐藏的状态栏/进入全屏活动事件
我有一项服务,向窗口管理器添加了一些视图(例如Facebook的聊天头).即使我在相机应用程序上,这种视图一直在所有时间内都处于最新状态. 是否可以知道何时使用全屏(例如相机或视频播放器),以便我可以隐藏我的视图? 编辑: 有一个叫做view.systemuivisibilitychangelistener的东西,但需要API 11.我的目标是9,但看来这正是我所需要的. API 9的其他选择? 解决方案 好吧,如果有人有兴趣,我以这种方式解决了我的问题: 为窗口管理器添加了一个透明的视图,具有1PX宽度和Match_parent高度.然后在此视图中添加了一个全局布局侦听器,每次布局上都有一个更改时,我会在屏幕上检查此视图的位置.如果是y是0,则状态栏是不可见的,因此必须运行全屏应用程序.这比本机视图更好.SystemuivisibilityChangelistener,因为似乎有些应用不会以某种方式触发该方法(例如新的Yahoo天气).
0 2023-05-15
编程技术问答社区
如果配置发生变化,则对象引用为空
我获得null对象引用,如果配置仅更改LinearLayout对象. 景观模式我必须setVisiblity = View.GONE除了一个视图 以外的所有视图 肖像模式我必须setVisibility = View.VISIBLE对于所有视图: if (Activity started in portrait mode then turned into landscape) {it work fine} else {it get null object reference only for linearLayout objects} 对象返回此错误,称为chart,progress_layout. 编辑 类"相关代码段"的大多数类别,因为完整的1000行无法发布 public class Cardio extends ActionBarActivity implements InsertDialogue.Insert, saveDialogue.
OnTouch可以工作,但OnClickListener不可以?
我创建了一个小部件/控件,可以通过扩展RelativeLayout来重复使用它.然后,在我的一项活动中,我在循环中创建了一堆此类小部件.但是,当我想让每个小部件响应点击时,我遇到了一个问题. 我发现设置OnTouchListener有效: this.setOnTouchListener(new OnTouchListener(){ public boolean onTouch(View arg0, MotionEvent arg1) { //Triggers debug message } }); 但是OnClickListener没有: this.setOnClickListener(new View.OnClickListener(){ public void onClick(View v) { //Doesn't trigger debug
0 2023-05-08
编程技术问答社区
当一个视图从其他视图拖过来时,检测该视图上的触摸事件
如果用户对视图A进行触摸并在视图B上拖动到底部.我想检测触摸事件. 我在视图B中添加了触摸侦听器,但是如果用户最初触摸A并拖动B. ,则不会收到事件. 解决方案 您可以使用Code Bellow来实现您的请求: 测试视图边界的方法(在代码beloow中使用) Rect outRect = new Rect(); int[] location = new int[2]; private boolean isViewInBounds(View view, int x, int y){ view.getDrawingRect(outRect); view.getLocationOnScreen(location); outRect.offset(location[0], location[1]); return outRect.contains(x, y); } 用两个
2 2023-05-08
编程技术问答社区
第二次点击时,数值没有被设置
实际上,我正在尝试实现 this .问题,当我单击Image Circle 1按钮时,在此时间Passcode字段更改第一字段的背景颜色.但是,当我单击图像圈1 Button时,第二Passcode字段没有更改.我认为getId()不正常工作.也许我知道实现目标的正确方法是什么?也许这个问题太基本了,但是我找不到任何合适的解决方案.请帮助我.请检查此语句View.OnClickListener imgButtonHandlerone = new View.OnClickListener() 这是我的代码: public class UserPasscode extends Activity { ImageButton Imagepassone ; ImageButton Imagepasstwo ; ImageButton Imagepassthree ; ImageView image; ImageView image2; ImageView image3; @Ove
0 2023-05-08
编程技术问答社区
必须点击两次按钮才能在Android Studio中工作
因此,我目前正在创建一个困扰我的应用程序之一,这是我必须单击两个按钮才能正常工作的事实. 这是我的代码,我看不到任何错误: public void signUpButtonClickAction(View v){ Button signUpButtonClick = (Button) findViewById(R.id.signUpButton); signUpButtonClick.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { startActivity(new Intent(MainActivity.this, Signup.class)); } }); } 我按钮的XML代码:
0 2023-05-08
编程技术问答社区
为什么我们要在onClick方法中加入'View'作为参数,它有什么作用?
我正在在Android Studio的按钮上设置一个事件侦听器,以更改TextView内部的文本,并确定我们定义了OnClick方法.在其参数列表中,它要求View对象.谁能解释它的作用?我不明白View类的对象将在哪里使用. 解决方案 可以让您像OnClick方法一样重复使用事件处理程序,视图参数在您的情况下是触发方法的按钮实例 - 多个按钮可以具有相同的OnClick处理程序,在该方法内您可以使用检查哪些按钮发射(如果有多个)并做出相应的反应. 实际上,它不仅在Android上,而且所有当代UI编程 - iOS,Windows,OS/X等都是非常典型的. 还有更多:参数的类型是视图而不是按钮,因为不仅按钮会对OnClick做出反应,并且对OnClick的UI对象的常见类型是View. . 现在,您不仅可以以不同的方式处理事件,还可以直接访问事件的来源,以便您可以进行工作 - 在按钮的示例中,您可以更改其标题,并且可以肯定地知道您正在更改发射事件的UI对象的
0 2023-05-08
编程技术问答社区
"在活动类中找不到一个方法......用于onClick处理器"
我正在从事我的第一个Android项目.我正在使用ThinkGear API.我有两个活动.我在第一个活动中有意图开始第二个活动.在第二次活动中,我有一个按钮播放声音和一个按钮以暂停声音.但是,当我尝试在第二个活动中播放声音时,我的应用程序结束了.请指出错误.我正在附加Java文件和LogCat文件. mindwave1.java package com.example.mindwave1; import android.annotation.SuppressLint; import android.app.Activity; import android.bluetooth.BluetoothAdapter; import android.content.Intent; import android.os.Bundle; import android.os.Handler; import android.os.Message; //import android.util.
0 2023-05-08
编程技术问答社区
offsetLeftAndRight()的具体作用是什么?
offsetleftandright()到底做什么? 文档说:"将此视图的水平位置偏移到指定数量的像素" 因此,这是否意味着如果距离左位为50,并且在其上调用了offsetleftandright(20),那么该视图将移动20像素,其左位将(50-20)为(50-20),即30? 预先感谢. 解决方案 左侧和右侧位置都将被偏移量增加.因此,在您的示例中,左位将更改为50 + 20 = 70.
0 2023-05-08
编程技术问答社区
Tabhost--在安卓标签中设置徽章位置
我是徽章概念的新手.在我的应用程序中,我想在一个选项卡上显示徽章.为此,我使用了android-viewbadger.jar文件 android ViewBadger 它可以使用4个选项卡, 工作正常 TabWidget tabs = (TabWidget) findViewById(android.R.id.tabs); badge1 = new BadgeView(this, tabs, 1); badge1.setText("155"); badge1.setBadgePosition(BadgeView.POSITION_BOTTOM_RIGHT); badge1.toggle(); 当我在这里添加另一个选项卡时,它看起来像 我已经使用了这些徽章属性 badge1.setPadding(left, top, right, bottom); badge1.setTextSize(15); badge
0 2023-04-27
编程技术问答社区
禁用导航抽屉中的暗色渐变
是否可以在Android中的导航抽屉视图中禁用背景视图的深色褪色效果? 解决方案 您可以使用setScrimColor(int color)方法.默认颜色0x99000000使用.因此,如果您不想要faded背景,请在此方法中设置transparent颜色. mDrawerLayout.setScrimColor(getResources().getColor(android.R.color.transparent)); 其他解决方案 KOSO的答案增加:您可以直接从颜色类中调用颜色: mDrawerLayout.setScrimColor(Color.TRANSPARENT); 其他解决方案 drawerlayout.setscrimcolor(color.parsecolor("#99000000")); //用于黑暗褪色效果 or drawerlayout.setscrimc
4 2023-04-20
编程技术问答社区