2

重複の可能性:
ビットマップをninepatchに変換して背景として使用

9 パッチで特定の色を別の色に変更しようとしています。これまでのところ、私が考えることができる唯一の方法は、リソースのninepatchからビットマップを作成し、ビットマップをコピーして変更可能にし、rgb-8888構成を与え、色を変更する方法を実行することです.次に、ビットマップから新しい 9 パッチを作成します。しかし、「色の変更後」にビットマップ コピーから新しい 9 パッチの byte[] チャンク データを取得しようとすると、アクティビティが開始されて黒く点滅し、親アクティビティに戻ります。そして、「色が変わる前」に元のビットマップからbyte []チャンクデータを取得すると機能しますが、どこに伸びても元の色になります。これまでの私のコードは次のとおりです。

  Bitmap backMap = BitmapFactory.decodeResource(getResources(),R.drawable.outerbackground);
  byte[] chunk = backMap.getNinePatchChunk();

  backMap = backMap.copy( Bitmap.Config.ARGB_8888, true);


  backMap = getChangedColor(backMap, Color.rgb(212, 212, 212), Color.rgb(255, 50, 0));


  NinePatchDrawable np_drawable = new NinePatchDrawable(getResources(), backMap, chunk, new Rect(), null);
  np_drawable.setBounds(0, 0, backMap.getWidth(), backMap.getHeight());

古い色で伸びる理由は、「色が変わる前」に元のビットマップから取得しているバイト[]チャンクデータだと思います。「色の変更後」のビットマップコピーからチャンクデータを取得するか、色の変更を表すためにバイト[]チャンクのデータを変更する方法を理解する必要があると思います。誰かがこれを機能させる方法、またはそれを行うためのより良い方法についての手がかりを持っているなら、私はとても感謝しています. 私はこれに1週間立ち往生しています。

4

0 に答える 0