我是Android开发的新手,我正在探索View.我遇到已知两种方法onDraw(Canvas c)和draw(Canvas c).
请解释一下这两种方法的区别和用法?使用图像更新画布时,哪种方法可以提供更好的性能(FPS)?
我成功地通过TCP套接字发送和读取文本和图像数据.但我无法发送和读取音频流数据.
服务器上的示例代码:
public class ServerAudio {
/**
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
try {
ServerSocket serverSocker = new ServerSocket();
Socket client = null;
serverSocker.bind(new InetSocketAddress(6666));
if (serverSocker.isBound()) {
client = serverSocker.accept();
OutputStream out = client.getOutputStream();
while (true) {
AudioInputStream ain = testPlay("C:/Users/Public/Music/Sample Music/adios.wav");
if (ain != null) {
AudioSystem.write(ain, AudioFileFormat.Type.WAVE, out);
}
}
}
serverSocker.close();
} catch (Exception e) {
e.printStackTrace();
}
}
public static AudioInputStream testPlay(String filename) {
AudioInputStream …Run Code Online (Sandbox Code Playgroud) 我是Android布局的新手,请告诉我在使用嵌套布局而不是使用下面的布局时,应用程序的性能如何,布局上面,布局正确,布局左侧组件的相对布局属性.
例如:
<RelativeLayout>
<scrollView>
<RelativeLayout>
<LinearLayout> Header<LinearLayout>
<TextView/> <TextView/>
<TableLayout>
<TableRow><ImageView/> <TextView> <Spinner><TableRow>
<TableRow><ImageView/> <TextView> <Spinner><TableRow>
<TableRow><ImageView/> <TextView> <Spinner><TableRow>
<TableRow><ImageView/> <TextView> <Spinner><TableRow>
</TableLayout>
<TextView>
<TableLayout>
<TableRow>
<LinearLayout> <ImageView><TextView></LinearLayout>
<EditText>
</TableRow>
<TableRow>
<LinearLayout> <ImageView><TextView></LinearLayout>
<EditText>
</TableRow>
<TableRow>
<TextView>
< Spinner>
</TableRow>
<TableRow><TextView> <Spinner></TableRow>
</TableLayout>
<TableLayouts>---</TableLayout>
<LinearLayout> footer</LinearLayout>
</RelativeLayout>
<ScrollView>
</RelativeLayout>
Run Code Online (Sandbox Code Playgroud)
谢谢和问候Yamini
我已经实现了2个asyn任务,我使用的是android4.0.其中一个asyntask连续执行,第二个根据需求执行(可能是多个时间).例如.
class AsynTask1 exetends AsyncTask<Void, Bitmap, Void>{
protected Void doInBackground(Void... params) {
while(true){
publishProgress(bmp);
}
}
}
class AsynTask2 extends AsyncTask<String, Void,Void>{
protected Void doInBackground(String... params){
System.out.println(params[0])
}
}
Run Code Online (Sandbox Code Playgroud)
在活动课上
class MainActivity extends Activity{
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
new AsynTask1().execute();
int i=0;
while(i<100)
{
if(i%2==0)
new AsynTask2().execute("no is even"+i);
i++
}
}
}
Run Code Online (Sandbox Code Playgroud)
在上面的例子中,不执行AsynTask2.
如果尝试使用executeOnExecutor(AsyncTask.THREAD_POOL_Executor,params),则执行asyntask并从AsynTask2获取打印消息,但这些消息不是按顺序排列的(如0 2 6 4 10 8 12 14 ....).
有没有办法连续执行AsynTask1和顺序顺序的AsynTask2,以防止顺序(如0 2 4 6 8 10 12 14 ....).
谢谢和问候迷你.
我正在使用android3.0开发应用程序。我需要更新之前绘制的画布。在搜索这个时,我在 Android API 文档中看到了 View 类的“isDirty()”。
但我并没有得到太多关于这方面的明确信息。请建议我“如何将画布的一部分设置为脏并仅更新该部分?”。