Это можно сделать с помощью простого ListView, который содержит изначально скрытое представление и пользовательский класс, расширяющий Animation. Основная идея состоит в том, чтобы начать с View.GONE
, а затем постепенно изменять размер поля с отрицательного значения до требуемого размера, устанавливая видимость на View.VISIBLE
.
См .:
.. и, наконец,
Последний пример содержит весь необходимый код. Это выглядит немного хакерским для меня, особенно тот факт, что вы должны изначально установить view.bottomMargin = -50
или более, в противном случае анимация не работает должным образом с первого раза, но до сих пор я не нашел какой-либо жизнеспособной альтернативы (кроме использования ScrollView с ваши собственные элементы контейнера вместо ListView).
И, наконец, это приложение включает в себя приведенный выше пример, среди множества других полезных примеров со ссылками на источники:
Обновление: Google удалил приложение из игрового магазина якобы за нарушение интеллектуальной собственности (хотя оно содержало только демонстрации и ссылки на проекты с открытым исходным кодом), автор теперь сделал apk доступен для прямой загрузки с http://goo.gl/ihcgs Подробнее см. https://plus.google.com/108176685096570584154/posts . NB: я не связан с автором.
В .NET вы можете позвонить Graphics.MeasureString, чтобы узнать, как нарисованный текст будет большим.
Верно, но при использовании PDFsharp вы вызываете XGraphics.MeasureString.
В .NET вы можете вызвать Graphics.MeasureString , чтобы узнать, насколько большим будет нарисованный текст.
Объект PdfSharp.Drawing.XGraphics имеет метод MeasureString, который возвращает то, что вам нужно.
var pdfDoc = new PdfSharp.Pdf.PdfDocument();
var pdfPage = pdfDoc.AddPage();
var pdfGfx = PdfSharp.Drawing.XGraphics.FromPdfPage(pdfPage);
var pdfFont = new PdfSharp.Drawing.XFont("Helvetica", 20);
while (pdfGfx.MeasureString("Hello World!").Width > pdfPage.Width)
--pdfFont.Size;
pdfGfx.DrawString("Hello World!", pdfFont
, PdfSharp.Drawing.XBrushes.Black
, new PdfSharp.Drawing.XPoint(100, 100));
Это должно вам помочь. Учтите, что я не тестировал этот код, так как написал его на лету, чтобы помочь. Он может содержать некоторые ошибки времени компиляции, но вы можете понять суть.