導航:首頁 > 操作系統 > android自定義評分

android自定義評分

發布時間:2022-05-11 03:08:47

1. android 怎麼自定義ProgressBar

1. 在res/values/colors.xml中定義ProgressBar要用的圖片顏色

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

<resources>

<!--定義圖片顏色-->

<drawable name="transparent_background">#00000000</drawable>

<drawable name="white">#ffffff</drawable>

<!--定義文字顏色-->
<color name="solid_red">#f00</color>
<color name="solid_blue">#0000ff</color>

</resources>

2. res/drawable/progress_bar_layer.xml中自定義ProgressBar進度條的顏色以及背景

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

<layer-list xmlns:android="http://schemas.android.com/apk/res/android">

<item android:id="@android:id/background"

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

<item android:id="@android:id/progress">

<clip>

<shape>

<gradient android:startColor="#FFFFD980" android:centerColor="#FFFF8C00" android:endColor="#FF6611" android:angle="270" android:centerY="0.75" />

</shape>

</clip>

</item>

</layer-list>

android:angle 0 is left to right, 90 is bottom to top, 180 is right to left, 270 is top to bottom
android:centerY 自上而下(androidL:angle="270")從3/4處開始顏色漸變(默認在1/2處)

3.在res/layout/main.xml定義ProgressBar在應用中的布局表示

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

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

android:layout_width="fill_parent" android:layout_height="wrap_content">

<ProgressBar android:layout_width="fill_parent"

android:layout_height="148dp" android:id="@+id/my_profile_tracker"

android:background="@null"

android:progressDrawable="@drawable/progress_bar_layer"

android:paddingLeft="23dp" android:paddingRight="23dp"

android:paddingTop="107dp" android:paddingBottom="27dp"

style="?android:attr/progressBarStyleHorizontal"

android:indeterminateOnly="false" android:max="60" />

<ImageView android:id="@+id/my_profile_tracker_mask"

android:layout_width="fill_parent"

android:layout_height="148dp"

android:src="@drawable/profile_screen_tracker" />

</RelativeLayout>

style="?android:attr/progressBarStyleHorizontal" 定義ProgressBar為水平類型
android:progressDrawable="@drawable/progress_bar_layer" Drawable used for the progress mode.

4. 至此關於ProgressBar在xml中的定義全部完成了,你需要做的就是在java文件中引用他們

@Override

protected void onCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);

setContentView(R.layout.main);

ProgressBar mTracker = (ProgressBar) findViewById(R.id.my_profile_tracker);

mTracker.setProgress(20);

}

對於上面的<clip> 元素,

如果設置mTracker.setProgress(0);那麼你將不會看到ProgressBar

如果設置mTracker.setProgress(20);那麼你將可以看到ProgressBar

官方文檔對於<clip>元素的解釋

The default level is 0, which is fully clipped so the image is not visible. When the level is 10,000, the image is not clipped and completely visible.

正如你所看到的,當level為0,全部裁剪不可見,即為以下樣式(setProgress(0))

setProgress(20)則才會出現ProgressBar.

2. android實現自定義imageView

可以的,自定義的view裡面按照你的需求來進行布局,是可以的,比如你背景是一個大的圖片,然後在上面再疊加一個imageview這些都是可以的。

你說的示例關於你這個imageview的沒有,不過你自己定義linearlayout的話,理論上來說可以實現任意布局。下面是我最近的一個項目裡面用到的布局,是自己定義的titlebar。你參考一下吧。望採納
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/topBar"
android:layout_width="match_parent"
android:layout_height="@dimen/actionbar_height"
android:orientation="vertical" >
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_weight="1"
android:orientation="horizontal" >
<TextView
android:id="@+id/left_title_bar"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:layout_weight="1"
android:gravity="center"
android:text="@string/conversation_list_name"
android:textColor="@drawable/asp_selector_tab_textcolor"
android:textSize="@dimen/contact_tab_font_size" />
<TextView
android:id="@+id/right_title_bar"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:layout_weight="1"
android:gravity="center"
android:text="@string/favorite_list_name"
android:textColor="@drawable/asp_selector_tab_textcolor"
android:textSize="@dimen/contact_tab_font_size" />
</LinearLayout>
<LinearLayout
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:gravity="center_vertical" >
<ImageView
android:id="@+id/titlebar_indicate_left"
android:layout_width="fill_parent"
android:layout_height="3dip"
android:layout_weight="1.0"
android:scaleType="matrix"
android:src="@color/contact_detail_normal_blue" />
<ImageView
android:id="@+id/titlebar_indicate_right"
android:layout_width="fill_parent"
android:layout_height="3dip"
android:layout_weight="1.0"
android:scaleType="matrix"
android:src="@color/contact_detail_normal_blue"
android:visibility="invisible" />
</LinearLayout>
</LinearLayout>

3. 騰訊視頻Android客戶端怎麼評分

在手機上給騰訊視頻評分的方法如下:

1.打開手機,在手機桌面點擊進入app store。

4. android 如何自定義ProgressBar

<ProgressBar
android:id="@+id/more_vprogress_more"
android:layout_width="30dip"
android:layout_height="30dip"
android:layout_centerVertical="true"
android:indeterminateDrawable="@drawable/progress_selector"//這個屬性用來設置progressBar的樣式
android:visibility="gone"

/>
在Drawable目錄下創建這樣一個xml文件:

<?xml version="1.0" encoding="UTF-8"?>
< rotate xmlns:android="http://schemas.android.com/apk/res/android"
android:pivotX="50%"
android:pivotY="50%"
android:fromDegrees="0"
android:toDegrees="360">
< shape
android:shape="ring"
android:innerRadiusRatio="3"
android:thicknessRatio="8"
android:useLevel="false">
< gradient
android:type="sweep"
android:useLevel="false"
android:startColor="#871318" //通過更改這三個值,可以讓progressBar,顯示不同的效果
android:centerColor="#D5202A"
android:centerY="0.50"
android:endColor="#FFEEEE"/>
< /shape>

< /rotate>

5. android 如何實現 邊錄音 同時顯示 歌詞評分有原理,代碼就好了。。

歌曲播放時歌詞同步顯示,我們需要讀取以上歌詞文件的每一行轉換成成一個個歌詞實體,可根據當前播放器的播放進度與每句歌詞的開始時間,得到當前屏幕中央高亮顯示的那句歌詞
我們需要讀取以上歌詞文件的每一行轉換成成一個個歌詞實體:
代碼如下:

public class LyricObject {
public int begintime; // 開始時間
public int endtime; // 結束時間
public int timeline; // 單句歌詞用時
public String lrc; // 單句歌詞
}

可根據當前播放器的播放進度與每句歌詞的開始時間,得到當前屏幕中央高亮顯示的那句歌詞。在UI線程中另起線程,通過回調函數 onDraw() 每隔100ms重新繪制屏幕,實現歌詞平滑滾動的動畫效果。MainActivity代碼如下:
代碼如下:

import java.io.IOException;
import android.app.Activity;
import android.media.MediaPlayer;
import android.net.Uri;
import android.os.Bundle;
import android.os.Environment;
import android.os.Handler;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.SeekBar;
import android.widget.SeekBar.OnSeekBarChangeListener;
public class MainActivity extends Activity {
/** Called when the activity is first created. */
private LyricView lyricView;
private MediaPlayer mediaPlayer;
private Button button;
private SeekBar seekBar;
private String mp3Path;
private int INTERVAL=45;//歌詞每行的間隔
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
// this.requestWindowFeature(Window.FEATURE_NO_TITLE);
// getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN);
setContentView(R.layout.main);
mp3Path = Environment.getExternalStorageDirectory().getAbsolutePath() + "/LyricSync/1.mp3";
lyricView = (LyricView) findViewById(R.id.mylrc);
mediaPlayer = new MediaPlayer();
// this.requestWindowFeature(Window.FEATURE_NO_TITLE);
ResetMusic(mp3Path);
SerchLrc();
lyricView.SetTextSize();
button = (Button) findViewById(R.id.button);
button.setText("播放");
seekBar = (SeekBar) findViewById(R.id.seekbarmusic);
seekBar.setOnSeekBarChangeListener(new OnSeekBarChangeListener() {
@Override
public void onStopTrackingTouch(SeekBar seekBar) {
// TODO Auto-generated method stub
}
@Override
public void onStartTrackingTouch(SeekBar seekBar) {
// TODO Auto-generated method stub
}
@Override
public void onProgressChanged(SeekBar seekBar, int progress,
boolean fromUser) {
// TODO Auto-generated method stub
if (fromUser) {
mediaPlayer.seekTo(progress);
lyricView.setOffsetY(220 - lyricView.SelectIndex(progress)
* (lyricView.getSIZEWORD() + INTERVAL-1));
}
}
});
button.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
if (mediaPlayer.isPlaying()) {
button.setText("播放");
mediaPlayer.pause();
} else {
button.setText("暫停");
mediaPlayer.start();
lyricView.setOffsetY(220 - lyricView.SelectIndex(mediaPlayer.getCurrentPosition())
* (lyricView.getSIZEWORD() + INTERVAL-1));
}
}
});
mediaPlayer.setOnCompletionListener(new MediaPlayer.OnCompletionListener() {
@Override
public void onCompletion(MediaPlayer mp) {
ResetMusic(mp3Path);
lyricView.SetTextSize();
lyricView.setOffsetY(200);
mediaPlayer.start();
}
});
seekBar.setMax(mediaPlayer.getDuration());
new Thread(new runable()).start();
}
public void SerchLrc() {
String lrc = mp3Path;
lrc = lrc.substring(0, lrc.length() - 4).trim() + ".lrc".trim();
LyricView.read(lrc);
lyricView.SetTextSize();
lyricView.setOffsetY(350);
}
public void ResetMusic(String path) {
mediaPlayer.reset();
try {
mediaPlayer.setDataSource(mp3Path);
mediaPlayer.prepare();
} catch (IllegalArgumentException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IllegalStateException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
class runable implements Runnable {
@Override
public void run() {
// TODO Auto-generated method stub
while (true) {
try {
Thread.sleep(100);
if (mediaPlayer.isPlaying()) {
lyricView.setOffsetY(lyricView.getOffsetY() - lyricView.SpeedLrc());
lyricView.SelectIndex(mediaPlayer.getCurrentPosition());
seekBar.setProgress(mediaPlayer.getCurrentPosition());
mHandler.post(mUpdateResults);
}
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
}
Handler mHandler = new Handler();
Runnable mUpdateResults = new Runnable() {
public void run() {
lyricView.invalidate(); // 更新視圖
}
};
}

6. android 五星打分控制項星星大小怎麼控制

由於Android自身的星星評分控制項樣式可以改,但是他的大小不好調整的缺點,只能用small normal這樣的style調整,自定義不強,因此擊發了我自定義星星控制項的慾望。
星星評分控制項的設計,大體規劃為:
需要兩張圖片,一顆亮星星,一顆空星星;(當然圖片不一定是星星,其他圖片也可以,現在實驗就用星星就好了)星星數量,間距可以自定義,星星的最小步進為0.1,在用戶使用的時候與Android自帶的方法一樣。
星星控制項大體分為兩層,第一層空星星,第二層亮星星,第一層固定,第二層動態繪制,這樣就可以實現評分。
在畫星星的時候,由於在xml得出回來的對象是drawable,不必再轉換為bitmap繪制,故直接繪制drawable,並且提升效率。
繪制drawable需要兩個方法就夠了
1、設置繪制到那裡:
setBounds(int left ,int top , int right ,int bottom);
2、繪制:
draw(Canvas canvas);
設置錯誤setBounds會導致繪制變形:

把setbounds設置好後就一切正常:

經過一個for循環,五顆空星星就出來了,哈哈
for (int i = 0;i < starCount;i++) {
starEmptyDrawable.setBounds(starSize * i, 0, starSize * (i + 1), starSize);
starEmptyDrawable.draw(canvas);
}

for (int i = 0;i < starCount;i++) {
starEmptyDrawable.setBounds(starSize * i, 0, starSize * (i + 1), starSize);
starEmptyDrawable.draw(canvas);
}
for (int i = 0;i < starCount -1;i++) {
starFillDrawable.setBounds(starSize * i, 0, starSize * (i + 1), starSize);
starFillDrawable.draw(canvas);
}

上面幾行代碼成功強行裝成了一個評了4分的
現在,顯示幾顆幾顆的星星無壓力,但是我們目標是需要步進為0.1的星星。
But
經過一系列的實驗,發現Drawable對象沒有能指定繪制需要的部分,也就是不能繪制半顆星星(反正找不到,找到可以評論告訴我),然後就採用了折中的方法,把Drawable對象變為Bitmap這樣就好辦了,再利用BitmapShader,想繪制多少就繪制多上(就是實現0.1步進),下面為1/3顆的效果:

轉換方法:
private Bitmap drawableToBitmap(Drawable drawable)
{
if (drawable == null)return null;
Bitmap bitmap = Bitmap.createBitmap(starSize, starSize, Bitmap.Config.ARGB_8888);
Canvas canvas = new Canvas(bitmap);
drawable.setBounds(0, 0, starSize, starSize);
drawable.draw(canvas);
return bitmap;
}

把Bitmap轉換為畫筆繪制:
paint = new Paint();
paint.setAntiAlias(true);
paint.setShader(new BitmapShader(starFillBitmap, BitmapShader.TileMode.CLAMP, BitmapShader.TileMode.CLAMP));
在ondraw()方法繪制(三分之一個)

canvas.drawRect(0,0,starSize/3,starSize,paint);

原理就是這樣,剩下就是邏輯問題了,以下為星星控制項代碼:
package com.dming.starbar;

import android.content.Context;
import android.content.res.TypedArray;
import android.graphics.Bitmap;
import android.graphics.BitmapShader;
import android.graphics.Canvas;
import android.graphics.Paint;
import android.graphics.drawable.Drawable;
import android.util.AttributeSet;
import android.view.MotionEvent;
import android.view.View;

/**
* Created by DMing on 2016/7/18.
*
*/
public class StarBar extends View{
private int starDistance = 0; //星星間距
private int starCount = 5; //星星個數
private int starSize; //星星高度大小,星星一般正方形,寬度等於高度
private float starMark = 0.0F; //評分星星
private Bitmap starFillBitmap; //亮星星
private Drawable starEmptyDrawable; //暗星星
private OnStarChangeListener onStarChangeListener;//監聽星星變化介面
private Paint paint; //繪制星星畫筆
private boolean integerMark = false;
public StarBar(Context context, AttributeSet attrs) {
super(context, attrs);
init(context, attrs);
}

public StarBar(Context context, AttributeSet attrs, int defStyleAttr) {
super(context, attrs, defStyleAttr);
init(context, attrs);
}

/**
* 初始化UI組件
*
* @param context
* @param attrs
*/
private void init(Context context, AttributeSet attrs){
setClickable(true);
TypedArray mTypedArray = context.obtainStyledAttributes(attrs, R.styleable.RatingBar);
this.starDistance = (int) mTypedArray.getDimension(R.styleable.RatingBar_starDistance, 0);
this.starSize = (int) mTypedArray.getDimension(R.styleable.RatingBar_starSize, 20);
this.starCount = mTypedArray.getInteger(R.styleable.RatingBar_starCount, 5);
this.starEmptyDrawable = mTypedArray.getDrawable(R.styleable.RatingBar_starEmpty);
this.starFillBitmap = drawableToBitmap(mTypedArray.getDrawable(R.styleable.RatingBar_starFill));
mTypedArray.recycle();

paint = new Paint();
paint.setAntiAlias(true);
paint.setShader(new BitmapShader(starFillBitmap, BitmapShader.TileMode.CLAMP, BitmapShader.TileMode.CLAMP));
}

/**
* 設置是否需要整數評分
* @param integerMark
*/
public void setIntegerMark(boolean integerMark){
this.integerMark = integerMark;
}

/**
* 設置顯示的星星的分數
*
* @param mark
*/
public void setStarMark(float mark){
if (integerMark) {
starMark = (int)Math.ceil(mark);
}else {
starMark = Math.round(mark * 10) * 1.0f / 10;
}
if (this.onStarChangeListener != null) {
this.onStarChangeListener.onStarChange(starMark); //調用監聽介面
}
invalidate();
}

/**
* 獲取顯示星星的數目
*
* @return starMark
*/
public float getStarMark(){
return starMark;
}

/**
* 定義星星點擊的監聽介面
*/
public interface OnStarChangeListener {
void onStarChange(float mark);
}

/**
* 設置監聽
* @param onStarChangeListener
*/
public void setOnStarChangeListener(OnStarChangeListener onStarChangeListener){
this.onStarChangeListener = onStarChangeListener;
}

@Override
protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) {
super.onMeasure(widthMeasureSpec, heightMeasureSpec);
setMeasuredDimension(starSize * starCount + starDistance * (starCount - 1), starSize);
}

@Override
protected void onDraw(Canvas canvas) {
super.onDraw(canvas);
if (starFillBitmap == null || starEmptyDrawable == null) {
return;
}
for (int i = 0;i < starCount;i++) {
starEmptyDrawable.setBounds((starDistance + starSize) * i, 0, (starDistance + starSize) * i + starSize, starSize);
starEmptyDrawable.draw(canvas);
}
if (starMark > 1) {
canvas.drawRect(0, 0, starSize, starSize, paint);
if(starMark-(int)(starMark) == 0) {
for (int i = 1; i < starMark; i++) {
canvas.translate(starDistance + starSize, 0);
canvas.drawRect(0, 0, starSize, starSize, paint);
}
}else {
for (int i = 1; i < starMark - 1; i++) {
canvas.translate(starDistance + starSize, 0);
canvas.drawRect(0, 0, starSize, starSize, paint);
}
canvas.translate(starDistance + starSize, 0);
canvas.drawRect(0, 0, starSize * (Math.round((starMark - (int) (starMark))*10)*1.0f/10), starSize, paint);
}
}else {
canvas.drawRect(0, 0, starSize * starMark, starSize, paint);
}
}

@Override
public boolean onTouchEvent(MotionEvent event) {
int x = (int) event.getX();
if (x < 0) x = 0;
if (x > getMeasuredWidth()) x = getMeasuredWidth();
switch(event.getAction()){
case MotionEvent.ACTION_DOWN: {
setStarMark(x*1.0f / (getMeasuredWidth()*1.0f/starCount));
break;
}
case MotionEvent.ACTION_MOVE: {
setStarMark(x*1.0f / (getMeasuredWidth()*1.0f/starCount));
break;
}
case MotionEvent.ACTION_UP: {
break;
}
}
invalidate();
return super.onTouchEvent(event);
}

/**
* drawable轉bitmap
*
* @param drawable
* @return
*/
private Bitmap drawableToBitmap(Drawable drawable)
{
if (drawable == null)return null;
Bitmap bitmap = Bitmap.createBitmap(starSize, starSize, Bitmap.Config.ARGB_8888);
Canvas canvas = new Canvas(bitmap);
drawable.setBounds(0, 0, starSize, starSize);
drawable.draw(canvas);
return bitmap;
}
}

attrs的文件:

XML的使用方式:

7. android ratingbar怎麼設置半個星

RatingBar是基於SeekBar(拖動條)和ProgressBar(狀態條)的擴展,用星形來顯示等級評定,在使用默認RatingBar時,用戶可以通過觸摸/拖動/按鍵(比如遙控器)來設置評分,RatingBar自帶有兩種模式,一個小風格ratingBarStyleSmall,大風格為ratingBarStyleIndicator,大的只適合做指示,不適用與用戶交互。


黃色星形為自定義RatingBar
小綠色為自帶的ratingBarStyleSmall
大綠色為自帶的ratingBarStyleIndicator

通過設置style="XXXXXXXXXXXXX"進行設置切換(比如:style="?android:attr/ratingBarStyleIndicator")

自定義RatingBar需要注意的地方

一般情況下,系統自帶的RatingBar是遠遠無法滿足開發需求的,我們根據圖片自定一個RatingBar,在開始實現自定義RatingBar之前,順帶說一下res目錄下圖片放置目錄的區別:

在android sdk 1.5版本之前res目錄下面只有一個drawable一個目錄,在android sdk 1.6版本以後就出現了三個目錄,分別是drawable-hdpi、drawable-ldpi、drawable-mdpi、drawable-xhdpi,
(1)drawable-hdpi裡面存放高解析度的圖片,如WVGA(480x800),FWVGA(480x854)
(2)drawable-mdpi裡面存放中等解析度的圖片,如HVGA(320x480)
(3)drawable-ldpi裡面存放低解析度的圖片,如QVGA(240x320)
(4)drawable-xhdpi裡面存放超大解析度的圖片,至少960dp x 720dp
由於我們自定義實現的RatingBar裡面使用到的星形圖片解析度比較低,所以一般情況下,我們把圖片放到drawable-mdpi或者drawable-ldpi裡面。

自定義RatingBar的實現過程

首先,根據圖片自定一個RatingBar的背景條,和圖片放到同一個目錄下面(比如drawable-mdpi),room_rating_bar.xml

?


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

<layer-list xmlns:android="http://schemas.android.com/apk/res/android">

<item android:id="@+android:id/background"

android:drawable="@drawable/star1"></item> <span></span>

<item android:id="@+android:id/secondaryProgress"

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

<item android:id="@+android:id/progress"

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

</layer-list>

backgroud:是用來填充背景圖片的,和進度條非常類似,當我們設置最高評分時(android:numStars),系統就會根據我們的設置,來畫出以星星為單位的背景(假如android:numStars="5",就會畫出5顆灰色的星星)
progress:是用來在背景圖片基礎上進行填充的指示屬性(和進度條類似,第一進度位置)
secondaryProgress:同progress一樣屬於第二進度位置(如果不定義這個,進度條拖動,每次就畫出一整顆星星(亮),第二進度(暗)沒有覆蓋掉第一進度之後的位置,從左往右是拖不出來N.5顆星星的,這樣評分效果就不完整)

其次,通過開始介紹,我們知道RatingBar的樣式是通過style來切換的,在android中,我們可以通過在styles.xml文件中通過設置style屬性,來繼承我們需要自定控制項類型,如下styles.xml

?


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

<resources>

<style name="roomRatingBar" parent="@android:style/Widget.RatingBar">

<item name="android:progressDrawable">@drawable/room_rating_bar</item>

<item name="android:minHeight">16dp</item>

<item name="android:maxHeight">16dp</item>

</style>

</resources>

通過parent屬性來選擇繼承的父類,我們這里繼承RatingBar類。
重新定義progressDrawable屬性(RatingBar的背景條,和我們在首先裡面介紹的那樣)
maxHeight和minHeight可以根據我們圖片像素或者其他參考值來設定。

最後,在我們需要用到RatingBar的xml配置文件裡面添加RatingBar控制項。
main.xml

?

<RatingBar

android:id="@+id/room_ratingbar"

style="@style/roomRatingBar"

android:layout_width="wrap_content"

android:layout_height="wrap_content"

android:numStars="5"

android:rating="4"

android:layout_marginLeft="10dp" >

</RatingBar>

8. android開發自定義控制項怎麼使用權重

權重(layout_weight):即為當前線性布局指定方向(水平、豎直)上剩餘空間的一個分配規則。
(註:以下事例皆為水平方向上剩餘空間分析,手機模擬器解析度為480*320)
一. 案例一

1. 布局:
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="horizontal"
tools:context=".MainActivity" >
<!--內部控制項水平排列-->
<TextView
android:layout_width="0dp"
android:layout_height="120dp"
android:layout_weight="3"
android:background="@android:color/black"/>
<TextView
android:layout_width="0dp"
android:layout_height="120dp"
android:layout_weight="1"
android:background="@android:color/holo_green_dark"/>
</LinearLayout>

9. android開發scaletype自定義屬性中怎麼寫

ImageView.ScaleType.CENTER|android:scaleType="center" 以原圖的幾何中心點和ImagView的幾何中心點為基準,按圖片的原來size居中顯示,不縮放,當圖片長/寬超過View的長/寬,則截取圖片的居中部分顯示ImageView的size.當圖片小於View 的長寬時,只顯示圖片的size,不剪裁。

ImageView.ScaleType.CENTER_CROP|android:scaleType="centerCrop" 以原圖的幾何中心點和ImagView的幾何中心點為基準,按比例擴大(圖片小於View的寬時)圖片的size居中顯示,使得圖片長 (寬)等於或大於View的長(寬),並按View的大小截取圖片。當原圖的size大於ImageView時,按比例縮小圖片,使得長寬中有一向等於ImageView,另一向大於ImageView。實際上,使得原圖的size大於等於ImageView

ImageView.ScaleType.CENTER_INSIDE|android:scaleType="centerInside" 以原圖的幾何中心點和ImagView的幾何中心點為基準,將圖片的內容完整居中顯示,通過按比例縮小原來的size使得圖片長(寬)等於或小於ImageView的長(寬)

ImageView.ScaleType.FIT_CENTER|android:scaleType="fitCenter" 把圖片按比例擴大(縮小)到View的寬度,居中顯示

ImageView.ScaleType.FIT_END|android:scaleType="fitEnd" 把圖片按比例擴大(縮小)到View的寬度,顯示在View的下部分位置

ImageView.ScaleType.FIT_START|android:scaleType="fitStart" 把圖片按比例擴大(縮小)到View的寬度,顯示在View的上部分位置

ImageView.ScaleType.FIT_XY|android:scaleType="fitXY" 把圖片按照指定的大小在View中顯示,拉伸顯示圖片,不保持原比例,填滿View.

ImageView.ScaleType.MATRIX|android:scaleType="matrix" 用matrix來繪制

依本人之見,scaletype的種類分為三類matrix(默認)、fit-X類、和center類。matrix就不多說。fit-X類中,
fitStart、fitCenter和fitEnd之間的都是根據需要使原圖改變對ImgView進行適應,不剪裁,按matrix進行繪制,但它們
的區別在於基準不同。fitStart的基準為最上角的點(即matrix方式開始的點)fitCenter的基準點為中間的點
(matrix方式中可以使圖片居中的點),而fitEnd的基準點為右下角的點(即matrix方式最後繪制點)。center類
中,center、centerCrop、centerInside都是以原圖的幾何中心點和ImagView的幾何中心點為基準,且只繪制
ImagView大小的圖像,不同的是是否保持原圖大小和繪圖的目標不同、採取的手段不同

10. androidstudio怎麼實現app評分興縣

在XML中
<com.hedgehog.ratingbar.RatingBar
android:layout_marginTop="50dp"
android:layout_gravity="center"
android:id="@+id/ratingbar"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_centerInParent="true"
hedgehog:starCount="5"
hedgehog:clickable="true"
hedgehog:starEmpty="@mipmap/ic_star_empty"
hedgehog:starFill="@mipmap/ic_star_fill"
hedgehog:starImageSize="30dp"
/>

閱讀全文

與android自定義評分相關的資料

熱點內容
為什麼同一個app的功能不一樣 瀏覽:230
小型工作室用什麼伺服器好 瀏覽:995
程序員的興趣 瀏覽:413
華為伺服器有什麼好 瀏覽:701
程序員和測試之間的關系 瀏覽:945
加密蚊帳什麼意思 瀏覽:151
javalistclear 瀏覽:607
哪個app上民宿多靠譜 瀏覽:827
重慶伺服器租用哪裡有雲伺服器 瀏覽:453
土星模擬器文件夾 瀏覽:902
文件夾文件袋文件盒 瀏覽:695
雲伺服器打開f8指令 瀏覽:243
盈透證券加密幣 瀏覽:72
阿里雲伺服器初始密碼怎麼修改 瀏覽:266
伺服器怎麼設定公用網路 瀏覽:99
程序員自己嘗尿檢測出糖尿病 瀏覽:593
列印添加pdf 瀏覽:932
蘋果解壓專家賬號 瀏覽:844
度曉曉app為什麼關閑 瀏覽:228
net文件是偽編解碼嗎 瀏覽:149