android studio11开发电影app实例
时间: 2023-07-11 18:13:27 浏览: 60
好的,下面是一个简单的电影app的开发实例,使用Android Studio 4.1.1版本:
1. 创建一个新的Android项目,选择Empty Activity作为模板。
2. 在app/build.gradle文件中添加以下依赖项:
```
dependencies {
implementation 'com.android.volley:volley:1.1.1'
}
```
这将添加Volley库,用于从网络中获取电影数据。
3. 在res/layout目录中创建一个新的布局文件activity_main.xml,用于显示电影列表。以下是一个简单的布局:
```
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical">
<ListView
android:id="@+id/movie_list"
android:layout_width="match_parent"
android:layout_height="match_parent" />
</LinearLayout>
```
这里使用了ListView来显示电影列表。
4. 在MainActivity.java文件中,添加以下代码来获取电影数据并将其显示在ListView中:
```
public class MainActivity extends AppCompatActivity {
private ListView mMovieList;
private MovieListAdapter mMovieListAdapter;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
mMovieList = findViewById(R.id.movie_list);
mMovieListAdapter = new MovieListAdapter(this);
mMovieList.setAdapter(mMovieListAdapter);
// 获取电影数据
String url = "https://api.themoviedb.org/3/movie/popular?api_key=YOUR_API_KEY";
JsonObjectRequest request = new JsonObjectRequest(Request.Method.GET, url, null,
new Response.Listener<JSONObject>() {
@Override
public void onResponse(JSONObject response) {
try {
JSONArray results = response.getJSONArray("results");
List<Movie> movieList = new ArrayList<>();
for (int i = 0; i < results.length(); i++) {
JSONObject movieObject = results.getJSONObject(i);
Movie movie = new Movie();
movie.setTitle(movieObject.getString("title"));
movie.setPosterPath(movieObject.getString("poster_path"));
movieList.add(movie);
}
mMovieListAdapter.setMovieList(movieList);
} catch (JSONException e) {
e.printStackTrace();
}
}
},
new Response.ErrorListener() {
@Override
public void onErrorResponse(VolleyError error) {
error.printStackTrace();
}
});
Volley.newRequestQueue(this).add(request);
}
}
```
这里使用了The Movie Database API来获取电影数据,需要在https://www.themoviedb.org/上注册并获取API密钥。将YOUR_API_KEY替换为您自己的API密钥。
5. 创建一个新的Movie类,用于存储电影数据:
```
public class Movie {
private String mTitle;
private String mPosterPath;
public String getTitle() {
return mTitle;
}
public void setTitle(String title) {
mTitle = title;
}
public String getPosterPath() {
return mPosterPath;
}
public void setPosterPath(String posterPath) {
mPosterPath = posterPath;
}
}
```
6. 创建一个新的MovieListAdapter类,用于将Movie对象显示在ListView中:
```
public class MovieListAdapter extends BaseAdapter {
private Context mContext;
private List<Movie> mMovieList;
public MovieListAdapter(Context context) {
mContext = context;
mMovieList = new ArrayList<>();
}
public void setMovieList(List<Movie> movieList) {
mMovieList = movieList;
notifyDataSetChanged();
}
@Override
public int getCount() {
return mMovieList.size();
}
@Override
public Object getItem(int position) {
return mMovieList.get(position);
}
@Override
public long getItemId(int position) {
return position;
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {
if (convertView == null) {
convertView = LayoutInflater.from(mContext).inflate(R.layout.movie_item, parent, false);
}
ImageView posterImageView = convertView.findViewById(R.id.poster_image);
TextView titleTextView = convertView.findViewById(R.id.title_text);
Movie movie = mMovieList.get(position);
titleTextView.setText(movie.getTitle());
String posterUrl = "https://image.tmdb.org/t/p/w500" + movie.getPosterPath();
Picasso.get().load(posterUrl).into(posterImageView);
return convertView;
}
}
```
这里使用了Picasso库,用于从网络中加载电影海报图片。
7. 在res/layout目录中创建一个新的布局文件movie_item.xml,用于显示单个电影项:
```
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="horizontal"
android:padding="16dp">
<ImageView
android:id="@+id/poster_image"
android:layout_width="80dp"
android:layout_height="120dp"
android:scaleType="fitCenter" />
<TextView
android:id="@+id/title_text"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginStart="16dp"
android:textSize="16sp" />
</LinearLayout>
```
8. 运行应用程序,在ListView中显示电影列表。
这是一个简单的电影app的开发实例,您可以根据自己的需求进行修改和扩展。