① android里怎麼實現textview裡面的文字動畫效果
自定義控制項1、自定義view,在view中重寫onDraw()方法2、獲取需要顯示的文字,採用handler.postDelay()方式,逐個顯示文字,DrawText();
② android 跑馬燈效果,如果文字不超過寬度,我也想做出跑馬燈效果,怎麼實現
今天要實現的一個效果是在Android中實現一個跑馬燈的效果:
在新建一個Android proct之後,在布局文件main中替換掉原來的TextView
代碼如下:
<TextView
android:layout_width="60dp"
android:layout_height="wrap_content"
android:textColor="@android:color/black"
android:ellipsize="marquee"
android:focusable="true"
android:focusableInTouchMode="true"
android:marqueeRepeatLimit="marquee_forever"
android:scrollHorizontally="true"
android:text="這是跑馬燈的效果這是跑馬燈的效果">
</TextView>
其他部分代碼不用改動,在模擬器上應該可以看到滾動的顯示"這是跑馬燈的效果這是跑馬燈的效果"。
其中有幾個問題是我自己碰到的,列舉如下:
1.寬度android:layout_width不可以設置為wrap_content(自適應內容)
2.android:text最好是比較長的字元串,最少要長過自己設置的width大小(我這里是60dp)
3.顏色最好別設置為@android:color/white,否則你什麼都看不到,因為背景顏色也是white
4.在xml中,TextView 的屬性
android:ellipsize = "end" 省略號在結尾
android:ellipsize = "start" 省略號在開頭
android:ellipsize = "middle" 省略號在中間
android:ellipsize = "marquee" 跑馬燈
5.android:scrollHorizontally="true"相信大家英文水平還不錯的話都明白這句的意思是水平滾動
6.android:marqueeRepeatLimit="marquee_forever" 看英文同樣可以明白,是無限次循環,學習android,英文基礎還是必須的。
7.最後還有兩句代碼沒有解釋:
android:focusable="true" //讓TextView獲得焦點
android:focusableInTouchMode="true" //針對觸摸屏獲得當前焦點
事實上這兩句代碼我也了解不是特別多,在網上查了下這兩個屬性,目前理解為:
android:focusable="true"相當於當前Activity打開的時候,讓當前控制項TextView獲得焦點,才可以實現滾動功能
android:focusableInTouchMode="true"和上述屬性應該是類似的,但限制應該是指的觸摸屏上的意思
對於這兩個屬性,希望有高人指點下。
③ android 文字怎麼加陰影效果 怎麼無效
Android:shadowColor 陰影顏色
android:shadowDx 陰影的水平偏移量
android:shadowDy 陰影的垂直偏移量
android:shadowRadius 陰影的范圍
為了統一風格和代碼的復用,通常可以把這個樣式抽取放入到style.xml文件中
<TextView
style="@style/textstyle"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:text="字體樣式"
android:textSize="30sp"
android:textStyle="bold" />
樣式實現:
<?xmlversion="1.0"encoding="utf-8"?>
<resources>
<stylename="textstyle">
<itemname="android:shadowColor">#ff0000ff</item>
<itemname="android:shadowRadius">10</item>
<itemname="android:shadowDx">5</item>
<itemname="android:shadowDy">5</item>
</style>
</resources>
關於android文字陰影,共有四個屬性可以設置:
android:shadowColor :陰影顏色
android:shadowDx :陰影x方向位移
android:shadowDy :陰影y方向位移
android:shadowRadius :陰影的半徑
注意:陰影的半徑必須設,為0時沒有效果。
下面為改變x位移:
android:shadowColor="#ff000000" (前兩位為透明度)
android:shadowDx="2"
android:shadowDy="0"
android:shadowRadius="1"
效果(向右為正):
下面為改變y位移:
android:textColor="#979790"
android:shadowColor="#ff000000"
android:shadowDx="0"
android:shadowDy="2"
android:shadowRadius="1"
效果(向下為正):
下面改變半徑:
android:shadowDx="1"
android:shadowDy="1"
android:shadowRadius="1"
④ 請問這個問題,Android實現TextView裡面的文字一個一個逐漸顯示的效果,最後解決了嗎,怎麼解決的,謝謝
如果字數不多的話可以考慮自定義控制項繼承textView,重寫TextView(Context context,AttributeSet attris)方法,自定義樣式。在構造器中獲取到自定義樣式的屬性值,然後開啟一個線程,間隔一段時間想View發送消息,截取子字元串顯示;代碼可如下:
public class MyTextView extends TextView{
int textIndex = 0;
String text;
String subText;
ShowTextThread showTextThread;
public MyTextView(Context context){
super(context);
text = "";
}
public MyTextView(Context context,AttributeSet attrs){
super(context,attrs);
TypedArray array = context.obtainStyledAttributes(attrs,R.styleable.xxxx);
text = array.getString(R.styleable.xxxx_xxxx);
showTextThread = new ShowTextView();
showTextThread.start();
}
class ShowTextThread extends Thread{
public void run(){
while(textIndex != text.length){
subText = text.subString(0,textIndex);
postIndvalidate();
textIndex++;
}
}
}
protected void onDraw(){
setText(subText);
super.onDraw();
}
}
有問題請追問,希望對你有幫助!如果符合要求,請採納,寫這么多字,不容易啊!
⑤ 有沒有人知道,android字體外發光的效果是如何實現的
字體高亮:SpannableStringBuilder style=new SpannableStringBuilder(string); style.setSpan(new ForegroundColorSpan(Color.RED,start,end,Spannable.SPAN_EX_...)); textView.setText(style);
⑥ android textview怎樣實現文字跑馬燈效果
Android自帶的跑馬燈效果不太好控制,不能控制速度,不能即時停止和啟動,而且還受焦點的影響蛋疼不已。由於項目需求需要用的可控制性高的跑馬燈效果,所以自己寫了一個自定義的TextView android:ellipsize="marquee" android:singleLine="true" 這兩個屬性也要加上 public class MarqueeText extends TextView implements Runnable { private int currentScrollX;// 當前滾動的位置 private boolean isStop = false; private int textWidth; private boolean isMeasure = false; public MarqueeText(Context context) { super(context); // TODO Auto-generated constructor stub } public MarqueeText(Context context, AttributeSet attrs) { super(context, attrs); } public MarqueeText(Context context, AttributeSet attrs, int defStyle) { super(context, attrs, defStyle); } @Override protected void onDraw(Canvas canvas) { // TODO Auto-generated method stub super.onDraw(canvas); if (!isMeasure) {// 文字寬度只需獲取一次就可以了 getTextWidth(); isMeasure = true; } } /** * 獲取文字寬度 */ private void getTextWidth() { Paint paint = this.getPaint(); String str = this.getText().toString(); textWidth = (int) paint.measureText(str); } @Override public void run() { currentScrollX -= 2;// 滾動速度 scrollTo(currentScrollX, 0); if (isStop) { return; } if (getScrollX() <= -(this.getWidth())) { scrollTo(textWidth, 0); currentScrollX = textWidth; // return; } postDelayed(this, 5); } // 開始滾動 public void startScroll() { isStop = false; this.removeCallbacks(this); post(this); } // 停止滾動 public void stopScroll() { isStop = true; } // 從頭開始滾動 public void startFor0() { currentScrollX = 0; startScroll(); } }布局文件: <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:layout_width="fill_parent" android:layout_height="fill_parent" android:orientation="vertical" > <Button android:id="@+id/start" android:layout_width="wrap_content" android:layout_height="wrap_content" android:onClick="start" android:text="走起" /> <Button android:id="@+id/stop" android:layout_width="wrap_content" android:layout_height="wrap_content" android:onClick="stop" android:text="停止" /> <Button android:id="@+id/startfor0" android:layout_width="wrap_content" android:layout_height="wrap_content" android:onClick="startFor0" android:text="從頭開始" /> <simtice.demo.marqueetext.MarqueeText android:id="@+id/test" android:layout_width="fill_parent" android:layout_height="wrap_content" android:background="#339320" android:ellipsize="marquee" android:singleLine="true" android:text="這才是真正的文字跑馬燈效果這才是真正的字跑馬燈效果這才是真正的" android:textColor="#000000" android:textSize="20dp" > </simtice.demo.marqueetext.MarqueeText></LinearLayout>MainActivitypublic class MainActivity extends Activity { private MarqueeText test; @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); test = (MarqueeText) this.findViewById(R.id.test); } public void start(View v) { test.startScroll(); } public void stop(View v) { test.stopScroll(); } public void startFor0(View v){ test.startFor0(); }}
⑦ Android里怎麼實現TextView裡面的文字一個一個逐漸顯示出來的動畫效果
很多方式,可以讓TextView每隔多少時間重新setText一下。animation是針對View,不針對View上的文字,如果你讓一個字顯示在一個TextView上面,就可以用animation。
⑧ android的字體設置凹凸感效果怎麼設置,高手指點。waitting。。。
在android中是可以改變字體樣式的!下載你需要的字體到assets文件夾下然後用TextView.setTypeface(Typeface typeface)來從資源文件中載入字體文件。
⑨ Android 編程 如何實現 文字放大效果 例如圖片的放大和縮小的效果
import android.app.Activity;
import android.graphics.Bitmap;
import android.graphics.BitmapFactory;
import android.graphics.Matrix;
import android.graphics.PointF;
import android.os.Bundle;
import android.util.FloatMath;
import android.view.MotionEvent;
import android.view.View;
import android.view.View.OnTouchListener;
import android.view.ViewGroup.MarginLayoutParams;
import android.widget.ImageView;
public class MainActivity extends Activity implements OnTouchListener {
/** Called when the activity is first created. */
// 放大縮小
Matrix matrix = new Matrix();
Matrix savedMatrix = new Matrix();
PointF start = new PointF();
PointF mid = new PointF();
float oldDist;
private ImageView myImageView;
// 模式
static final int NONE = 0;
static final int DRAG = 1;
static final int ZOOM = 2;
int mode = NONE;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
myImageView = (ImageView) findViewById(R.id.myImage);
myImageView.setOnTouchListener(this);
}
@Override
public boolean onTouch(View v, MotionEvent event) {
ImageView myImageView = (ImageView) v;
switch (event.getAction() & MotionEvent.ACTION_MASK) {
// 設置拖拉模式
case MotionEvent.ACTION_DOWN:
matrix.set(myImageView.getImageMatrix());
savedMatrix.set(matrix);
start.set(event.getX(), event.getY());
mode = DRAG;
break;
case MotionEvent.ACTION_UP:
case MotionEvent.ACTION_POINTER_UP:
mode = NONE;
break;
// 設置多點觸摸模式
case MotionEvent.ACTION_POINTER_DOWN:
oldDist = spacing(event);
if (oldDist > 10f) {
savedMatrix.set(matrix);
midPoint(mid, event);
mode = ZOOM;
}
break;
// 若為DRAG模式,則點擊移動圖片
case MotionEvent.ACTION_MOVE:
if (mode == DRAG) {
matrix.set(savedMatrix);
matrix.postTranslate(event.getX() - start.x, event.getY()
- start.y);
}
// 若為ZOOM模式,則點擊觸摸縮放
else if (mode == ZOOM) {
float newDist = spacing(event);
if (newDist > 10f) {
matrix.set(savedMatrix);
float scale = newDist / oldDist;
// 設置碩放比例和圖片的中點位置
matrix.postScale(scale, scale, mid.x, mid.y);
}
}
break;
}
myImageView.setImageMatrix(matrix);
return true;
}
// 計算移動距離
private float spacing(MotionEvent event) {
float x = event.getX(0) - event.getX(1);
float y = event.getY(0) - event.getY(1);
return FloatMath.sqrt(x * x + y * y);
}
// 計算中點位置
private void midPoint(PointF point, MotionEvent event) {
float x = event.getX(0) + event.getX(1);
float y = event.getY(0) + event.getY(1);
point.set(x / 2, y / 2);
}
}