引言
Android作为一种开放源代码的操作系统,已经成为全球最受欢迎的移动平台之一。对于初学者来说,Android编程可能显得有些复杂,但通过一些实用的实例,我们可以轻松地掌握这门技术。本文将深入解析50个Android编程的实用实例,帮助读者快速提升编程技能。
实例1:Android环境搭建
主题句
搭建Android开发环境是学习Android编程的第一步。
解析
- 安装Java Development Kit (JDK)
- 安装Android Studio
- 配置Android模拟器
// 伪代码:安装JDK
public void installJDK() {
// 安装步骤
}
// 伪代码:安装Android Studio
public void installAndroidStudio() {
// 安装步骤
}
// 伪代码:配置Android模拟器
public void configureEmulator() {
// 配置步骤
}
实例2:创建第一个Android应用
主题句
创建第一个Android应用是检验开发环境是否搭建成功的关键。
解析
- 创建新项目
- 编写MainActivity
// MainActivity.java
public class MainActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
}
}
实例3:布局文件
主题句
布局文件是Android应用的外观设计。
解析
- 使用XML定义布局
- 使用ConstraintLayout进行复杂布局
<!-- activity_main.xml -->
<ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent">
<Button
android:id="@+id/button"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="点击我"
android:layout_centerInParent="true"/>
</ConstraintLayout>
实例4:用户交互
主题句
用户交互是Android应用的核心功能。
解析
- 使用Button、EditText等组件
- 监听用户事件
// MainActivity.java
public class MainActivity extends AppCompatActivity {
private Button button;
private EditText editText;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
button = findViewById(R.id.button);
editText = findViewById(R.id.edit_text);
button.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
String text = editText.getText().toString();
Toast.makeText(MainActivity.this, text, Toast.LENGTH_SHORT).show();
}
});
}
}
实例5:数据存储
主题句
数据存储是Android应用的基础。
解析
- 使用SharedPreferences
- 使用SQLite数据库
// MainActivity.java
public class MainActivity extends AppCompatActivity {
private SharedPreferences sharedPreferences;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
sharedPreferences = getSharedPreferences("MyApp", MODE_PRIVATE);
sharedPreferences.edit().putString("name", "张三").apply();
}
}
实例6:网络请求
主题句
网络请求是Android应用获取外部数据的重要方式。
解析
- 使用HttpURLConnection
- 使用OkHttp库
// MainActivity.java
public class MainActivity extends AppCompatActivity {
private static final String URL = "http://example.com/data";
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
new Thread(new Runnable() {
@Override
public void run() {
try {
URL url = new URL(URL);
HttpURLConnection connection = (HttpURLConnection) url.openConnection();
connection.setRequestMethod("GET");
int responseCode = connection.getResponseCode();
if (responseCode == HttpURLConnection.HTTP_OK) {
// 处理响应数据
}
} catch (Exception e) {
e.printStackTrace();
}
}
}).start();
}
}
实例7:图片加载
主题句
图片加载是Android应用中常见的功能。
解析
- 使用ImageLoader库
- 使用Glide库
// MainActivity.java
public class MainActivity extends AppCompatActivity {
private ImageView imageView;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
imageView = findViewById(R.id.image_view);
Glide.with(this).load("http://example.com/image.jpg").into(imageView);
}
}
实例8:通知
主题句
通知是Android应用与用户沟通的重要方式。
解析
- 使用NotificationManager
- 使用NotificationCompat.Builder
// MainActivity.java
public class MainActivity extends AppCompatActivity {
private NotificationManager notificationManager;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
notificationManager = (NotificationManager) getSystemService(NOTIFICATION_SERVICE);
Notification notification = new NotificationCompat.Builder(this)
.setContentTitle("通知标题")
.setContentText("通知内容")
.setSmallIcon(R.drawable.ic_notification)
.build();
notificationManager.notify(1, notification);
}
}
实例9:服务
主题句
服务是Android应用在后台执行任务的组件。
解析
- 创建Service
- 绑定Service
// MyService.java
public class MyService extends Service {
@Override
public IBinder onBind(Intent intent) {
return null;
}
}
// MainActivity.java
public class MainActivity extends AppCompatActivity {
private ServiceConnection connection = new ServiceConnection() {
@Override
public void onServiceConnected(ComponentName className, IBinder service) {
// 绑定成功,获取Service实例
}
@Override
public void onServiceDisconnected(ComponentName arg0) {
// 绑定失败
}
};
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
Intent intent = new Intent(this, MyService.class);
bindService(intent, connection, BIND_AUTO_CREATE);
}
}
实例10:内容提供器
主题句
内容提供器是Android应用数据共享的桥梁。
解析
- 创建ContentProvider
- 使用ContentResolver查询数据
// MyContentProvider.java
public class MyContentProvider extends ContentProvider {
@Override
public boolean onCreate() {
return true;
}
@Override
public Cursor query(Uri uri, String[] projection, String selection, String[] selectionArgs, String sortOrder) {
// 查询数据
return null;
}
@Override
public String getType(Uri uri) {
return null;
}
@Override
public Uri insert(Uri uri, ContentValues values) {
// 插入数据
return null;
}
@Override
public int delete(Uri uri, String selection, String[] selectionArgs) {
// 删除数据
return 0;
}
@Override
public int update(Uri uri, ContentValues values, String selection, String[] selectionArgs) {
// 更新数据
return 0;
}
}
// MainActivity.java
public class MainActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
ContentResolver resolver = getContentResolver();
Cursor cursor = resolver.query(Uri.parse("content://myprovider/mytable"), null, null, null, null);
if (cursor != null) {
while (cursor.moveToNext()) {
// 处理数据
}
cursor.close();
}
}
}
实例11:广播接收器
主题句
广播接收器是Android应用接收系统消息的重要方式。
解析
- 创建BroadcastReceiver
- 注册/注销广播接收器
// MyReceiver.java
public class MyReceiver extends BroadcastReceiver {
@Override
public void onReceive(Context context, Intent intent) {
// 处理消息
}
}
// MainActivity.java
public class MainActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
IntentFilter filter = new IntentFilter();
filter.addAction("my_action");
registerReceiver(new MyReceiver(), filter);
// 注销广播接收器
unregisterReceiver(new MyReceiver());
}
}
实例12:Activity生命周期
主题句
Activity生命周期是Android应用开发中的重要概念。
解析
- onCreate()
- onStart()
- onResume()
- onPause()
- onStop()
- onDestroy()
// MainActivity.java
public class MainActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
}
@Override
protected void onStart() {
super.onStart();
// 在此执行一些操作
}
@Override
protected void onResume() {
super.onResume();
// 在此执行一些操作
}
@Override
protected void onPause() {
super.onPause();
// 在此执行一些操作
}
@Override
protected void onStop() {
super.onStop();
// 在此执行一些操作
}
@Override
protected void onDestroy() {
super.onDestroy();
// 在此执行一些操作
}
}
实例13:Fragment生命周期
主题句
Fragment生命周期是Android应用开发中的重要概念。
解析
- onCreate()
- onCreateView()
- onViewCreated()
- onStart()
- onResume()
- onPause()
- onStop()
- onDestroyView()
- onDestroy()
// MyFragment.java
public class MyFragment extends Fragment {
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
// 创建视图
return inflater.inflate(R.layout.fragment_my, container, false);
}
@Override
public void onViewCreated(View view, Bundle savedInstanceState) {
super.onViewCreated(view, savedInstanceState);
// 在此执行一些操作
}
@Override
public void onStart() {
super.onStart();
// 在此执行一些操作
}
@Override
public void onResume() {
super.onResume();
// 在此执行一些操作
}
@Override
public void onPause() {
super.onPause();
// 在此执行一些操作
}
@Override
public void onStop() {
super.onStop();
// 在此执行一些操作
}
@Override
public void onDestroyView() {
super.onDestroyView();
// 在此执行一些操作
}
@Override
public void onDestroy() {
super.onDestroy();
// 在此执行一些操作
}
}
实例14:Intent
主题句
Intent是Android应用组件间通信的桥梁。
解析
- 显式Intent
- 隐式Intent
// MainActivity.java
public class MainActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
// 显式Intent
Intent intent = new Intent(this, MyActivity.class);
startActivity(intent);
// 隐式Intent
Intent intent2 = new Intent();
intent2.setAction("my_action");
startActivity(intent2);
}
}
实例15:Activity启动模式
主题句
Activity启动模式决定了Activity的创建方式和返回栈的管理。
解析
- 标准模式
- 单实例模式
- 单任务模式
- 单实例任务模式
// MainActivity.java
public class MainActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
// 设置启动模式
Intent intent = new Intent(this, MyActivity.class);
intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK | Intent.FLAG_ACTIVITY_CLEAR_TASK);
startActivity(intent);
}
}
实例16:Fragment替换
主题句
Fragment替换是Android应用实现页面切换的重要方式。
解析
- 使用FragmentManager替换Fragment
// MainActivity.java
public class MainActivity extends AppCompatActivity {
private FragmentManager fragmentManager;
private Fragment myFragment;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
fragmentManager = getSupportFragmentManager();
myFragment = new MyFragment();
fragmentManager.beginTransaction().replace(R.id.container, myFragment).commit();
}
}
实例17:TabLayout
主题句
TabLayout是Android应用实现标签页的重要组件。
解析
- 使用TabLayout添加标签页
// MainActivity.java
public class MainActivity extends AppCompatActivity {
private TabLayout tabLayout;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
tabLayout = findViewById(R.id.tab_layout);
tabLayout.addTab(tabLayout.newTab().setText("标签页1"));
tabLayout.addTab(tabLayout.newTab().setText("标签页2"));
// ... 添加更多标签页
}
}
实例18:RecyclerView
主题句
RecyclerView是Android应用实现列表展示的重要组件。
解析
- 使用RecyclerView展示列表
// MainActivity.java
public class MainActivity extends AppCompatActivity {
private RecyclerView recyclerView;
private MyAdapter adapter;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
recyclerView = findViewById(R.id.recycler_view);
adapter = new MyAdapter();
recyclerView.setLayoutManager(new LinearLayoutManager(this));
recyclerView.setAdapter(adapter);
}
}
实例19:Material Design
主题句
Material Design是Android应用设计的重要参考。
解析
- 使用Material Design组件
// activity_main.xml
<androidx.cardview.widget.CardView xmlns:cardview="http://schemas.android.com/apk/res-auto"
android:layout_width="match_parent"
android:layout_height="wrap_content"
cardview:cardCornerRadius="4dp">
<TextView
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="这是一个Material Design卡片"
android:padding="16dp"/>
</androidx.cardview.widget.CardView>
实例20:自定义组件
主题句
自定义组件可以丰富Android应用的功能。
解析
- 创建自定义组件
// MyView.java
public class MyView extends View {
public MyView(Context context) {
super(context);
// 初始化组件
}
@Override
protected void onDraw(Canvas canvas) {
super.onDraw(canvas);
// 绘制组件
}
}
实例21:动画
主题句
动画可以使Android应用更加生动有趣。
解析
- 使用属性动画
- 使用帧动画
// MainActivity.java
public class MainActivity extends AppCompatActivity {
private ImageView imageView;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
imageView = findViewById(R.id.image_view);
Animation animation = AnimationUtils.loadAnimation(this, R.anim.my_animation);
imageView.startAnimation(animation);
}
}
实例22:权限请求
主题句
权限请求是Android 6.0及以上版本的新特性。
解析
- 使用RuntimePermission请求权限
// MainActivity.java
public class MainActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {
if (checkSelfPermission(Manifest.permission.READ_CONTACTS) != PackageManager.PERMISSION_GRANTED) {
requestPermissions(new String[]{Manifest.permission.READ_CONTACTS}, 1);
}
}
}
@Override
public void onRequestPermissionsResult(int requestCode, String[] permissions, int[] grantResults) {
super.onRequestPermissionsResult(requestCode, permissions, grantResults);
if (requestCode == 1) {
if (grantResults.length > 0 && grantResults[0] == PackageManager.PERMISSION_GRANTED) {
// 权限请求成功
} else {
// 权限请求失败
}
}
}
}
实例23:多线程
主题句
多线程可以提高Android应用的性能。
解析
- 使用Thread类创建线程
// MainActivity.java
public class MainActivity extends AppCompatActivity {
private Thread thread;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
thread = new Thread(new Runnable() {
@Override
public void run() {
// 执行后台任务
}
});
thread.start();
}
}
实例24:Handler
主题句
Handler是Android应用处理异步任务的重要组件。
解析
- 使用Handler发送消息
// MainActivity.java
public class MainActivity extends AppCompatActivity {
private Handler handler = new Handler();
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
handler.post(new Runnable() {
@Override
public void run() {
// 执行后台任务
}
});
}
}
实例25:Loader
主题句
Loader是Android应用异步加载数据的重要组件。
解析
- 使用LoaderManager加载数据
// MainActivity.java
public class MainActivity extends AppCompatActivity {
private LoaderManager loaderManager;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
loaderManager = getLoaderManager();
loaderManager.initLoader(1, null, new LoaderCallbacks<Cursor>() {
@Override
public Loader<Cursor> onCreateLoader(int id, Bundle args) {
// 创建Loader
return null;
}
@Override
public void onLoadFinished(Loader<Cursor> loader, Cursor data) {
// 处理数据
}
@Override
public void onLoaderReset(Loader<Cursor> loader) {
// 重置Loader
}
});
}
}
实例26:SharedPreferences
主题句
SharedPreferences是Android应用存储键值对数据的重要方式。
解析
- 使用SharedPreferences存储数据
// MainActivity.java
public class MainActivity extends AppCompatActivity {
private SharedPreferences sharedPreferences;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
sharedPreferences = getSharedPreferences("MyApp", MODE_PRIVATE);
SharedPreferences.Editor editor = sharedPreferences.edit();
editor.putString("name", "张三");
editor.apply();
}
}
