5

Ist es möglich, Text von Java-Codierung einer Listenansicht zu Festzelt Scroll in Android hinzuzufügen. Wenn ja, kannst du mir bitte sagen wie?Text für Laufschrift dynamisch

Bei Bedarf werde ich den verwendeten Code veröffentlichen. Dies war der XML für Listview verwendet wird, ist als

<?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:orientation="vertical" > 
    <LinearLayout 
     android:id="@+id/linearLayout1" 
     android:layout_width="fill_parent" 
     android:layout_height="wrap_content" 
     android:orientation="horizontal" > 
    </LinearLayout> 
    <ListView 
     android:id="@+id/audiolist_listView" 
     android:layout_width="fill_parent" 
     android:layout_height="0dp" 
     android:layout_gravity="bottom" 
     android:layout_weight="1" 
     android:background="@drawable/backgroundimg" 
     android:divider="@drawable/gradient" 
     android:dividerHeight="1dp" 
     android:scrollbars="vertical" > 
    </ListView> 

</LinearLayout> 
folgt

Die Java-Klasse für Listview ist wie folgt

public class Audiovediolist extends Activity implements OnItemClickListener { 
    private ListView audioList; 
    private Intent frmHome; 
    private ArrayList<HashMap<String, String>> dataList; 
    private HashMap<String, String> map; 
    private HashMap<String, String> data; 
    private int Screen_Id; 
    private AdView adView; 
    String name; 
    String mSign[] = { "Aries-Mesam", "Taurus-Vrushabham", "Gemini-Midhunam", 
      "Cancer-Karkatakam", "Leo-Simham", "Virgo-Kanya", "Libra-Tula", 
      "Scorpio-Vruchikam", "Sagittarius-Dhanussu", "Capricorn-Makaram", 
      "Aquarius-Kumbham", "Pisces-Meenam" }; 
    Integer mImages[] = { R.drawable.meshamu, R.drawable.vrushabhamu, 
      R.drawable.medhunam, R.drawable.karkatakam, R.drawable.simham, 
      R.drawable.kanya, R.drawable.tula, R.drawable.vruchikam, 
      R.drawable.dhanussu, R.drawable.makaramu, R.drawable.kumbhamu, 
      R.drawable.meenamu }; 

    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     requestWindowFeature(Window.FEATURE_RIGHT_ICON); 
     setContentView(R.layout.list); 
     frmHome = getIntent(); 
     getIntentValues(); 
     initUI(); 
     setUI(); 
     uiListener(); 
    } 

    private void initUI() { 
     audioList = (ListView) findViewById(R.id.audiolist_listView); 
     dataList = new ArrayList<HashMap<String, String>>(); 
     adView = new AdView(this, AdSize.SMART_BANNER, "a150b89c23af3b2"); 
     LinearLayout layout = (LinearLayout) findViewById(R.id.linearLayout1); 
     layout.setGravity(Gravity.TOP); 
     layout.addView(adView); 
     adView.loadAd(new AdRequest()); 
    } 

    private void uiListener() { 
     audioList.setOnItemClickListener(this); 
    } 

    private void getIntentValues() { 
     String id = frmHome.getStringExtra("Activity_Id"); 
     Screen_Id = Integer.parseInt(id); 
     if (Screen_Id == 1) { 
      getWindow().setFeatureDrawableResource(Window.FEATURE_RIGHT_ICON, 
        R.drawable.audioo); 
      this.setTitle(getResources().getString(R.string.audio)); 
      this.setTitleColor(getResources().getColor(R.color.Beige)); 
     } else { 
      this.setTitle(getResources().getString(R.string.video)); 
      this.setTitleColor(getResources().getColor(R.color.Beige)); 
      getWindow().setFeatureDrawableResource(Window.FEATURE_RIGHT_ICON, 
        R.drawable.videoo); 
     } 
    } 

    private void setAdapter() { 
     SimpleAdapter adapter = new SimpleAdapter(this, dataList, 
       R.layout.list_row, new String[] { "Image", "text" }, new int[] { 
         R.id.audiolist_row_img, R.id.audiolist_row_tv }); 
     audioList.setAdapter(adapter); 
    } 

    private void setUI() { 
     for (int a = 0; a <= 11; a++) { 
      map = new HashMap<String, String>(); 
      map.put("Image", "" + mImages[a]); 
      map.put("text", mSign[a]); 
      dataList.add(map); 
      map = null; 
     } 
    } 

    @Override 
    protected void onStart() { 
     super.onStart(); 
     setAdapter(); 
    } 

    @Override 
    public void onBackPressed() { 
     super.onBackPressed(); 
     System.gc(); 
    } 

    @Override 
    protected void onDestroy() { 
     super.onDestroy(); 
     adView.destroy(); 
    } 

    /* 
    * private class NextTask extends AsyncTask<Void,Void,Void> { ProgressDialog 
    * progressDailog = new ProgressDialog(Audiovediolist.this); 
    * 
    * @Override protected void onPreExecute() { super.onPreExecute(); 
    * progressDailog.setTitle("Please Wait"); 
    * progressDailog.setMessage("URL Data Loading ..."); 
    * progressDailog.setProgressStyle(ProgressDialog.STYLE_SPINNER); 
    * progressDailog.setCancelable(true); progressDailog.show(); } 
    * 
    * @SuppressWarnings("static-access") 
    * 
    * @Override protected Void doInBackground(Void... params) { return null; } 
    * 
    * @Override protected void onPostExecute(Void result) { 
    * progressDailog.dismiss(); } } 
    */ 
    @Override 
    public void onItemClick(AdapterView<?> parent, View view, int position, 
      long id) { 
     data = dataList.get(position); 
     //FinalConstants.AUDIO_VIDEO = "list"; 
     try { 
      NetWorkCheck netWork = new NetWorkCheck(); 
      if (netWork.isNetWorkConnection(this)) { 
       if (Screen_Id == 1) { 
        // new NextTask().execute(); 
        Intent audioInt=new Intent(getApplicationContext(),AudioView.class); 
        audioInt.setType(data.get("text")); 

        startActivity(audioInt); 
       } else if (Screen_Id == 2) { 
        Intent vedioInt = new Intent(this, VideoPlayActivity.class); 
        vedioInt.setType(data.get("text")); 
        startActivity(vedioInt); 
       } 
      } else { 
       netWork.alert(); 
      } 
     } catch (Exception e) { 
      e.printStackTrace(); 
      Toast.makeText(this, "Problem while ListItemClick", 
        Toast.LENGTH_SHORT).show(); 
     } 
    } 
} 

Der Code für Audio-Player, wo ich den Text benötigen, ausgewählt blättern wie

folgt
public class AudioView extends Activity implements OnClickListener { 
    private MediaPlayer mMediaPlayer; 
    private ImageView mPlay; 
    private ImageView mPause; 
    private ImageView mBack; 
    private ImageView mFar; 
    private ProgressBar myProgressBar; 
    private boolean boolFlag = false; 
    private boolean isPausedInCall = false; 
    private String url; 
    private TelephonyManager mTelephoneMgr; 
    private NotificationManager mNotificationManager; 
    private int SIMPLE_NOTFICATION_ID; 
    private TextView tv; 
    // private boolean serviceRunning; 
    Notification notifyDetails; 
    private AdView adView; 


    @SuppressWarnings("deprecation") 
    @Override 
    public void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     getWindow().requestFeature(Window.FEATURE_INDETERMINATE_PROGRESS); 
     setContentView(R.layout.marquee); 
     Toast.makeText(this,"please wait.........",Toast.LENGTH_LONG).show(); 
     url=getIntent().getType(); 
     initUI(); 
     uiListener(); 

     mNotificationManager = (NotificationManager) getSystemService(NOTIFICATION_SERVICE); 
     notifyDetails = new Notification(R.drawable.mulug_icon, url, 
       System.currentTimeMillis()); 
     mTelephoneMgr = (TelephonyManager) getSystemService(TELEPHONY_SERVICE); 
     if (mTelephoneMgr != null) { 
      mTelephoneMgr.listen(phoneStateListener, 
        PhoneStateListener.LISTEN_CALL_STATE); 
     } 
     /*if(FinalConstants.AUDIO_VIDEO=="listitem"){ 
     LoginProgress task = new LoginProgress(); 
     task.applicationContext = AudioView.this; 
     task.execute(); 
    }*/ 
    } 

    private void initUI() { 
     tv = (TextView) findViewById(R.id.text); 
     mBack = (ImageView) findViewById(R.id.back); 
     mPlay = (ImageView) findViewById(R.id.play); 
     mPause = (ImageView) findViewById(R.id.pause); 
     mFar = (ImageView) findViewById(R.id.fwd); 
     myProgressBar = (ProgressBar) findViewById(R.id.progressbar_Horizontal); 
     myProgressBar.setProgressDrawable(getResources().getDrawable(
       R.drawable.green_progress)); 
     myProgressBar.setProgress(0); 
     adView = new AdView(this, AdSize.BANNER, "a150b89c23af3b2"); 
     LinearLayout layout = (LinearLayout) findViewById(R.id.linearLayout1); 
     layout.setGravity(Gravity.TOP); 
     layout.addView(adView); 
     adView.loadAd(new AdRequest()); 
     tv.setText(url + "more Deails Click on www.mulugu.com"); 
     tv.setSelected(true); 
    } 
    private void uiListener() { 
     mPlay.setOnClickListener(this); 
     mPlay.setOnClickListener(this); 
     mPause.setOnClickListener(this); 
     mPause.setVisibility(android.view.View.INVISIBLE); 
     mBack.setOnClickListener(this); 
     mFar.setOnClickListener(this); 
    } 

    private Thread myThread = new Thread() { 
     public void run() { 
      while (mMediaPlayer.getCurrentPosition() < mMediaPlayer 
        .getDuration()) { 
       try { 
        myProgressBar 
          .setProgress(mMediaPlayer.getCurrentPosition()); 
       } catch (Throwable t) { 
       } 
      } 
     } 
    }; 



    @Override 
    protected void onStart() { 
     super.onStart(); 
     this.setProgressBarIndeterminateVisibility(true); 
     try { 
      if (boolFlag == false) { 
       System.out.println(FinalConstants.URL + "mobile-audio/" + url+ ".mp3"); 
       mMediaPlayer = MediaPlayer.create(
         this, 
         Uri.parse(FinalConstants.URL + "mobile-audio/" + url 
           + ".mp3")); 
      } 
      myProgressBar.setMax(mMediaPlayer.getDuration()); 
     } catch (Exception e) { 
      Toast.makeText(getApplicationContext(), "Data not available", 
        Toast.LENGTH_SHORT).show(); 
      Log.e("ERRORS", "Data Not Exist in that Url..."); 
      super.onBackPressed(); 
      e.printStackTrace(); 
     } 
    } 

    @SuppressLint("NewApi") 
    @Override 
    public void onBackPressed() { 
     super.onBackPressed(); 
     mMediaPlayer.stop(); 
     // myThread.stop(); 
     mNotificationManager.cancel(SIMPLE_NOTFICATION_ID); 
     System.gc(); 
    } 

    @Override 
    protected void onDestroy() { 
     adView.destroy(); 
     super.onDestroy(); 
     System.gc(); 
    } 



    public PhoneStateListener phoneStateListener = new PhoneStateListener() { 
     @Override 
     public void onCallStateChanged(int state, String incomingNumber) { 
      if (state == TelephonyManager.CALL_STATE_RINGING) { 
       System.out.println("ringing state"); 
       if (mMediaPlayer != null) { 
        pauseMedia(); 
        isPausedInCall = true; 
       } 
       notificationShow(); 
      } 
      if (state == TelephonyManager.CALL_STATE_IDLE) { 
       System.out.println("callState Idle"); 
       if (mMediaPlayer != null) { 
        if (isPausedInCall) { 
         isPausedInCall = false; 
         playMedia(); 
        } 
       } 
      } 
      if (state == TelephonyManager.CALL_STATE_OFFHOOK) { 
      } 
      super.onCallStateChanged(state, incomingNumber); 
     } 
    }; 

    private void pauseMedia() { 
     mMediaPlayer.pause(); 
     changePlayerIcons(false); 
    } 

    private void playMedia() { 
     mMediaPlayer.start(); 
     changePlayerIcons(true); 
    } 
    public void onClick(View v) { 
     switch (v.getId()) { 
     case R.id.play: 
      if (!boolFlag) { 
       try { 
        notificationShow(); 
        mMediaPlayer.setLooping(false); 
        mMediaPlayer.prepareAsync(); 
       } catch (Exception e) { 
        Toast.makeText(this, "preparing", Toast.LENGTH_SHORT) 
          .show(); 
       } 
       boolFlag = true; 
       mMediaPlayer.start(); 
       myThread.start(); 
      } else { 
       notificationShow(); 
       mMediaPlayer.getCurrentPosition(); 
       mMediaPlayer.start(); 
      } 
      changePlayerIcons(true); 
      myProgressBar.setProgress(mMediaPlayer.getCurrentPosition()); 
      mMediaPlayer.setOnCompletionListener(new OnCompletionListener() { 
       @Override 
       public void onCompletion(MediaPlayer arg0) { 
        changePlayerIcons(false); 
        myProgressBar.setProgress(0); 
        onStart(); 
       } 
      }); 
      mMediaPlayer.setOnPreparedListener(new OnPreparedListener() { 
       @Override 
       public void onPrepared(MediaPlayer mp) { 
       } 
      }); 
      break; 
     case R.id.pause: 
      mMediaPlayer.pause(); 
      mPlay.setVisibility(android.view.View.VISIBLE); 
      mPause.setVisibility(android.view.View.INVISIBLE); 
      break; 
     case R.id.back: 
      int dur = mMediaPlayer.getCurrentPosition(); 
      int pos = (dur > 10000 ? dur - 5000 : 0); 
      mMediaPlayer.seekTo(pos); 
      break; 
     case R.id.fwd: 
      int curpos = mMediaPlayer.getCurrentPosition(); 
      int dur2 = mMediaPlayer.getDuration(); 
      int pos2 = (curpos + 5000 > dur2 ? dur2 : curpos + 5000); 
      mMediaPlayer.seekTo(pos2); 
      break; 
     } 
    } 

    @SuppressWarnings("deprecation") 
    private void notificationShow() { 
     Context context = getApplicationContext(); 
     CharSequence contentTitle = "Mulugu Running"; 
     CharSequence contentText = url + " Weekly Predictions"; 

     Intent notifyIntent = new Intent(AudioView.this, AudioView.class); 
     PendingIntent intent = PendingIntent.getActivity(AudioView.this, 0, 
       notifyIntent, android.content.Intent.FLAG_ACTIVITY_CLEAR_TOP); 
     notifyDetails.setLatestEventInfo(context, contentTitle, contentText, 
       intent); 
     mNotificationManager.notify(SIMPLE_NOTFICATION_ID, notifyDetails); 
    } 

    private void changePlayerIcons(boolean b) { 
     if (b) { 
      mPlay.setVisibility(android.view.View.INVISIBLE); 
      mPause.setVisibility(android.view.View.VISIBLE); 
     } else { 
      mPlay.setVisibility(android.view.View.VISIBLE); 
      mPause.setVisibility(android.view.View.INVISIBLE); 
     } 
    } 

    /*public class LoginProgress extends AsyncTask<Void, Void, Void> { 

     private ProgressDialog dialog; 
     protected Context applicationContext; 

     @Override 
     protected void onPostExecute(Void result) { 
      // TODO Auto-generated method stub 
      super.onPostExecute(result); 
      this.dialog.dismiss(); 
     } 

     @Override 
     protected void onPreExecute() { 
      this.dialog = ProgressDialog.show(applicationContext, "Data Loading", 
        "Loading .....", true); 
     } 

     @Override 
     protected Void doInBackground(Void... params) { 
      LoadUrl(); 
      return null; 
     } 
     private void LoadUrl() { 
      mMediaPlayer = new MediaPlayer(); 
      mMediaPlayer.reset(); 
      try { 
       mMediaPlayer.setDataSource(AudioView.this,Uri.parse(FinalConstants.URL + "mobile-audio/" + getIntent().getType()+ ".mp3")); 
       mMediaPlayer.setLooping(false); // Set looping 
       mMediaPlayer.prepare(); 
       myProgressBar.setMax(mMediaPlayer.getDuration()); 
      } catch (Exception e) { 
       e.printStackTrace(); 
      } 
     } 
    }*/ 
} 
+0

können Sie erklären, was Sie genau brauchen? Ich bekomme es anscheinend nicht –

+0

Ich muss den Text aus einer Listenansicht dynamisch abrufen. Angenommen, ich habe eine Listenansicht mit 12 verschiedenen Namen zu einem Audio-Player anschließen, und ich mag zeigen, welche Namen in einem Marquee in dem Audio-Player-Bildschirm ausgewählt ist. Ist es möglich. –

+0

Sie möchten den Namen erhalten, der auf dem vom Benutzer ausgewählten Element angezeigt wird? : $ Oder sind Sie mehr daran interessiert, ein Zelt zu implementieren? –

Antwort

3

Wenn Sie Text bewegen müssen, vielleicht wird dies dazu beitragen:

http://developer.android.com/guide/topics/resources/animation-resource.html#translate-element

Wenn Sie eine Textview mit einem Text, der zu groß ist und Sie wollen es, sich zu bewegen, damit die Menschen die ganze Sache lesen können, versuchen android:ellipsize="marquee" in der XML-Datei oder in der Java-Code: textView.setEllipsize(TextUtils.TruncateAt.MARQUEE);

+0

muss ich den Text erhalten aus einer Listenansicht dynamisch. Angenommen, ich habe eine Listenansicht mit 12 verschiedenen Namen zu einem Audio-Player anschließen, und ich mag zeigen, welche Namen in einem Marquee in dem Audio-Player-Bildschirm ausgewählt ist. Ist es möglich. –

+0

ich nicht Animation –

1

Wenn die Android-Bibliotheken nicht genug sind, können Sie immer das Java über Codierung verwenden. Erstellen Sie eine Thread-Klasse, die die Ansichten abruft und die Bedingungen im Laufe der Zeit ändert. Sie können eine Absicht erstellen, um diese Klasse aufzurufen.

1

Sie können den TextSwitcher verwenden und die Animation darauf anwenden.

Try unten Code:

public class TextSwitcherActivity extends Activity implements ViewSwitcher.ViewFactory, 
    View.OnClickListener      
    { 
private TextSwitcher m_switcher; 
private Button m_nextButton; 
private int m_counter = 0; 

@Override 
protected void onCreate(Bundle savedInstanceState) 
{ 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_main); 

    m_switcher = (TextSwitcher) findViewById(R.id.tsSwitcher); 
    m_switcher.setFactory(this); 

    Animation in = AnimationUtils.loadAnimation(this, android.R.anim.fade_in); 
    Animation out = AnimationUtils.loadAnimation(this, android.R.anim.fade_out); 
    m_switcher.setInAnimation(in); 
    m_switcher.setOutAnimation(out); 

    m_nextButton = (Button) findViewById(R.id.next); 
    m_nextButton.setOnClickListener(this); 
    updateCounter(); 
} 

/** 
* Update counter value 
*/ 
public void onClick(View v) 
{ 
    m_counter++; 
    updateCounter(); 
} 

/** 
* Set text on textswitcher 
*/ 
private void updateCounter() 
{ 
    m_switcher.setText(String.valueOf(m_counter)); 
} 

public View makeView() 
{ 
    TextView t = new TextView(this); 
    t.setGravity(Gravity.TOP | Gravity.CENTER_HORIZONTAL); 
    t.setTextSize(36); 
    return t; 
} 

Sie können Ihre eigenen Animationen definieren den Marquee-Effekt zu erhalten.

0

Hier wird das Beispiel

<RelativeLayout 
xmlns:android="http://schemas.android.com/apk/res/android" 
android:layout_width="fill_parent" 
android:layout_height="fill_parent"> 
<TextView 
    android:id="@+id/mywidget" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:layout_alignParentRight="true" 
    android:lines="1" 
    android:ellipsize="marquee" 
    android:fadingEdge="horizontal" 
    android:marqueeRepeatLimit="marquee_forever" 
    android:scrollHorizontally="true" 
    android:textColor="#ff4500" 
    android:text="Simple application that shows how to use marquee, with a long text" /> 

in Java (Wenn Sie eine Listenansicht und die Bindung einen Adapter verwenden, dann in GetView wenn u-Layout und die Ansichtskomponente aufzublasen, stellen die ausgewählte Flag treu zu Ihrem TextView.)

tv = (TextView) this.findViewById(R.id.tv); 
    tv.setSelected(true); 
+0

Leider Mann brauchen dies nur für Zelt.Ich brauche den in der Listenansicht ausgewählten Text zum Scrollen. –

+0

Die Antworten von anderen Entwicklern scheinen für viele interessante Lösungen in Ordnung zu sein. Aber die Anforderung ist immer noch nicht klar genug. Möchten Sie etwas Licht darauf werfen? Gib uns ein Beispiel. Fügen Sie ein Bild mit einigen Hinweisen oder Code-Schnipsel hinzu, um es zu verdeutlichen. Danke –

+0

Ok, also sag mir, wie deine Listenansicht aussieht? Ist es eine normale Listenansicht mit nur Text oder ist es eine Listenansicht mit einer benutzerdefinierten Zeile? Wenn es sich um eine einfache Listenansicht mit ArrayAdapter handelt, haben Sie möglicherweise eine Textansicht aus dem Layout verwendet und eine ID davon übergeben. Wenn diese korrekt ist, können Sie die obige Lösung verwenden. Wie auch immer, viel Glück. –