フルスクリーンで時間を表示するアプリを開発しました。画面中央に時分秒が表示されます。したがって、私の目的は、テキストビューのいずれかを長くクリックすると、画面全体をスクロールして、必要な場所に配置できるようにすることです...
アプリに適用する適切なコードを見つけようとしましたが、テキストを画像にしてからその画像を移動するコードを見つけました。しかし、問題は、テキストが毎秒更新されていることです。そのため、毎秒画像を作成することはお勧めできません...
画面全体でテキストビューを移動できる方法を知っている人はいますか??? これは私のテキストビューの1つです
private TextView txtHour;
txtHour = (TextView)findViewById(R.id.TxtHour);
txtHour.setOnLongClickListener(new OnLongClickListener{
....
これに何を追加すればよいかわかりません.... :( 助けてください!
編集:最初の回答によると、私のコードは次のようになりますか?
txtHour.setOnLongClickListener(new OnLongClickListener() {
public void onLongClick(View v){
public void drag(MotionEvent event, View v)
{
RelativeLayout.LayoutParams params = (android.widget.RelativeLayout.LayoutParams) v.getLayoutParams();
switch(event.getAction())
{
case MotionEvent.ACTION_MOVE:
{
params.topMargin = (int)event.getRawY() - (v.getHeight());
params.leftMargin = (int)event.getRawX() - (v.getWidth()/2);
v.setLayoutParams(params);
break;
}
case MotionEvent.ACTION_UP:
{
params.topMargin = (int)event.getRawY() - (v.getHeight());
params.leftMargin = (int)event.getRawX() - (v.getWidth()/2);
v.setLayoutParams(params);
break;
}
case MotionEvent.ACTION_DOWN:
{
v.setLayoutParams(params);
break;
}
}
}});
編集 2: finnaly これは結果コードです。これでよろしいですか?
package com.iamaner.T2Speech;
//imports
public class MAINActivity extends Activity{
private TextView txtHour;
private TextView txtMinutes;
private TextView txtSeconds;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
txtHour = (TextView)findViewById(R.id.TxtHour);
txtMinutes = (TextView)findViewById(R.id.TxtMinute);
txtSeconds = (TextView)findViewById(R.id.TxtSeconds);
txtHour.setOnTouchListener(new OnTouchListener() {
public boolean onTouch(View v, MotionEvent event) {
// TODO Auto-generated method stub
drag(event, v);
return false;
}});
}
public void drag(MotionEvent event, View v)
{
FrameLayout.LayoutParams params = (android.widget.FrameLayout.LayoutParams) v.getLayoutParams();
switch(event.getAction())
{
case MotionEvent.ACTION_MOVE:
{params.topMargin = (int)event.getRawY() - (v.getHeight());
params.leftMargin = (int)event.getRawX() - (v.getWidth()/2);
v.setLayoutParams(params);
break;}
case MotionEvent.ACTION_UP:
{params.topMargin = (int)event.getRawY() - (v.getHeight());
params.leftMargin = (int)event.getRawX() - (v.getWidth()/2);
v.setLayoutParams(params);
break;}
case MotionEvent.ACTION_DOWN:
{v.setLayoutParams(params);
break;}
}}
}
そしてこのフレームレイアウト
<?xml version="1.0" encoding="utf-8"?>
<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/your_layout"
android:layout_width="fill_parent"
android:layout_height="fill_parent" >
<TextView
android:id="@+id/TxtHour"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textSize="15mm"
android:textColor="#000000"/>
<TextView
android:id="@+id/TxtPoints1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/separator"
android:textSize="15mm"
android:textColor="#000000"
android:layout_gravity="center"
android:gravity="center"/>
<TextView
android:id="@+id/TxtMinute"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textSize="15mm"
android:textColor="#000000"
android:layout_gravity="center"
android:gravity="center" />
<TextView
android:id="@+id/TxtPoints2"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/separator"
android:textSize="15mm"
android:textColor="#000000"
android:layout_gravity="center"
android:gravity="center"/>
<TextView
android:id="@+id/TxtSeconds"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textSize="15mm"
android:textColor="#000000"
android:layout_gravity="bottom|right" />
</FrameLayout>