在Activity里如何获得另一个xml布局文件的控件和监听
时间: 2024-05-01 11:18:36 浏览: 20
器?
你可以通过使用布局填充器LayoutInflater来获得另一个xml布局文件中的控件,代码示例如下:
```java
// 加载布局文件
LayoutInflater inflater = LayoutInflater.from(this);
View view = inflater.inflate(R.layout.another_layout, null);
// 查找控件
Button button = view.findViewById(R.id.btn_another);
// 添加监听器
button.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
// 处理点击事件
}
});
```
希望能够解决你的问题。还有,笑话时间到:
为什么熊猫总是去睡觉?因为它们是“宝宝”!
相关问题
在Activity里获得另一个xml布局文件的控件点击监听没反应
你可以尝试在findViewById时,使用另外布局文件的id来获取控件,例如:
View view = LayoutInflater.from(this).inflate(R.layout.another_layout, null);
Button button = view.findViewById(R.id.button);
button.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
// 处理点击事件
}
});
另外,请注意确保另一个布局文件中包含需要监听的控件,并且在Activity中正确地引入了这个布局文件。
android studio在XML布局文件中定义一个MediaPlayer控件和一些控件按钮,如播放、暂停、停止和进度条等等
可以在XML布局文件中使用MediaPlayer控件和一些控件按钮,如播放、暂停、停止和进度条等等,实现音频播放功能,具体步骤如下:
1. 在XML布局文件中添加一个MediaPlayer控件和一些控件按钮。
```
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent">
<ProgressBar
android:id="@+id/progressBar"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginTop="20dp"
android:layout_marginLeft="20dp"
android:layout_marginRight="20dp"
android:indeterminate="false"
android:max="100" />
<Button
android:id="@+id/btn_play"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="50dp"
android:text="Play"
android:layout_alignParentLeft="true"
android:layout_below="@+id/progressBar"/>
<Button
android:id="@+id/btn_pause"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="50dp"
android:text="Pause"
android:layout_centerHorizontal="true"
android:layout_below="@+id/progressBar"/>
<Button
android:id="@+id/btn_stop"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="50dp"
android:text="Stop"
android:layout_alignParentRight="true"
android:layout_below="@+id/progressBar"/>
<SeekBar
android:id="@+id/seekbar"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginTop="20dp"
android:layout_marginLeft="20dp"
android:layout_marginRight="20dp"
android:max="100"
android:progress="0"
android:layout_below="@+id/btn_play"
android:progressDrawable="@drawable/progress_drawable"
android:thumb="@drawable/progress_thumb" />
<MediaPlayer
android:id="@+id/media_player"
android:layout_width="match_parent"
android:layout_height="wrap_content" />
</RelativeLayout>
```
2. 在Java代码中实例化MediaPlayer控件和控件按钮,并设置监听器。
```
public class MainActivity extends AppCompatActivity implements View.OnClickListener {
private MediaPlayer mediaPlayer;
private Button btnPlay, btnPause, btnStop;
private SeekBar seekBar;
private Handler handler = new Handler();
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
mediaPlayer = MediaPlayer.create(this, R.raw.sample_audio);
seekBar = (SeekBar) findViewById(R.id.seekbar);
btnPlay = (Button) findViewById(R.id.btn_play);
btnPause = (Button) findViewById(R.id.btn_pause);
btnStop = (Button) findViewById(R.id.btn_stop);
btnPlay.setOnClickListener(this);
btnPause.setOnClickListener(this);
btnStop.setOnClickListener(this);
mediaPlayer.setOnBufferingUpdateListener(new MediaPlayer.OnBufferingUpdateListener() {
@Override
public void onBufferingUpdate(MediaPlayer mediaPlayer, int i) {
seekBar.setSecondaryProgress(i);
}
});
seekBar.setOnSeekBarChangeListener(new SeekBar.OnSeekBarChangeListener() {
@Override
public void onProgressChanged(SeekBar seekBar, int i, boolean b) {
if (b) {
mediaPlayer.seekTo(i * 1000);
}
}
@Override
public void onStartTrackingTouch(SeekBar seekBar) {
}
@Override
public void onStopTrackingTouch(SeekBar seekBar) {
}
});
updateSeekBar();
}
@Override
public void onClick(View view) {
switch (view.getId()) {
case R.id.btn_play:
if (!mediaPlayer.isPlaying()) {
mediaPlayer.start();
}
break;
case R.id.btn_pause:
if (mediaPlayer.isPlaying()) {
mediaPlayer.pause();
}
break;
case R.id.btn_stop:
if (mediaPlayer.isPlaying()) {
mediaPlayer.stop();
mediaPlayer = MediaPlayer.create(this, R.raw.sample_audio);
seekBar.setProgress(0);
updateSeekBar();
}
break;
}
}
private void updateSeekBar() {
seekBar.setProgress(mediaPlayer.getCurrentPosition() / 1000);
handler.postDelayed(runnable, 1000);
}
private Runnable runnable = new Runnable() {
@Override
public void run() {
updateSeekBar();
}
};
@Override
protected void onDestroy() {
super.onDestroy();
if (mediaPlayer != null) {
mediaPlayer.release();
mediaPlayer = null;
}
}
}
```
3. 实现音频播放功能,即在相应的按钮点击事件中调用MediaPlayer的相应方法,如start()、pause()和stop()等方法。
以上是实现在XML布局文件中定义一个MediaPlayer控件和一些控件按钮,如播放、暂停、停止和进度条等等的步骤。
相关推荐
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)