android 書架菜單,Android入門3--做一個書架

修改名稱

創建項目的時候,APP的名字取為英文或者拼音,是為了簡便,但是顯示在界面上,我們當然希望它是中文的。

taoguanstring>

我們要做的很簡單,就是在string.xml中,將app_name的內容修改為我們希望的名字:

陶罐PDF閱讀器string>

e04b7da4b5466dbab6b305d1334dbccd.png

使用GridView創建書架

創建一個書架類

c9774a017db70e886b0d8d9beb350506.png

在主包目錄上單擊右鍵,新建一個Java Class:

54967e0c2db864714746065382c7f54f.png

添加成功后,為其添加一個構造函數,最終代碼如下:

public class BookShelf extends GridView {

public BookShelf(Context context, AttributeSet attrs){

super(context,attrs);

}

}

這里對于自己手動添加構造函數我是有一點疑惑的,我不知道能否自動添加,因為對于初學者來說,手動添加稍微有一點點麻煩。

添加書架和圖書背景圖

將準備好的兩張圖,加入到drawable目錄下:

c6018c6fa6a23fb7d9634e9e461c2918.png

怎么加?我是直接將圖復制到drawable文件目錄下的,至于還有沒有其他方式,我暫時也不清楚。其相對目錄如下:

\taoguan\app\src\main\res\drawable

繪制書架背景

1、 首先將背景圖加載進來

private Bitmap background;

public BookShelf(Context context, AttributeSet attrs){

super(context,attrs);

background = BitmapFactory.decodeResource(getResources(),

R.drawable.bookshelf_layer_center);

}

2、重寫dispatchDraw方法

你只要直接敲方法名,AS會給出接口提示的,直接選擇:

@Override

protected void dispatchDraw(Canvas canvas) {

super.dispatchDraw(canvas);

}

3、添加繪制代碼

@Override

protected void dispatchDraw(Canvas canvas) {

int count = getChildCount();

int top = count > 0 ? getChildAt(0).getTop() : 0;

int backgroundWidth = background.getWidth();

int backgroundHeight = background.getHeight();

int width = getWidth();

int height = getHeight();

for (int y = top; y < height; y += backgroundHeight) {

for (int x = 0; x < width; x += backgroundWidth) {

canvas.drawBitmap(background, x, y, null);

}

}

super.dispatchDraw(canvas);

}

注意:本段代碼來自網絡,如有雷同,純屬抄襲。

將書架視圖添加到主界面

打開主界面的布局文件,進入設計模式,先刪掉helloworld那個文本視圖,然后將書架視圖拖動到主界面上:

09aeac8f8491524a85b289bdb61d2455.png

注意這里的UI元素比較多,先點擊Project進行過濾。

在設計界面,我們已經看到了預覽效果,但是有一些錯誤提示,那是因為沒有添加布局約束。

為書架視圖添加布局約束

單擊預覽界面上的書架視圖,右側就會顯示添加約束的界面:

007fb3d7d9b64172c59a03c94c43aaa2.png

這里我們希望書架的邊沿沒有留白,因此我們點擊加號,選取數字0.

然后,再選擇layout_width和layout_height為match_constraint.如下圖:

b211306ed50cb751adb439f03223a2f2.png

設置完成后,可以看到預覽效果已經發生了改變:

036eacaf77e688ea20f4b58a5a32370d.png

而模擬器上的運行效果也是類似的,完全符合我們的預期:

e9872bef6c99f0fc0be4cf5d4379456f.png

接下來,我們將在書架上添加圖書。下節見。

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/371998.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/371998.shtml
英文地址,請注明出處:http://en.pswp.cn/news/371998.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

第一節:整體介紹

Python版本3.5.2&#xff0c;Django版本1.10 創建一個Django工程&#xff0c;并且生成一個名字為mainsite的app django-admin.py startproject myblog python3 manage.py startapp mainsite 文件結構如下&#xff1a; x-powerxpower-CW65S:~/chen/myblog$ tree ./ ./ ├── ma…

Spring @Configuration和FactoryBean

考慮使用FactoryBean通過Spring配置文件定義緩存&#xff1a; <cache:annotation-driven /><context:component-scan base-packageorg.bk.samples.cachexml></context:component-scan><bean idcacheManager classorg.springframework.cache.support.Simpl…

cookie解決 未登錄加入購物車 第一次訪問彈出新手引導頁面

瀏覽器攜帶cookie到服務器, 點擊加入購物車-->后臺檢查-->是否登錄(有沒有sessionid) 沒有登錄--->secookie()返回給瀏覽器,把傳遞過來的商品id, 屬性(多個屬性逗號拼接),數量存起來,(序列號成字符串_不同屬性用下劃線拼接) 轉載于:https://www.cnblogs.com/bj-tony/p…

REST + Spring Security會話問題

REST &#xff0c; 會話 ..等待。 REST應用程序中沒有會話&#xff0c;對嗎&#xff1f; 好吧&#xff0c;那是真的。 如果我們可以避免會議&#xff0c;我們應該這樣做。 REST是無狀態的 。 有關無狀態性的主要問題是身份驗證。 在通常的Web應用程序中&#xff0c;我們習慣于在…

程序猿果真有前端后端client嗎

前端 后端 client DBA OP 程序猿有分這么細的嗎?入行時候有區別. 殊途同歸 吾道一以貫之, 假設作為程序猿不能領悟一貫, 則永遠不清楚.轉載于:https://www.cnblogs.com/blfbuaa/p/6970139.html

HarmonyOS硬件創新合作伙伴,【HarmonyOS】HarmonyOS智能硬件開發學習指南 - HDC2020

2020年9月10日&#xff0c;華為HarmonyOS 2.0版本正式官宣&#xff01;這一次&#xff0c;借助 HarmonyOS 全場景分布式系統和設備生態&#xff0c;將定義全新的硬件、交互和服務體驗&#xff0c;打開煥然一新的全場景世界&#xff0c;不愧是HarmonyOS&#xff01; 那HarmonyOS…

處于RUNNABLE狀態的Java線程未真正運行

最近&#xff0c;我在Java應用程序服務器安裝上進行了分析/調整&#xff0c;以識別瓶頸并修復它們。 在此過程中&#xff08;調整&#xff09;&#xff0c;最常見的操作是在系統加載時檢索許多線程轉儲。 請記住&#xff0c;重載&#xff08;在某些情況下&#xff09;可能會產生…

2.3 關系完整性

關系模型的完整性規則是對關系的某種約束條件。 也就是說關系的值隨著時間變化時應該滿足一些約束條件。 &#xff08;這些約束條件實際上是現實世界的要求。任何關系在任何時刻都要滿足這些語義約束&#xff09; 關系模型中有三類完整性約束&#xff1a; 實體完整性 &#xff…

Android 顏色大全color.xml

使用方法&#xff1a; 將color.xml文件拷到res/values目錄下后我們只需要R.xml文件名稱.name名稱就可以調用了(例如:R.color.red) <?xml version"1.0" encoding"utf-8"?><resources> <color name"white">#FFFFFF</color&…

鴻蒙系統華為論壇,2020中國汽車論壇上 華為三大鴻蒙車載OS系統

在今天的2020中國汽車論壇上&#xff0c;華為公布了三大鴻蒙車載OS系統&#xff0c;同時還宣布已經有大量合作伙伴基于鴻蒙OS進行開發。根據智能汽車解決方案BU總裁王軍所說&#xff0c;這三大鴻蒙OS分別是——鴻蒙座艙操作系統HOS、智能駕駛操作系統AOS和智能車控操作系統VOS&…

只讀ViewObject和聲明性SQL模式

介紹 聲明式SQL模式被認為是基于實體的視圖對象的最有價值的優點之一。 在此模式下&#xff0c;根據UI中顯示的屬性在運行時生成VO的SQL。 例如&#xff0c;如果某個頁面包含一個只有兩列EmployeeId和FirstName的表&#xff0c;則查詢將生成為“從Employees中選擇Employee_ID&a…

android 360加固 例子,[原創]利用VirtualApp實現360加固的soHook簡單例子

簡單demo&#xff0c;為拋磚引玉吧&#xff01;360的加固我們先寫一個最簡單的so&#xff0c;帶導出函數。這已經足夠簡單了&#xff0c;界面上打印這個值。運行起來就這樣。簡單的簡直過分。好了&#xff0c;現在我們讓360加固一下。拿下來自己簽名下&#xff0c;安裝好&#…

scrapy架構解析

轉載于:https://www.cnblogs.com/tianboblog/p/6986695.html

華為怎么升級Android11,華為EMUI 11/安卓11升級名單曝光 快來看看你的手機是否支持...

華為EMUI 11/安卓11升級名單曝光 快來看看你的手機是否支持2020年02月10日 16:29作者&#xff1a;NJNR205文章出處&#xff1a;泡泡網原創分享2月10日消息&#xff0c;據外媒報道&#xff0c;華為將于今年3月份的華為開發者大會(HDC)上正式宣布新一代EMUI 11。眾所周知&#xf…

Scala安裝及開發環境搭建

最近想學習下scala&#xff0c;為后面轉大數據做一些沉淀。 1. 首先保證jdk已經成功安裝 2. 去官網下載scala安裝程序 http://www.scala-lang.org/download/all.html 會列出不同的版本. 3. 安裝scala 安裝路徑記得不要有空格否則可能會出現以下這種狀況&#xff0c;還有&am…

簡單利用HTTP中的PUT協議拿下SHELL

第一次用方法拿shell,之前遇到的都是沒有寫入權限的。 站太辣雞&#xff0c;純粹練手&#xff0c;就不打碼了。 此次實戰會用到的HTTP請求方法&#xff1a; OPTIONS&#xff0c;PUT&#xff0c;MOVE/COPPY * 戰前準備 0x01 什么是OPTIONS方法&#xff1f; 此方法用于請求獲得由…

JSF – PrimeFaces和休眠集成項目

本文介紹了如何使用JSF&#xff0c;PrimeFaces和Hibernate開發項目。 下面是一個示例應用程序&#xff1a; 二手技術&#xff1a; JDK 1.6.0_21 Maven的3.0.2 JSF 2.0.3 PrimeFaces 2.2.1 休眠3.6.7 MySQL Java連接器5.1.17 MySQL 5.5.8 Apache Tomcat 7.0 第1步&#xff1…

android q升級名單,華為升級 Android Q 機型名單敲定 陣容龐大

中關村在線消息&#xff1a;在 5 月份的谷歌 I/O 大會上&#xff0c;谷歌公布了一系列支持下一代安卓系統 Android Q 的機型。除了谷歌自家的 pixel 手機之外&#xff0c;還包括 9 款國產手機&#xff0c;其中華為 Mate20 Pro 成為華為首款支持原生安卓的機型。這也讓華為手機的…

mvc UrlHelper

何謂Helper,其實就是在View中為了實現一些靈活功能而寫的方法組。 其實ASP.NET MVC的View是Aspx的頁面,本身可以聲明定義方法,那為什么要有Helper呢&#xff1f; 其實無非是將界面與邏輯分離,而且Asp.net MVC也并不只支持Aspx一種View&#xff08;還可以擴展出來很多&#xff0…

Mockito –使用全局配置的SmartNull在NPE上提供更好的錯誤消息

編寫Mockito參考卡后&#xff0c;我有機會仔細研究了Mockito不太流行但非常有用的功能。 其中一些過于先進或太稀少&#xff0c;無法在refcard中進行描述&#xff0c;因此應簡短說明。 其中之一就是SmartNull。 當前&#xff0c;非空方法返回適用于已知類型&#xff08;例如&am…