У меня есть (почти) квадратичный ImageView, содержащий изображение и слайдер, который должен позволять пользователю увеличивать изображение в пределах границ ImageView. Изображение должно всегда придерживаться границ ImageView, поэтому я хочу функцию масштабирования без изменения размеров. На данный момент мое изображение уже инициализировано слишком большим и становится все больше и больше, если я запускаю слайдер.Scale ImageView с слайдером
Мой XML:
<View id=imageContainer>
<ImageView id="picture" top="0" left="30" height="120" width="120"></ImageView>
<View id="imagePreferences">
<Label id="scaleLabel">Foto skalieren</Label>
<Slider id="scaleSlider" onChange="scalePicture"></Slider>
</View>
</View>
Мой TSS
"#imageContainer": {
top: "80",
left: "0",
height: "120",
width: "90%"
}
"#picture": {
top: "0",
left: "0",
height: "120",
width: "40%"
}
"#imagePreferences": {
top: "0",
right: "0",
height: "120",
width: "40%"
}
"#scaleLabel": {
top: "0",
left: "0",
height: "10",
font: {
fontSize: 8
}
}
"#scaleSlider": {
top: "10",
left: "0",
min: "0",
max: "100",
value: "0",
height: "10",
thumbImage: "/media/slider_btn.png"
}
И мои ЯШ:
var image;
var imageSet = false;
var imageMatrix;
var file = Titanium.Filesystem.getFile(Titanium.Filesystem.applicationDataDirectory, "savedChallengeImage.jpeg");
if(file) {
$.picture.setImage(file);
image = file;
imageSet = true;
imageMatrix = Titanium.UI.create2DMatrix();
}
function scalePicture(e) {
if (imageSet) {
var scale = Titanium.UI.createAnimation();
imageMatrix = imageMatrix.scale(e.Value);
scale.transform = imageMatrix;
scale.duration = 0;
$.picture.animate(scale);
}
}
попытайтесь установить 'min: '-10''' max:' 10'' и 'value: '0'' для' # scaleSlider' – Swanand