Articles of android view

更改同一活动中的布局文件

我正在使用setContentView(R.layout.main)来切换同一活动中的视图。 我正在调用一些异步任务并在主布局文件上填充数据之后我通过调用setContentView(R.layout.main)方法来更改视图。 我开始知道我们不应该多次使用setContentView方法进行相同的活动。 虽然它对我来说很好。 任何人都可以解释为什么我们不应该多次使用setContentView方法为同一个活动更改视图? 它会创建任何与内存相关的exception吗? 请有人澄清一下吗?

Android Column GridView,可变宽度,如GooglePlus App

就像大多数人一样,我们都使用/看过Google Plus应用程序。 我感兴趣的是他们开发的ColumnGridView,它不仅可变宽度,而且可变高度,似乎基于内容将愉快地显示CardView的最佳空间。 很少有可能的解决方案来复制这个,但只是真正寻找最好的,当然是谷歌实施。 是的,这可以通过TableView实现 – 但如果没有视图回收器,这将是糟糕的编程。 我自己的自定义实现,基于ListView / GridView – 不是不可能,但很多工作。 理想情况下,使用Google假设的Google与Google Now / Plus相同,因为它们基于“卡”样式项目执行相同的操作。 所以有人遇到过这个吗? 我可以使用任何教程,示例,源码来节省我的头脑? 甚至可能是Google员工在计算尺寸方面的某些方向?

在具有相同密度的不同Android设备上具有不同的投掷(滑动)速度

我正在编写自己的图像查看器,使用户可以向左或向右滑动以查看下一个\上一个图像。 我想根据投掷速度为图像变化设置animation。 为了检测一个手势和它的速度,我按照这个基本的手势检测 ,并按照接受的答案建议: public class SelectFilterActivity extends Activity implements OnClickListener { private static final int SWIPE_MIN_DISTANCE = 120; private static final int SWIPE_MAX_OFF_PATH = 250; private static final int SWIPE_THRESHOLD_VELOCITY = 200; private GestureDetector gestureDetector; View.OnTouchListener gestureListener; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); /* … */ // Gesture detection gestureDetector = new GestureDetector(this, […]

刷新片段内的视图

我搜索了很多看起来像这个问题的问题,但是没有find我的答案。 我有一个活动,通过操作栏可以访问3个选项卡。 我通过添加3个片段来实现这一点,这些片段会扩展我扩展视图类的自定义视图。 在数据库更改的那一刻,我尝试通过调用invalidate()/ postinvalidate()刷新我的选项卡中的视图,但这不起作用。 调用片段的onCreateView就像我考虑的其他选项一样。 然而,当我转到另一个选项卡然后返回时,已经进行了更改,并且我的视图会按原样更新。 如何模拟更改为另一个选项卡时发生的相同事情? 会发生什么 我试图查看Fragment生命周期(试图调用onCreateView())来解决它,但它只是不想刷新/重绘它应该。 正确加载数据,因为当我更改为另一个选项卡时数据会更改。 我删除了一些代码,因为它不再相关。 我实现了Cursorloaders而不是我自己的Observer模式来通知更改。 这是我现在的主要活动。 问题是,如果我想重绘这些片段中的视图,我现在应该怎么做。 如果我应用fragmentObject.getView()。invalidate()它不起作用。 我遇到了和以前一样的问题,但现在我的Observer通知加载器正确实现了数据库中的更改。 public class ArchitectureActivity extends Activity implements LoaderManager.LoaderCallbacks { @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); ActionBar actionbar = getActionBar(); actionbar.setNavigationMode(ActionBar.NAVIGATION_MODE_TABS); ActionBar.Tab EditTab = actionbar.newTab().setText(“Edit”); ActionBar.Tab VisualizeTab = actionbar.newTab().setText(“Visualize”); ActionBar.Tab AnalyseTab = actionbar.newTab().setText(“Analyse”); Fragment editFragment = new EditFragment(); […]

getWidth()和getHeight()始终返回0.自定义视图

在片段中,我正在使用多个子视图来扩充布局。 我需要获得其中一个的尺寸(宽度和高度),这是一个自定义视图。 在自定义视图类中,我可以轻松完成。 但是,如果我尝试从片段中做到这一点,我总是得到0作为维度。 public void onViewCreated(View view, Bundle savedInstanceState) { super.onViewCreated(view, savedInstanceState); View culoide = view.findViewWithTag(DRAW_AREA_TAG); Log.d(“event”, “culoide is: “+culoide.getWidth()); // always 0 } 我认为onViewCreated应该是获得它的正确位置,但这种情况发生了。 我在super.onViewCreated之前尝试过,在调试中它看起来像’findViewWithTag’find正确的视图,仅尝试使用api 7 v4支持。 有帮助吗?

使用Android的内置手势监听器和缩放监听器实现捏缩放和拖动

我正在尝试使用Android的手势监听器和缩放监听器来实现缩放缩放和拖动。 问题是,当我执行捏拉缩放时,图像(我试图缩放)会反弹到特定位置。 变焦位置也不居中。 以下代码演示了我想要实现的目标。 知道为什么图像跳跃(以及如何纠正)? public class CustomView extends View { Bitmap image; int screenHeight; int screenWidth; Paint paint; GestureDetector gestures; ScaleGestureDetector scaleGesture; float scale = 1.0f; float horizontalOffset, verticalOffset; int NORMAL = 0; int ZOOM = 1; int DRAG = 2; boolean isScaling = false; float touchX, touchY; int mode = NORMAL; public CustomView(Context […]

视图何时附加和分离?

此问题与如何检测视图是附加还是分离无关 。 一般来说,何时附加或分离视图? 这有生命周期图吗? 为了澄清,我正在寻找以下情况的答案:活动发送到背景,不透明视图放在顶部,可见性设置为GONE ,查看膨胀,父级分离等等。这不是一个详尽的列表 – 我只是想了解在一个基本层面上,如何附加和分离观点。 更新我想要获得的更多示例: 片段与活动怎么样? 嵌套视图怎么样 – 附加/分离视图的顺序是什么(parent-> child或child-> parent)? 视图是在附加之前还是之后测量的? 如何手动将addView()用于ViewGroup? 编辑:摘要: 对于“活动”,视图附加在setContentView() 。 视图在onDestroy()中分离,或者在使用不同视图调用setContentView()时分离。 对于Fragments,视图在onViewCreated()完成后onViewCreated() ,并在onDestroyView()完成后分离。 对于ViewGroups,视图附加在addView()并在removeView()分离 setVisibility()不会影响视图的附加状态

Android – 打开和关闭屏幕时,覆盖在全屏video最后一帧上的视图无法正确重绘

我有一个以纵向模式播放的video。 在video结束时,我需要显示一些视图。 这到目前为止工作正常。 但是,我有一个问题,即在关闭屏幕,然后重新打开,然后解锁屏幕后返回活动时,video最后一帧的视图无法正确重绘。 我所观察到的是,当屏幕重新亮起并且我解锁时。 我的video和图像首先在全屏模式之外呈现(状态栏仍然显示),然后屏幕将进入全屏模式,将所有视图向上移动并导致伪像。 看起来这些视图在渲染后通过向全屏的过渡转移到视图边界之外。 我真的很难过如何防止这种情况发生。 这是github上的沙箱项目,以避免使这个post充满代码。 该项目的基本设置如下: 片段活动在其布局上有video视图和按钮视图。 然后它将一个片段添加到contentView容器中。 contentView在video播放结束前1秒内淡出。 一切顺利,问题在于打开和关闭屏幕电源后返回应用程序。 此外,有时video将完全退出,使视图位于黑色背景上。 提前感谢您提供的任何帮助。 这是当您关闭,重新打开和解锁屏幕时发生的伪像。 请注意,我必须拍一张照片。 在DDMS上,屏幕截图工具可以正确查看图像。

ConstraintLayout:以编程方式更改约束

我需要ConstraintSet帮助。 我的目标是在代码中更改视图的约束,但我无法弄清楚如何正确执行此操作。 我有4个TextView和一个ImageView 。 我需要将ImageView约束设置为TextView之一。 check_answer4 = (TextView) findViewById(R.id.check_answer4); check_answer1 = (TextView) findViewById(R.id.check_answer1); check_answer2 = (TextView) findViewById(R.id.check_answer2); check_answer3 = (TextView) findViewById(R.id.check_answer3); correct_answer_icon = (ImageView) findViewById(R.id.correct_answer_icon); 如果第一个答案是正确的,我需要设置ImageView约束 app:layout_constraintRight_toRightOf=”@+id/check_answer1″ app:layout_constraintTop_toTopOf=”@+id/check_answer1″ 如果第二个答案是正确的,我需要设置ImageView约束 app:layout_constraintRight_toRightOf=”@+id/check_answer2″ app:layout_constraintTop_toTopOf=”@+id/check_answer2″ 等等。

有没有办法通过adb获取当前活动的布局和视图?

出于环境原因,我只能使用adb命令。 有没有办法获得当前的布局属性,如id , position , text等? 与uiautomatorviewer显示的相似。