Я работаю над приложением рисования для Android, и я хотел бы использовать необработанные данные от сенсорного экрана устройства для корректировки кисти пользователя, как они тянут. Я видел другие приложения для Android (iSteam, например), где размер кисти основан на размере Вашего цифрового отпечатка на экране. До рисования приложений идут, который был бы огромной функцией.
Существует ли способ получить эти данные? Я погуглил долгое время, но я не нашел источника, демонстрирующего это. Я знаю, что это возможно, потому что Браузер дельфина добавляет мультисенсорную поддержку Герою без любых изменений под прикладным уровнем. Необходимо смочь получить 2D матрицу необработанных данных или чего-то...
Я был бы очень признателен за любую справку, которую я могу получить!
Существуют некоторые свойства в Motion Motion класс. Вы можете использовать метод Metsize () , чтобы найти размер объекта. Класс событий Motion также дает доступ к давлению, координаты и т. Д. ...
Если вы проверяете APIDEMOS в SDK, есть простое приложение Paitning, называемое TouchPaint
package com.example.android.apis.graphics;
, он использует следующее, чтобы нарисовать на холсте
@Override public boolean onTouchEvent(MotionEvent event) {
int action = event.getAction();
mCurDown = action == MotionEvent.ACTION_DOWN
|| action == MotionEvent.ACTION_MOVE;
int N = event.getHistorySize();
for (int i=0; i<N; i++) {
//Log.i("TouchPaint", "Intermediate pointer #" + i);
drawPoint(event.getHistoricalX(i), event.getHistoricalY(i),
event.getHistoricalPressure(i),
event.getHistoricalSize(i));
}
drawPoint(event.getX(), event.getY(), event.getPressure(),
event.getSize());
return true;
}
private void drawPoint(float x, float y, float pressure, float size) {
//Log.i("TouchPaint", "Drawing: " + x + "x" + y + " p="
// + pressure + " s=" + size);
mCurX = (int)x;
mCurY = (int)y;
mCurPressure = pressure;
mCurSize = size;
mCurWidth = (int)(mCurSize*(getWidth()/3));
if (mCurWidth < 1) mCurWidth = 1;
if (mCurDown && mBitmap != null) {
int pressureLevel = (int)(mCurPressure*255);
mPaint.setARGB(pressureLevel, 255, 255, 255);
mCanvas.drawCircle(mCurX, mCurY, mCurWidth, mPaint);
mRect.set(mCurX-mCurWidth-2, mCurY-mCurWidth-2,
mCurX+mCurWidth+2, mCurY+mCurWidth+2);
invalidate(mRect);
}
mFadeSteps = 0;
}
Надеюсь, что помогает :)
strip _ tags ()
удаляет HTML из значения переменной. Второй параметр полезен, если требуется создать исключения и оставить определенные теги в, например, тег p
aragreh.
$text = '<p>Paragraph.</p> <!-- boo --> <a href="#">Other text</a>';
echo strip_tags($text); // Paragraph. Other text
echo strip_tags($text, '<p><a>'); // <p>Paragraph.</p> <a href="#">Other text</a>
Если вы хотите остаться в стороне от регулярных выражений, можно использовать phpQuery для обработки значения, а затем использовать селекторы и методы в стиле jQuery для получения значения:
// Bring in phpQuery
require("phpQuery-onefile.php");
// Load up our HTML
phpQuery::newDocumentHTML("<a href='http://sampsonresume.com/'>Homepage</a>");
// Print the HREF attribute of the first Anchor
print pq("a:first")->attr("href"); // http://sampsonresume.com/
Для поиска URL-адреса можно использовать следующее:
$var = "<a href='http://sampsonresume.com/'>Homepage</a>";
preg_match("(https?://([-\w\.]+)+(:\d+)?(/([\w/_\.]*(\?\S+)?)?)?)",$var,$match);
print $match[0]; // http://sampsonresume.com/
-121--4690954-
Проход 1.)
<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet
version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output method="xml" indent="yes" encoding="UTF-8"/>
<xsl:template match="/">
<xsl:apply-templates />
</xsl:template>
<xsl:template match="Detail">
<Detail>
<xsl:copy-of select="@*"/>
<xsl:value-of select="." disable-output-escaping="yes" />
</Detail>
</xsl:template>
</xsl:stylesheet>
Будет производить:
<?xml version="1.0" encoding="UTF-8"?>
<Detail uid="6">
<div class="heading">welcome to my page</div>
<div class="paragraph">this is paraph</div>
</Detail>
Pass 2.)
<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet
version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output method="xml" indent="yes" encoding="UTF-8"/>
<xsl:template match="/">
<xsl:apply-templates />
</xsl:template>
<xsl:template match="@*|node()">
<xsl:copy>
<xsl:apply-templates select="@*| node()" />
</xsl:copy>
</xsl:template>
<xsl:template match="div[@class='heading']">
<h1><xsl:value-of select="."/></h1>
</xsl:template>
<xsl:template match="div[@class='paragraph']">
<p><xsl:value-of select="."/></p>
</xsl:template>
</xsl:stylesheet>
Производит:
<?xml version="1.0" encoding="UTF-8"?>
<Detail uid="6">
<h1>welcome to my page</h1>
<p>this is paraph</p>
</Detail>
-121--3632201- Я работаю над чем-то похожим, и я бы предложил посмотреть на Canvas и Paint также. Просмотр getHistiveSize () в событии движения также может быть полезен для определения того, как долго был воспроизведен конкретный штрих.