自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(18)
  • 收藏
  • 关注

原创 17 Looper、Handler和HandlerThread

配置RecyclerView以显示图片新建布局文件ImageView 由 RecyclerView 的 GridLayoutManager 负责管理,这意味着其宽度会变,而高度保持固定不变 。为最大化利用ImageView的空间,应设置它的 scaleType 属性值为centerCrop 。这个属性值的作用是先居中放置图片,然后放大较小图片,裁剪较大图片(裁两头)以匹配视图。gallery_item.xml<ImageView xmlns:android="http://schema

2021-06-25 09:15:46 191

原创 16 HTTP与后台任务

创建PhotoGallery应用新建继承自AppCompatActivity类的SingleFragmentActivity抽象类,使PhotoGalleryActivity类继承它;新建布局文件fragment_photo_gallery.xml,布置RecyclerView视图;新建PhotoGalleryFragment类,使其继承Fragment,初始化RecyclerView视图,并设置此fragment为保留fragment。PhotoGalleryFragment.javapri

2021-06-25 09:15:29 210

原创 15 深入学习intent和任务

创建NerdLauncher项目新建继承自AppCompatActivity类的SingleFragmentActivity抽象类,使NerdLauncherActivity类继承它;新建布局文件fragment_nerd_launcher.xml,布置RecyclerView视图;新建NerdLauncherFragment类,使其继承Fragment,初始化RecyclerView视图。NerdLauncherFragment.javapublic class NerdLauncherFr

2021-06-25 09:15:07 146

原创 14 样式与主题

颜色资源在colors.xml中定义一些颜色:<resources> <color name="colorPrimary">#008577</color> <color name="colorPrimaryDark">#00574B</color> <color name="colorAccent">#D81B60</color> <color name="light_green"

2021-06-25 09:14:45 98

原创 13 使用SoundPool播放音频

创建SoundPoolBeatBox.javapublic class BeatBox { //... private static final int MAX_SOUNDS = 5; private AssetManager mAssets; private List<Sound> mSounds = new ArrayList<>(); private SoundPool mSoundPool; public BeatBox

2021-06-25 09:14:18 469

原创 12 Assets

为何使用assetsresource资源可以存储声音文件,可以通过ID来获取它。将类似的声音文件存储为资源后,我们就可以按特定的方式使用它们了,如根据设备的语言及系统版本调用不同的声音资源。如果使用Android资源系统一个个去处理,效率会很低。assets可以看作随应用打包的微型文件系统,支持任意层次的文件目录结构。创建BeatBox应用创建布局文件主布局文件fragment_beat_box.xml用于生成RecyclerView布局。<androidx.recyclerview.w

2021-06-25 09:14:02 82

原创 11 使用intent拍照

引入布局文件新建布局文件view_camera_and_title.xml<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_marginLeft="16dp" android:layout

2021-06-25 09:13:40 237

原创 10 隐式intent

添加嫌疑人信息至模型层为Crime添加成员变量Crime.javapublic class Crime { //... private String mSuspect; private String mPhone; //...}添加数据库字段CrimeDbSchema.javapublic class CrimeDbSchema { //数据表 public static final class CrimeTable { //表

2021-06-25 09:13:10 164

原创 09 SQLite数据库

SQLite数据库应用沙盒目录/data/data/com.example.criminalintentSQLite的特点SQLite使用单个文件存储数据,使用SQLite库读取数据。创建表字段时,不需要指定字段类型。定义Schema创建com.example.criminalintent.database.CrimeDbSchema类,定义数据表:public class CrimeDbSchema { //数据表 public static final class

2021-06-24 16:10:11 89

原创 08 工具栏

使用AppCompat库AndroidManifest.xml... <application ... android:theme="@style/AppTheme"> ... </application>...res/values/styles.xml... <style name="AppTheme" parent="Theme.AppCompat.Light.DarkActionB

2021-06-24 16:09:23 106

原创 07 对话框

创建DialogFragment将AlertDialog封装在DialogFragment实例中使用,这样FragmentManager管理对话框,可以更灵活地显示对话框。如果旋转设备,单独使用的AlertDialog会消失,而封装在fragment中的AlertDialog不会有此问题。就CriminalIntent应用来说,我们首先会创建名为 DatePickerFragment 的DialogFragment 子类。然后,在 DatePickerFragment 中,创建并配置显示 DatePic

2021-06-24 16:08:29 62

原创 06 使用ViewPager

创建布局文件activity_crime_pager.xml<androidx.viewpager.widget.ViewPager xmlns:android="http://schemas.android.com/apk/res/android" android:id="@+id/activity_crime_pager_view_pager" android:layout_width="match_parent" android:layout_height="

2021-06-24 16:06:59 92

原创 05 使用fragment argument

附加extra信息在MainActivity类中新增newIntent方法:public static final String EXTRA_CRIME_ID = "com.example.criminalintent.crime_id";public static Intent newIntent(Context packageContext, UUID crimeId) { Intent intent = new Intent(packageContext, MainActivity.c

2021-06-24 16:05:59 180

原创 04 使用RecyclerView显示列表

单例与数据集中存储单例是特殊的java类,在创建实例时,一个单例类仅允许创建一个实例。要创建单例,需创建一个带有私有构造方法及get()方法的类,如果实例已存在,get()方法就直接返回它,否则get()方法就会调用构造方法创建它。public class CrimeLab { private static CrimeLab sCrimeLab; private List<Crime> mCrimes; private CrimeLab(Context cont

2021-06-24 16:04:55 626

原创 03 UI Fragment

托管UI fragment为托管UI fragment,activity必须做到:在布局中为fragment的视图安排位置;管理fragment实例的生命周期。fragment的生命周期托管的两种方式在activity布局中添加fragment在activity代码中添加fragment我们选择在activity代码中添加UI fragment,但还是要在activity视图层级结构中为fragment视图安排位置。<FrameLayout xmlns:android="h

2021-06-24 16:02:19 137

原创 02 Activity间的数据传递

创建新的activity右键单击com.example.geoquiz包,选择New => Activity => Empty Activity,新建CheatActivity类。CheatActivity类的布局文件activity_cheat.xml为:<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.co

2021-06-24 15:58:57 144

原创 01 Android开发基础

XML布局文件<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent" android:gravity="center" android:orientation="vertical" > <TextView

2021-06-24 15:57:02 87

原创 00 Linux常用命令

移除软件包sudo apt remove xxx移除锁sudo rm /var/lib/dpkg/lock-frontendsudo rm /var/lib/dpkg/locksudo rm /var/cache/apt/archives/lock创建快捷方式创建快捷方式sudo gedit /usr/share/applications/xxx.desktop为快捷方式xxx.desktop输入以下内容[Desktop Entry]Name = xxxcommen

2021-06-24 15:53:19 56

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除