Articles of 视图

在android中缩放和平移视图

嗨朋友我正在创建一个应用程序,我把两个视图。 第一个是imageview,另一个是我的客户视图。 我在自定义视图上绘制图像。 我的自定义视图代码如下 public class DrawView extends ImageView{ @SuppressWarnings(“unused”) private static final String TAG = “DrawView”; Painter painter = new Painter(); PathStack pathStack; private DrawApplication drawApplication; public DrawView(Context context, AttributeSet attr) { super(context,attr); setFocusable(true); setFocusableInTouchMode(true); drawApplication=(DrawApplication)context.getApplicationContext(); pathStack=drawApplication.getPainter().getPathStack(); painter=drawApplication.getPainter(); setScaleType(ScaleType.MATRIX); } @Override public void onDraw(Canvas canvas) { float scaleFactor=drawApplication.getScaleFactor(); canvas.scale(scaleFactor, scaleFactor,(float)getWidth()/2,(float)getHeight()/2); List currentStack=pathStack.getCurrentStack(); for (DrawingPath […]

addOnLayoutChangeListener vs addOnGlobalLayoutListener vs post(Runnable r)

问题 :假设我们有简单的情况:我们有视图 ,我们必须在这个视图上显示一些数据。 我们使用静态方法showData(View view)来做到这一点。 我想知道测量视图布局的确切时刻,我可以访问getWidth() getHeight()并确保这是我视图的最终宽度和高度。 我知道什么 :(不确定我100%是对的): 我知道3种不同的方法来做到这一点 view.addOnLayoutChangeListener – 我们知道布局何时更改,我们可以获得高度和宽度 view.getViewTreeObserver()。addOnGlobalLayoutListener – 对于我的情况几乎相同,但我们稍后会得到相关信息。 因为layoutChange从children到root冒泡,而globalLayout从root到child(对吧?)。 view.post(Runnable r) – 正在工作,但我不知道为什么runnable会在测量视图后发布到ui线程执行。 问题 :了解该视图的最佳方法是什么? 为什么?

使用SwipeFlingAdapterView库轻松缩放图像视图的Android刷卡

我使用这个库实现了具有pinch to zoomfunction的swipe card ,当我只使用image view它工作正常意味着滑动工作正常但我想要滑动function,如库以及pinch to zoom所以我添加了TouchImageView类,其中只有pinch to zoom工作,但滑动function不起作用。 那么请你帮我解决这个问题,或者建议我使用swipe card和pinch to zoom任何替代库。 以下是我的活动 public class MainActivity extends AppCompatActivity{ private SwipeFlingAdapterView flingContainer; public static ArrayList al; public SwipViewAdapter swipViewAdapter; private SwipModel swipModel; private Uri uri; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); getId(); setSwipeCard(); } private void getId() { flingContainer = (SwipeFlingAdapterView) findViewById(R.id.frame); […]

将图标拖放到主屏幕

更新:了解我的问题,这是我需要实现的:将图标从App抽屉拖动到主屏幕( 如果可能的话,不是在gridview中),如图片中所示, 旧(这只是为了了解这是如何工作的): 我正在尝试将ListView中的可点击图标拖动到同一个Activity或其他内容中没有容器( Listview or Gridview… )的customView ,这里有一张图片供您了解: 但是当我把图标放在右边区域时我看不到对象 ,在日志中我看到: I/ViewRootImpl﹕ Reporting drop result: true 我的代码: class MyDragListener implements View.OnDragListener { @Override public boolean onDrag(View v, DragEvent event) { int action = event.getAction(); switch (event.getAction()) { … case DragEvent.ACTION_DROP: LinearLayoutAbsListView itemo = (LinearLayoutAbsListView)findViewById(R.id.paneko); View child = getLayoutInflater().inflate(R.layout.list_item, null); itemo.addView(child); break; case DragEvent.ACTION_DRAG_ENDED: default: break; […]

Android – 调用GONE然后VISIBLE使视图显示在错误的位置

我有两个视图,A和B,视图A在视图B上方(都是线性布局)。 当我以编程方式将视图A设置为GONE时,它将消失,并且它正下方的视图(B)将转到视图A的位置(如预期的那样)。 但是,当我再次将相同的视图(A)设置为VISIBLE时,它会在视图B上显示。我不希望这样。 我希望视图B回到原来的位置(在视图A下面),这是我认为会发生的事情(但事实并非如此)。 我怎样才能做到这一点? 先谢谢你! 编辑 – 代码 package com.test; import android.app.Activity; import android.os.Bundle; import android.view.View; import android.view.View.OnClickListener; import android.view.animation.ScaleAnimation; import android.view.animation.Transformation; import android.widget.LinearLayout.LayoutParams; public class ViewGoneEffectActivity extends Activity implements OnClickListener { private View viewComEfeito = null; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); findViewById(R.id.outroLinear).setOnClickListener(this); findViewById(R.id.segundo).setOnClickListener(this); viewComEfeito = findViewById(R.id.outroLinear); } @Override public void […]

将View恢复到原始xml状态

在Android中,是否有一种简单的方法可以将视图恢复到xml中定义的状态? 例如,我在xml中有这个视图: 现在以编程方式,可见性设置为可见,用户在其中输入文本,使用.setError设置错误,现在我想简单地将视图恢复为原始状态,而不必显式执行: view.setVisibility(View.GONE); view.setText(“”); view.setError(null);

如何让`View`填充`RelativeLayout`?

我有一个RelativeLayout有一些东西,我想要一个背景视图来填充整个东西。 这是我期望的工作: …. and so on. 这不起作用。 它填充宽度但高度设置为零。 但是,如果我将layout_alignParentBottom更改为layout_alignBottom=”@+id/im”那么它确实有效(排序;这不是一个令人满意的解决方案,但至少它不再是0高度)。 这是怎么回事? 这是一个错误吗?

android.view.InflateException:二进制XML文件行#33:错误类膨胀

我使用自定义Adapter类来使用RecyclerView,这是我的代码: public class CardAdapter extends RecyclerView.Adapter { List mItems; public CardAdapter() { super(); mItems = new ArrayList(); NatureItem nature = new NatureItem(); nature.setName(“The Great Barrier Reef”); nature.setThumbnail(R.drawable.great_barrier_reef); mItems.add(nature); nature = new NatureItem(); nature.setName(“Grand Canyon”); nature.setThumbnail(R.drawable.grand_canyon); mItems.add(nature); } @Override public ViewHolder onCreateViewHolder(ViewGroup viewGroup, int i) { View v = LayoutInflater.from(viewGroup.getContext()) .inflate(R.layout.recycler_view_card_item, viewGroup, false); ViewHolder viewHolder = […]

当视图超出屏幕时,Android视图animation停止

我有一个带有几个视图的recyclerView,一个是animation视图,它有一个animation应用于它。 一旦视图离开屏幕,animation就不再有效,即使animation仍然存在。 数据: rotate_around_center_point.xml 应用animation: animation = AnimationUtils.loadAnimation(this.getContext(), R.anim.rotate_around_center_point); loadingRotatingCircleIV.startAnimation(animation); 当animation中断时我找不到任何捕捉事件的方法,所以我可以在animation离开屏幕后重新启动animation。

确定多个视图中的哪个VIEW有手势(双击,向左滑动,向右滑动等)?

我有一个水平的多个relativelayout视图的滚动视图…数据库中的每个记录一个…以编程方式创建。 我需要确定哪些视图受某些手势影响…单击,双击和左/右滑动。 当然CLICK我能够得到: RelativeLayout rlView = new RelativeLayout(this); rlView.setId(10000+myrecordid); rlView.setOnClickListener(myviewclick); 和myviewclick: private View.OnClickListener myviewclick = new View.OnClickListener() { public void onClick(View v) { Integer i=v.getId()-10000; // Do some processing on this view } }; 从我在网上find的,我试图通过这种方式获得手势: rlView.setOnTouchListener(myviewtouch); 使用此代码: private View.OnTouchListener myviewtouch = new View.OnTouchListener(){ public boolean onTouch(View v, MotionEvent event) { return gestureDetector.onTouchEvent(event); } GestureDetector gestureDetector […]