導航:首頁 > 操作系統 > android按鈕選擇器

android按鈕選擇器

發布時間:2023-05-16 09:26:09

A. android怎麼給控制項添加選擇器

1 在/res/drawable/目錄下面新建一個xml文件,drawable就在res下面新建這個目錄

5 上面的步驟完成時棗攔,找到你的控制項所在的layout,設置其background屬性,如果上面selector叫button_press.xml,那麼其屬性就是android:background="@drawable/button_press"

B. Android編程 打開本地文件 文件選擇器

布局文件

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
>
<TextView
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:text="@string/hello"
/>
<Button
android:id="@+id/b01"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
/>
<ImageView
android:id="@+id/iv01"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
/>
</LinearLayout>

代碼

java">import java.io.FileNotFoundException;
import android.app.Activity;
import android.content.ContentResolver;
import android.content.Intent;
import android.graphics.Bitmap;
import android.graphics.BitmapFactory;
import android.net.Uri;
import android.os.Bundle;
import android.util.Log;
import android.view.View;
import android.widget.Button;
import android.widget.ImageView;
public class Lesson_01_Pic extends Activity {
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);

Button button = (Button)findViewById(R.id.b01);
button.setText("選擇圖片");
button.setOnClickListener(new Button.OnClickListener(){
@Override
public void onClick(View v) {
Intent intent = new Intent();
/* 開啟Pictures畫面Type設定為image */
intent.setType("image/*");
/* 使用Intent.ACTION_GET_CONTENT這個Action */
intent.setAction(Intent.ACTION_GET_CONTENT);
/* 取得相片後返回本畫面 */
startActivityForResult(intent, 1);
}

});
}

@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
if (resultCode == RESULT_OK) {
Uri uri = data.getData();
Log.e("uri", uri.toString());
ContentResolver cr = this.getContentResolver();
try {
Bitmap bitmap = BitmapFactory.decodeStream(cr.openInputStream(uri));
ImageView imageView = (ImageView) findViewById(R.id.iv01);
/* 將Bitmap設定到ImageView */
imageView.setImageBitmap(bitmap);
} catch (FileNotFoundException e) {
Log.e("Exception", e.getMessage(),e);
}
}
super.onActivityResult(requestCode, resultCode, data);
}
}

C. Android仿ios條件選擇器pickerview

最近怎麼老寫View,可能寫view比較方便,寫其它東西還要抽時間整理總結,寫View就直接封完寫出來就行。

准備國慶放假,無心工作,那就寫篇簡單實用一點的文章,總不能白白浪費了時間。

有時候ios端會用到條件選擇器,好像是那邊自帶的,而android這邊是沒有的,但是為了兩端統一,沒辦法,只能我們去遷就他們了(你讓一個有自帶的去寫自定義是基本不可能的事)。
最經典的是我們有選擇地址的需求,比如美團這里的:

這個android是原生是沒有的,只有能選擇日期的。那怎麼辦?自定義,好像略難,那就用三方的吧。

https://github.com/Bigkoo/Android-PickerView

我找了很多,就覺得這個庫是做得比較好,比較完整的,而且也一直有在維護,還是比較推薦,使用起來也比較方便。項目里有很清晰的文檔,建議看之前先瀏覽過文檔。

我使用的效果:

我還是順便把源碼也瀏覽了下。發現這里有3個比較重要的類,這個之後會簡單的介紹:
(1)WheelView
(2)條件選擇的WheelOptions, 我感覺這個類的封裝有點vm的意思
(3)最外層封裝的OptionsPickerView

如果只是為了選擇地址的話直接用它封裝好的就行,但是有時候可能會需要用到其它的布局或需求,那我們就要在它原有的功能上進行擴展,比如說我寫的這個時間段的現在,直接用是沒有的,需要自己擴展。

而要進行擴展的話,就要先瀏覽源碼看看它內部怎麼寫的。

可以從調用的地方找到OptionsPickerView類

然後看看OptionsPickerView類內部,你會發現很多方法,但是基本都是builder方法個getset方法,我們可以找到重要的幾個方法。

這里做的是為view設置屬性。重要的是這里

這里的意思就是把這個View給WheelOptions這個對象,讓它來做處理。然後可以看
看布局。

可以看出它裡面是寫死固定就是3列。其實我不太贊成這樣的做法,對於這樣的多情況view的封裝,我個人還是比較喜歡做動態的。由於這里固定是3列,所以我上圖中4列的情況直接使用是實現不了的,所以需要擴展。這里的WheelView就是單列

它這裡布局寫死了固定3列,那我肯定是沒法復用它的這個布局了,所以就只能重寫布局。

我只寫了LinearLayout,就是要動態去添加WheelView。

原本的OptionsPickerView中

在builder構造時就固定了布局,所以我這不好擴展,不如重寫一個OptionsPickerView,當然重寫Builder也行,但是我覺得重寫OptionsPickerView比較好。而且他原本只有兩個類

所以我們需要繼承BasePickerView重寫一個PickerView,他原本內部的邏輯沒問題,我就抄過來用好了。

修改了
(1)修改布局變成我的布局
(2)然後把創建WheelView給加擴展createWheel(optionsPicker, context, total);因為我不想每次都都寫Builder這么多參數,我把這個pickerview當成中間成來弄,讓子類繼承它來做簡單的擴展

我們重寫個WheelView,因為原本的WheelView是做固定3列的處理,我們需要做成個動態的。

(1)我多添加了個參數total表示要展示多少列
(2)用List<WheelView> wvList數組來動態創建添加WheelView
(3)用List<List<T>> items 來裝每一列的數據(我這個Wheel只做了不關聯情況下的多列,關聯情況下我沒弄)

(4)showWheelView();

這個方法做展示的規則,默認是平均展示total列,而如果需要做特殊的展示情況,像我上邊一樣的,就寫個類繼承這個類重新這個方法重新展示的規則就行,比如我的時間期間選擇器。

重寫這個方法就能展示出自己需要展示的效果

調用時也很方便。

我講這篇的目的是為了第一介紹一下這個三方庫,還是比較實用的。第二,說下擴展的重要性。第三,放假了實在工作效率低。

D. AndroidUI控制項switch使用方法

首先添加控制項:

<Switch

    android:id="@+id/sw_sfktmmzf"

    android:layout_width="match_parent"

    android:layout_height="wrap_content"

    android:layout_marginRight="15dp"

    android:showText="false"

    android:switchMinWidth="50dp"

    android:thumb="@drawable/thumb"

    android:track="@drawable/track" />

以下是該控制項的常用屬性:

textOn:控制項打開時顯示的文字

textOff:控制項關閉時顯示的文字

thumb:控制項開關的圖片(設置小圓圈顏色)

track:控制項開關的軌跡圖片(設置小圓圈背景顏色)

typeface:設置字體類型

switchMinWidth:開關最小寬度

switchPadding:設置開關 與文字的空白距離

switchTextAppearance:設置文本的風格

checked:設置初始選中狀態

splitTrack:是否設置一個間隙,讓滑塊與底部圖片分隔(API 21及以上)

showText:設置是否顯示開關上的文字(API 21及以上)

創建北京控制文件在drawable文件下

1、thumb.xml

<?xml version="1.0" encoding="utf-8"?><!-- 按鈕的選擇器,可以設置按鈕在不同狀態下的時候,按鈕不同的顏色 -->

<selector xmlns:android="http://schemas.android.com/apk/res/android">

    <item android:drawable="@drawable/green_thumb" android:state_checked="true" />

    <item android:drawable="@drawable/gray_thumb" />

顏色文件:

green_thumb.xml

<?xml version="1.0" encoding="utf-8"?>

<shape xmlns:android="http://schemas.android.com/apk/res/android"

    android:shape="rectangle" >

    <!-- 高度40 -->

    <size android:height="@dimen/switch_height" android:width="@dimen/switch_height"/>

    <!-- 圓角弧度 20 -->

<corners android:radius="20dp"/>

<!-- 變化率 -->

    <gradient

        android:endColor="#eeeeee"

        android:startColor="#eeeeee" />

<stroke android:width="1dp"

        android:color="@color/home_text1"/>

</shape>

gray_thumb.xml

<?xml version="1.0" encoding="utf-8"?>

<shape xmlns:android="http://schemas.android.com/apk/res/android"

    android:shape="rectangle" >

    <!-- 高度40 -->

    <size android:height="@dimen/switch_height" android:width="@dimen/switch_height"/>

    <!-- 圓角弧度 20 -->

<corners android:radius="20dp"/>

<!-- 變化率 -->

    <gradient

        android:endColor="#eeeeee"

        android:startColor="#eeeeee" />

    <stroke android:width="1dp"

        android:color="@color/text_color03"/>

</shape>

2、track.xml

<?xml version="1.0" encoding="utf-8"?><!-- 底層下滑條的樣式選擇器,可控制Switch在不同狀態下,底下下滑條的顏色 -->

<selector xmlns:android="http://schemas.android.com/apk/res/android">

    <item android:drawable="@drawable/green_track" android:state_checked="true" />

    <item android:drawable="@drawable/gray_track" />

</selector>

顏色文件:

green_track.xml

<?xml version="1.0" encoding="utf-8"?>

<shape xmlns:android="http://schemas.android.com/apk/res/android"

    android:shape="rectangle">

    <!-- 高度40 -->

    <size android:height="@dimen/switch_height"/>

    <!-- 圓角弧度 20 -->

    <corners android:radius="15dp"/>

    <!-- 變化率 -->

    <gradient

        android:endColor="@color/home_text1"

        android:startColor="@color/home_text1" />

</shape>

gray_track.xml

<?xml version="1.0" encoding="utf-8"?>

<shape xmlns:android="http://schemas.android.com/apk/res/android"

    android:shape="rectangle">

    <!-- 高度30  此處設置寬度無效-->

    <size android:height="@dimen/switch_height" />

    <!-- 圓角弧度 15 -->

    <corners android:radius="15dp" />

    <!-- 變化率  定義從左到右的顏色不變 -->

    <gradient

        android:endColor="@color/text_color03"

        android:startColor="@color/text_color03" />

</shape>

switch 控制項監聽事件:

 aSwitch.setOnCheckedChangeListener(newCompoundButton.OnCheckedChangeListener() {

      @Override

    public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {

        //控制開關字體顏色

        if(isChecked) {

         //打開

        }else{

         //關閉

        }

      }

    });

E. android怎麼在代碼中設置狀態選擇器

這個是非常簡單的,只需要按照下面的步驟進行即可。

首先新建一個狀態選擇器,創建在drawable目錄下,創建的格式如下:,記住創建時的名字,待會要使用。

<spanstyle="font-size:14px;"><?xmlversion="1.0"encoding="utf-8"?>
<selectorxmlns:android="http://schemas.android.com/apk/res/android">

<itemandroid:drawable="@drawable/function_greenbutton_pressed"android:state_pressed="true"/>//按下的圖片
<!--pressed-->
<itemandroid:drawable="@drawable/function_greenbutton_pressed"android:state_focused="true"/>//獲取焦點的圖片
<!--focused-->
<itemandroid:drawable="@drawable/function_greenbutton_normal"/>
<!--default-->//默認圖片
</selector>

然後在布局文件中創建一個button控制項

<Button
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:id="@+id/btn"/>

由於View類中PRESSED_ENABLED_STATE_SET值不是公共常量,所以通過繼承來實現。

classMyButtonextendsView{

publicMyButton(Contextcontext){
super(context);
}

//以下這個方法也可以把你的圖片數組傳過來,以StateListDrawable來設置圖片狀態,來表現button的各中狀態。未選
//中,按下,選中效果。
publicStateListDrawablesetbg(Integer[]mImageIds){
StateListDrawablebg=newStateListDrawable();
Drawablenormal=this.getResources().getDrawable(mImageIds[0]);
Drawableselected=this.getResources().getDrawable(mImageIds[1]);
Drawablepressed=this.getResources().getDrawable(mImageIds[2]);
bg.addState(View.PRESSED_ENABLED_STATE_SET,pressed);
bg.addState(View.ENABLED_FOCUSED_STATE_SET,selected);
bg.addState(View.ENABLED_STATE_SET,normal);
bg.addState(View.FOCUSED_STATE_SET,selected);
bg.addState(View.EMPTY_STATE_SET,normal);
returnbg;
}
}

然後執行下面的代碼即可成功設置狀態選擇器

Integer[]mButtonState={R.drawable.defaultbutton,
R.drawable.focusedpressed,R.drawable.pressed};
ButtonmButton=(Button)findViewById(R.id.button);
MyButtonmyButton=newMyButton(this);
mButton.setBackgroundDrawable(myButton.setbg(mButtonState));
閱讀全文

與android按鈕選擇器相關的資料

熱點內容
u點伺服器wifi密碼如何設置 瀏覽:864
寶馬x5大燈編程 瀏覽:673
python安裝和使用 瀏覽:381
加密的門禁卡復制了用不了 瀏覽:714
javacsv讀寫 瀏覽:806
ug編程教程pdf 瀏覽:763
latex編譯軟體安卓版 瀏覽:248
如何在信合app上交居民醫保 瀏覽:109
丑惡pdf 瀏覽:365
陝西定頻壓縮機銷售公司 瀏覽:795
安卓系統如何幫人打王者 瀏覽:427
sbtlinux安裝 瀏覽:141
阿里雲sip伺服器 瀏覽:73
身為程序員的你怎麼拚命 瀏覽:453
android圖片手勢放大 瀏覽:586
錢的所有演算法 瀏覽:13
光模塊伺服器怎麼直接連電腦 瀏覽:376
編譯器識別單詞 瀏覽:344
2b2t伺服器怎麼獲得金蘋果 瀏覽:344
SQL如何進行伺服器配置 瀏覽:175