溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務(wù)條款》

【移動開發(fā)】Android中不用圖片資源也能做出好看的界面

發(fā)布時間:2020-07-20 05:52:31 來源:網(wǎng)絡(luò) 閱讀:3926 作者:zhf651555765 欄目:開發(fā)技術(shù)

當(dāng)我們個人開發(fā)者做一款A(yù)ndroid應(yīng)用時,難免會為找不到好看的圖片資源而發(fā)愁,(不僅要寫代碼,還得要稍微會點PS什么的,唉!【移動開發(fā)】Android中不用圖片資源也能做出好看的界面總之程序員什么都得要會一點。。。端好這碗飯可真不容易?。?img src="https://cache.yisu.com/upload/information/20200312/67/252232.jpg" alt="【移動開發(fā)】Android中不用圖片資源也能做出好看的界面">)要不就是好看的圖片資源有了,從而導(dǎo)致我們的軟件過大!怎么辦吶?


這里我給大家推薦一種簡單實用的方法,就是顏色值強化使用!


通常我們在res里xml中可以定義UI布局,按鈕的按下效果,配置文件等,參閱博客:http://smallwoniu.blog.51cto.com/3911954/1248892,其實還可以自己定義控件的一些顯示屬性。


官方文檔

http://developer.android.com/guide/topics/resources/drawable-resource.html#Shape

查閱Shape Drawable,在res/drawable/文件夾下創(chuàng)建

例子:

<?xml version="1.0" encoding="utf-8"?>
<shape
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:shape=["rectangle" | "oval" | "line" | "ring"] >
    <corners
        android:radius="integer"
        android:topLeftRadius="integer"
        android:topRightRadius="integer"
        android:bottomLeftRadius="integer"
        android:bottomRightRadius="integer" />
    <gradient
        android:angle="integer"
        android:centerX="integer"
        android:centerY="integer"
        android:centerColor="integer"
        android:endColor="color"
        android:gradientRadius="integer"
        android:startColor="color"
        android:type=["linear" | "radial" | "sweep"]
        android:useLevel=["true" | "false"] />
    <padding
        android:left="integer"
        android:top="integer"
        android:right="integer"
        android:bottom="integer" />
    <size
        android:width="integer"
        android:height="integer" />
    <solid
        android:color="color" />
    <stroke
        android:width="integer"
        android:color="color"
        android:dashWidth="integer"
        android:dashGap="integer" />
</shape>

這里我們可以看到這個xml中有好多貌似我們都沒用過的標(biāo)簽。。。(其實剛開始我也是在不知道什么地方看到的,一頭霧水,覺得好玩就要研究研究么~【移動開發(fā)】Android中不用圖片資源也能做出好看的界面)。首先,我們先來看一下:


1.shape 形狀

根標(biāo)簽,使用: android:shape=["rectangle" | "oval" | "line" | "ring"] >

描述
rectangle長方形,默認(rèn)值
oval橢圓
line水平直線,可以通過<stroke>標(biāo)簽來定義寬度
ring環(huán)形


2.corners 圓角

用于shape被定義成rectangle時,使用: android:radius="integer"為角的弧度,值越大角越圓。

描述
android:topRightRadius 右上角
android:bottomLeftRadius 右下角
android:topLeftRadius 左上角
android:bottomRightRadius左下角

注:默認(rèn)值大于1才能顯示出圓角,0為沒有圓角。


3.gradient 漸變

指定shape的顏色值漸變,

android:type=["linear" | "radial" | "sweep"]

android:useLevel=["true" | "false"] />

描述
angle漸變角度。0是從左到右的,90是底部向頂部,必須是45的倍數(shù),默認(rèn)是0。
centerX以x位置為中心的漸變(0.0 -- 1.0)。
centerY以y位置為中心的漸變(0.0 -- 1.0)。
centerColor中心顏色
endColor結(jié)束顏色
gradientRadius徑向漸變要指定半徑值(android:type="radial".
startColor開始顏色
type

linear:線性漸變,默認(rèn)值


radial: 徑向漸變


sweep: 掃線漸變

useLevel設(shè)置資源管理的畫板(不是很懂。。。)

注:漸變角度:

【移動開發(fā)】Android中不用圖片資源也能做出好看的界面


4.padding 間隔(內(nèi)邊距)

5.size shape的寬和高

6.solid:實心

填充shape 使用:android:color指定填充的顏色


7.stroke:描邊

描述
width描邊的寬度
color描邊的顏色
dashWidth一個虛線"-"的寬度
dashGap一個虛線"-"的隔開距離


ok! 差不多把官方文檔上的連翻譯帶整理的總結(jié)完了【移動開發(fā)】Android中不用圖片資源也能做出好看的界面,寫一個簡單的小例子,讓大家直觀的感受一下它的作用吧!


exit_dialog.xml

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    android:background="@android:color/transparent"
    android:orientation="vertical" >
    <LinearLayout
        android:layout_width="250dp"
        android:layout_height="wrap_content"
        android:background="@drawable/fragment_logout_button_backgroud_normal"
        android:orientation="vertical" >
        <LinearLayout
            android:layout_width="fill_parent"
            android:layout_height="100dp"
            android:orientation="vertical" >
            <TextView
                android:id="@+id/oneBtnInfo"
                android:layout_width="fill_parent"
                android:layout_height="40dp"
                android:layout_margin="2dp"
                android:background="@drawable/exit_bg"
                android:gravity="center"
                android:text="提示信息"
                android:textColor="#fff"
                android:textSize="20sp" />
            <TextView
                android:id="@+id/tishiInfo"
                android:layout_width="fill_parent"
                android:layout_height="wrap_content"
                android:layout_marginTop="20dp"
                android:gravity="center"
                android:text="確定要退出?"
                android:textColor="#000"
                android:textSize="18sp" />
        </LinearLayout>
        <LinearLayout
            android:layout_width="fill_parent"
            android:layout_height="50dp"
            android:layout_margin="2dp"
            android:background="@color/gray_light"
            android:gravity="center"
            android:orientation="horizontal"
            android:padding="5dp" >
            <Button
                android:id="@+id/exit_btn"
                android:layout_width="fill_parent"
                android:layout_height="35dp"
                android:layout_margin="5dp"
                android:layout_weight="1"
                android:background="@drawable/fragment_logout_button_selector"
                android:text="確定"
                android:textColor="@color/black" />
            <Button
                android:id="@+id/cancel_btn"
                android:layout_width="fill_parent"
                android:layout_height="35dp"
                android:layout_margin="5dp"
                android:layout_weight="1"
                android:background="@drawable/fragment_logout_button_selector"
                android:text="取消"
                android:textColor="@color/black" />
        </LinearLayout>
    </LinearLayout>
</LinearLayout>


這里使用到了我們前面講到的shape,先列舉一個(具體實現(xiàn)請看最后的源代碼)

exit_bg.xml

<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android" >
    <gradient
        android:angle="270"
        android:centerColor="@color/blue"
        android:endColor="@color/blue"
        android:startColor="@color/blue"
        android:type="linear" />
    <stroke
        android:width="0.5dp"
        android:color="@color/blue" />
    <corners
        android:radius="2dp"
        android:topLeftRadius="5dp"
        android:topRightRadius="5dp"
        android:bottomLeftRadius="0dp"
        android:bottomRightRadius="0dp"
        />
</shape>


MainActivity類

package com.zhf.android_dialog_shape;
import com.zhf.android_dialog_shape_theme.R;
import android.os.Bundle;
import android.app.Activity;
import android.app.AlertDialog;
import android.view.View;
import android.view.View.OnClickListener;
import android.view.Window;
import android.widget.Button;
/**
 * 測試自定義的Dialog(使用到了Shape Drawable)
 * @author ZHF
 *
 */
public class MainActivity extends Activity {
                                                                                          
    private AlertDialog alertDialog;
    private Button button;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        button = (Button) this.findViewById(R.id.button);
        button.setOnClickListener(new OnClickListener() {
            @Override
            public void onClick(View v) {
                loadExitDialog();
            }
        });
    }
                                                                                          
    /**彈出自定義對話框**/
    private void loadExitDialog() {
        alertDialog = new AlertDialog.Builder(this).create();
        alertDialog.show();
        Window window = alertDialog.getWindow();
        window.setContentView(R.layout.exit_dialog);
        Button exit_btn = (Button) window.findViewById(R.id.exit_btn);
        Button cancel_btn = (Button) window.findViewById(R.id.cancel_btn);
        exit_btn.setOnClickListener(new OnClickListener() {
            @Override
            public void onClick(View v) {
                finish();
            }
        });
        cancel_btn.setOnClickListener(new OnClickListener() {
            @Override
            public void onClick(View v) {
                alertDialog.dismiss();
            }
        });
    }
}


最終效果圖:

【移動開發(fā)】Android中不用圖片資源也能做出好看的界面

仔細觀察一下,圓角、漸變都已經(jīng)出來了,貌似比系統(tǒng)自帶的Dialog好看多了。【移動開發(fā)】Android中不用圖片資源也能做出好看的界面

×××看附件




附件:http://down.51cto.com/data/2363598
向AI問一下細節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進行舉報,并提供相關(guān)證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI