Android 如何将像素(手机显示宽度)转换为毫秒(ms)?
我正在尝试使用从文件中获取的字节数组为录制的声音绘制图形,并尝试将其设置为搜索栏的背景。我已经成功地提取到上面所示的金额,但它并不准确。为了得到精确的图形,我需要将像素转换为毫秒。实际上,搜索栏中的最大更新和进度更新都是以毫秒为单位的。但我在循环中使用显示宽度的像素绘制图形。因此,我认为如果我可以将像素转换为毫秒,并在毫秒内绘制图形,则可以生成准确的进度条形图(希望如此) 那么有人能帮我把像素转换成毫秒吗???如果手机的显示宽度是480,我需要把480转换成毫秒,不管怎样??帮帮我Android 如何将像素(手机显示宽度)转换为毫秒(ms)?,android,graph,type-conversion,pixel,milliseconds,Android,Graph,Type Conversion,Pixel,Milliseconds,我正在尝试使用从文件中获取的字节数组为录制的声音绘制图形,并尝试将其设置为搜索栏的背景。我已经成功地提取到上面所示的金额,但它并不准确。为了得到精确的图形,我需要将像素转换为毫秒。实际上,搜索栏中的最大更新和进度更新都是以毫秒为单位的。但我在循环中使用显示宽度的像素绘制图形。因此,我认为如果我可以将像素转换为毫秒,并在毫秒内绘制图形,则可以生成准确的进度条形图(希望如此) 那么有人能帮我把像素转换成毫秒吗???如果手机的显示宽度是480,我需要把480转换成毫秒,不管怎样??帮帮我 width=
width=number of pixels of display width
for (int iPixel = 0; iPixel < width; iPixel++)
{
{
int start = (int) ((float) iPixel * ((float) width));
int end = (int) ((float) (iPixel + 1) * ((float) width));
for (int i = start; i < end; i++) {
//code to find the pixel to draw
}
//code to draw in canvas
}
width=显示宽度的像素数
对于(int-iPixel=0;iPixel
试试这个:
total width(unit) / total file length(milliseconds) = result(unit/milliseconds)
然后按结果
每毫秒
编辑:
我的建议是:
1-设置SeekBar最大值=100;最小值=0
2-使用以下方法将介质长度转换为百分比:
public int getProgressPercentage(long currentDuration, long totalDuration){
Double percentage = (double) 0;
long currentSeconds = (int) (currentDuration);
long totalSeconds = (int) (totalDuration);
// calculating percentage
percentage =(((double)currentSeconds)/totalSeconds)*100;
// return percentage
return percentage.intValue();
}
然后在SeekBar中使用这个percent,比如setProgress(getProgressPercentage(long currentDuration,long totalDuration));
3-在seekbarchangelistener上实现,并使用其进度
参数绘制图形:
@Override
public void onProgressChanged(SeekBar seekBar, int progress, boolean fromTouch) {
// Here use int progress to draw graph. It is percent
// Current width = 400*percent/100 = result;
// draw until result value;
}
/**
* When user starts moving the progress handler
* */
@Override
public void onStartTrackingTouch(SeekBar seekBar) {}
/**
* When user stops moving the progress hanlder
* */
@Override
public void onStopTrackingTouch(SeekBar seekBar) {}
希望这对您有所帮助。试试这个:
total width(unit) / total file length(milliseconds) = result(unit/milliseconds)
然后按结果
每毫秒
编辑:
我的建议是:
1-设置SeekBar最大值=100;最小值=0
2-使用以下方法将介质长度转换为百分比:
public int getProgressPercentage(long currentDuration, long totalDuration){
Double percentage = (double) 0;
long currentSeconds = (int) (currentDuration);
long totalSeconds = (int) (totalDuration);
// calculating percentage
percentage =(((double)currentSeconds)/totalSeconds)*100;
// return percentage
return percentage.intValue();
}
然后在SeekBar中使用这个percent,比如setProgress(getProgressPercentage(long currentDuration,long totalDuration));
3-在seekbarchangelistener上实现,并使用其进度
参数绘制图形:
@Override
public void onProgressChanged(SeekBar seekBar, int progress, boolean fromTouch) {
// Here use int progress to draw graph. It is percent
// Current width = 400*percent/100 = result;
// draw until result value;
}
/**
* When user starts moving the progress handler
* */
@Override
public void onStartTrackingTouch(SeekBar seekBar) {}
/**
* When user stops moving the progress hanlder
* */
@Override
public void onStopTrackingTouch(SeekBar seekBar) {}
希望这对您有所帮助。那么以毫秒为单位的最大长度是多少?我猜歌曲的长度。那么,最大毫秒和最大像素之间的比率。在录制时或保存录制的文件后执行此操作?@AwadKab这是在保存歌曲后执行的file@DavidOlsson我们有最大像素和毫秒,如何利用比率解决这个问题?我正在画一个循环哪些循环根据最大像素数我需要根据毫秒更改循环。@SreedevR你还需要如何从像素转换为毫秒?你需要一些东西来转换它。单位之间的比率。那么以毫秒为单位的最大长度是多少?我猜歌曲的长度。那么最大毫秒和最大像素之间的比率。这样做吗是在录制时还是在保存录制的文件后?@AwadKab这是在保存文件后完成的file@DavidOlsson我们有最大像素和毫秒,如何利用比率来解决这个问题?我在画一个循环,它根据最大像素数循环,我需要根据毫秒来改变这个循环。@SreedevR还有什么方法可以从像素转换到工厂呢等秒?你需要一些东西来转换它。单位之间的比率。这不起作用,总宽度是480,总持续时间是18947,所以计算结果是这样的:480/18947,它没有循环,因为结果没有值。没有图形正在绘制…实际上我没有在运行时绘制图形,我把文件保存在SD卡上。Initia通常我读取字节,使用画布绘制图形,并将其设置为seekbar的背景。这就是场景。是否尝试获取seekbar Widthseekbar.getWidth()
?它是返回SeekBar宽度(以像素为单位)。是的,我的搜索栏与显示器的宽度相同,我现在也获得了像素。我需要将其转换为毫秒来绘制。如果总像素为480,它可以转换为毫秒吗?这不起作用,总宽度为480,总持续时间为18947,因此计算结果如下所示=480/18947,它的not looping coz结果没有值。没有图形正在绘制…实际上,我没有在运行时绘制图形,我将文件保存在SD卡上。最初我读取字节,使用画布绘制图形,并将其设置为seekbar的背景。这就是场景。是否尝试获取seekbar Widthseekbar.getWidth()
?它是返回SeekBar宽度(以像素为单位)。是的,我的搜索栏与显示器的宽度相同,我现在也获取像素。我需要将其转换为毫秒来绘制。如果总像素为480,它可以转换为毫秒吗??