我以前使用过ImageView,并了解可以设置的不同比例类型......但是我在使用ListActivity或ExpandableListActivity的行中正确地缩放ImageView时遇到了非常困难的时间.
我已经尝试将android:scaleType属性设置为每个值,但图像从不缩小.我也设置了最小和最大尺寸,它们似乎没有任何效果.我已经在XMl和代码中完成了这两件事但无济于事......
有没有人有任何想法或解决方法?
提前致谢!
编辑:这是ExpandableListView中组行的XML
<RelativeLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:padding="6dip"
>
<ImageView
android:id="@+id/item_selection_icon_id"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginRight="5dp"
android:layout_marginLeft="30dp"
android:minWidth="10dp"
android:minHeight="10dp"
android:maxWidth="10dp"
android:maxHeight="10dp"
android:scaleType="centerInside"
/>
<!-- App Name -->
<TextView
android:id="@+id/item_app_name_id"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:layout_toRightOf="@id/item_selection_icon_id"
android:layout_alignBaseline="@id/item_selection_icon_id"
android:textStyle="normal|bold"
android:textSize="24sp"
/>
<!-- Package Information -->
<TextView
android:id="@+id/item_app_pkg_name_id"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:layout_below="@id/item_app_name_id"
android:layout_toRightOf="@id/item_selection_icon_id"
android:layout_weight="2"
android:textStyle="italic"
android:textSize="12sp"
/>
</RelativeLayout>
Run Code Online (Sandbox Code Playgroud) 因此,假设我正在建立netflix,我想通过userID和电影ID记录每个视图
因此它类似于viewID,userID,时间戳,
但是,为了扩展此功能,假定每秒获得1000次观看(只是为了疯狂)。将这些视图排队到SQS是否有意义,然后我们的队列读取器可以逐个取消排队并将其写入mysql数据库。这样,数据库不会因写请求而过载。
这看起来可行吗?
更新:我弄清楚发生了什么.看评论.
我正在尝试编写一个ViewSwitcher,它将所有手势传递给它的第一个孩子,直到它收到一个缩放手势; 然后它将它们传递给它的第二个孩子,直到那个孩子完全缩小,当它恢复到第一个孩子时.我的子类有一个ScaleGestureDetector,我做了一个非常简单的监听器:
protected class OnScaleModeSwitcher implements ScaleGestureDetector.OnScaleGestureListener
{
protected PageFlipSwitcher owner;
public OnScaleModeSwitcher(PageFlipSwitcher newOwner)
{
super();
owner = newOwner;
}
@Override
public boolean onScale(ScaleGestureDetector detector) {
return false;
}
@Override
public boolean onScaleBegin(ScaleGestureDetector detector) {
owner.onScaleBegin();
//returning false here causes the rest of the gesture to be ignored.
return false;
}
@Override
public void onScaleEnd(ScaleGestureDetector detector) {
owner.onScaleEnd();
}
}
Run Code Online (Sandbox Code Playgroud)
正如您所看到的,它所做的就是在构造时引用所有者对象,然后将一些事件传递给所有者类中的方法.但是,代码未访问onScaleEnd().
我知道onInterceptTouchEvent可能有点冒险; 我尽可能地按照Android文档中的建议进行操作
@Override
public boolean onInterceptTouchEvent(MotionEvent ev)
{
onTouchEvent(ev);
return false;
}
@Override
public boolean onTouchEvent(MotionEvent ev)
{ …Run Code Online (Sandbox Code Playgroud) 在图像浏览器实例说明如何显示在一个ScrolledWindow的图像.
如果我想在可用空间中显示图像,根据需要缩放位图,该怎么办?
我的google-fu在这一次失败了.
编辑:我以为我有一些东西scrolledWindowSetScale,但看起来它在这里没有帮助.
在使用iOS 7的iPad上运行iPhone应用程序时,UIWebview scalesPageToFit无法正常工作.
我在将请求加载到WebView之前设置了scalesPageToFit = YES.
加载页面后,检查HTML文档宽度为769px,而UIWebView的滚动视图框架宽度为320.滚动视图zoomScale为1,但您可以预期它为0.41 ...(320/769).任何的想法?
我正在缩小一些位图并获得低质量的结果.我尝试了Bitmap#createScaledBitmap和Canvas#drawBitmap方法.在第一个中设置过滤器参数,在第二个的Paint对象中设置过滤器标志,没有显示出明显的差异.
我试过在这些问题中建立的解决方案
还有一些.
正如某人所说的那样,createScaledBitmap或Paint对象中的过滤器标志启用了双三次插值算法.但是,它没有任何区别.使用GIMP cubic(实际上是双三次),得到的图像比Android实现要好得多.
这里的API级别是19.
我有一个非常简单的测试应用程序,其中包含一个自定义组件MyView.java - 它显示一个可滚动且可伸缩的图像(代表一个类似Scrabble的文字游戏中的棋盘):

1)在我的比例监听器中,我调整比例因子:
public boolean onScale(ScaleGestureDetector detector) {
mScale *= detector.getScaleFactor();
// XXX how to adjust mOffsetX and mOffsetY ? XXX
constrainZoom();
constrainOffsets();
invalidate();
return true;
}
Run Code Online (Sandbox Code Playgroud)
2)然后在我的自定义组件的绘图方法中,我应用了翻译和比例因子:
protected void onDraw(Canvas canvas) {
super.onDraw(canvas);
canvas.translate(mOffsetX, mOffsetY);
canvas.scale(mScale, mScale);
gameBoard.setBounds(
0,
0,
gameBoard.getIntrinsicWidth(),
gameBoard.getIntrinsicHeight()
);
gameBoard.draw(canvas);
}
Run Code Online (Sandbox Code Playgroud)
不幸的是,用捏手势缩放时似乎有一个小错误 -
我可以看到,缩放后缩放和边界的大小正确,但图像的偏移不是.
当捏合手势的焦点远离屏幕的0点时,问题变得更糟.
用文字描述问题有点困难,但是当你从GitHub检查我的测试项目时你会立即看到它(你可以随时双击以重置偏移量和比例).
这可能是解决它的标准方法的常见问题,但我还没有找到它.
董事会形象是Denelson83的CC BY-SA,代码基于如何通过反弹效果博客支持fling 手势.
JSFiddle:https:// http://jsfiddle.net/thou6ju9/1//
情况:
动态生成带字母的图块并添加到绿色区域.使用CSS,它们使用flex安排在div中.屏幕调整大小后,字母会重新排列以适应新的分辨率.
目标:
如果屏幕非常大,字母应通过缩放占用更多空间,但仍保持其纵横比.
更新:
如果字母可以放在1行,它们应该居中并缩放,直到绿色区域的大部分被吸入(不相互重叠,因此尊重边距)当需要2行时,字母应该均匀分布和缩放(根据两行之间的可用空间)
问题:
我假设单独使用CSS是不可能的.与JS的混合搭配将是最佳选择.问题是:究竟是哪种方式?
我已经包含了一个额外的函数(adjustLetters),如果有必要,可以进行一些JS调整
for (var index = 0; index < AMOUNT_OF_LETTERS; index++) {
sContainer.append(addLetter(arrLength[index]));
}
adjustLetters();
Run Code Online (Sandbox Code Playgroud)
限制:
- 将显示1到10个字母 - 字母不能超出绿色区域 - 当所有字母都是1,2或3个字符或两者的组合时它应该起作用 - 这将始终以横向显示(不是真的限制)
var arrLength = [1, 3, 2, 1, 2, 3, 1, 2, 3, 3, 2, 2, 1, 2, 3];
Run Code Online (Sandbox Code Playgroud)
字母的长度在此数组中定义
一个完整的解决方案将是令人敬畏的,但正确方向的方向肯定也赞赏:-)
我在这个场景中有27个网格,每个网格都有一个相关的数字.数字最大的那个将具有标度1.其余的将具有连续小于1的值.
接下来我希望它相应地攀爬每个循环.当每个网格的位置发生变化时,会出现问题.
实际上它按比例缩放到了应有的大小,但它改变了位置.几个屏幕正在堆叠,我正在努力.

我只需要你爬上并保持在这个例子中的相同位置:

美国各州都在扩大规模,但仍保持其地位.我认为它们可以扩展到图形的中心.
我创建了网格(每个网格称为"municipios")
for(var s=0; s< features.features[x].geometry.coordinates[0].length; s=s+1){
geometria[x].vertices.push(new THREE.Vector3((((features.features[x].geometry.coordinates[0][s][0])+75.5)*10),(((features.features[x].geometry.coordinates[0][s][1])-5.5)*10),0));
}
forma_figura[x]=new THREE.Shape(geometria[x].vertices);
extrude_geometria[x]=new THREE.ExtrudeGeometry(forma_figura[x],datos_extrusion);
municipios[x] = new THREE.Mesh( extrude_geometria[x], materialExtrude[x] );
scene.add(municipios[x]);
// so I change the scale:
//formula is the value of scale. The biggest number has escale 1.
new TWEEN.Tween(municipios[x].scale).to({ x: formula, y: formula }, 1000).start();
//this ultimate line is the same: municipios[x].scale.set(formula,formula,formula);
Run Code Online (Sandbox Code Playgroud) 我正在尝试实现如下的RecyclerView:
项目是相同类型但具有不同比例的视图.我试着打电话
view.setScaleX(scaleFactor); view.setScaleY(scaleFactor);
Run Code Online (Sandbox Code Playgroud)
在OnBindViewHolderRecycleView适配器的方法中以及在ItemDecorator中,但每次列表的行为都是意外的.实现它的最佳方法是什么?可能与其他一些控件如PagerAdapter或其他.
UPD:缩放系数取决于适配器中项目的位置,滚动时不应更改.
UPD2:这是我在OnBoundViewHolder中尝试过的代码:
int childCount = recyclerView.getChildCount();
View view = holder.getView();
if (position == childCount){
view.setScaleX(1f);
view.setScaleY(1f);
} else if (position == childCount - 1){
view.setScaleX(0.8f);
view.setScaleY(0.8f);
} else if (position == childCount - 2){
view.setScaleX(0.6f);
view.setScaleY(0.6f);
}
else {
view.setScaleX(0.4f);
view.setScaleY(0.4f);
}
Run Code Online (Sandbox Code Playgroud)
这是结果(滚动时它会改变):
和相同的代码,但在ItemDecorator getItemOffsets: